Man Linux: Main Page and Category List


       siggen - an Ncurses based signal generator program


       siggen [-s samplerate] [-8|-16|-b 8|-b 16] [-1|-2]


       siggen is a simple signal generator program, with an Ncurses based user
       interface, that can digitally generate standard waveforms on the  LINUX
       /dev/dsp device.  8 or 16 bit samples can be generated depending on the

       siggen allows two independant waveforms to be generated.  In stereo the
       two  signals  appear on different channels. In mono the two signals are
       digitally mixed onto the one mono channel.

       The frequency is specified as an integer number  of  Hertz.  Fractional
       Hertz  frequencies  are not supported. Of course, only frequencies less
       than  half  the  samplerate  (number  of  samples/sec)  are  accurately
       meaningful.  Higher  frequencies  can be specified, but don’t expect to
       hear them!

       The waveforms that can be generated are:

       sine   A standard sine wave

       cosine a sine wave with a 90 degree phase shift

       square a standard square wave with a 50% mark space ratio

              a ramp waveform with ’infinitely’ fast  flyback  (:-)  An  ideal
              oscilloscope timebase signal.

              shaped like equally spaced teeth on a saw (:-)

       noise  This  is  weak.  All  it  consists  of  is one second of pseudo-
              randomly generated samples, played repeatedly. I’d  love  to  do
              proper  white/pink  noise,  but I don’t know enough, and I don’t
              think the structure of the  program  is  conducive  to  accurate
              noise generation.

       pulse  A  square  waveform where the mark/space ratio (as a percentage)
              can be specified. The default value is 10% (mark/space ratio  of

       A  lot  of  thought  has  gone  into  the algorithms for generating the
       waveforms.  I believe the sin/cos wave to be  very  pure  (modulo  your
       sound  card  :-), but I don’t have access to a THD meter to measure it.
       For best  signal  accuracy  leave  the  gain  setting  at  100(%).  The
       generator  will then make the wave’s peak value fit the maximum digital
       values allowed. Use a mixer program to control the output volume, or an
       external attenuator.

       The  gain  factor option can be useful for simulating a signal that has
       been subject to clipping, by specifing a gain of  >  100%.  In  fact  a
       trapezoid signal can be made by generating a clipped sawtooth wave. The
       greater the gain, the closer the signal approaches a square  wave  (the
       rise and fall times decrease).

       siggen  generates  one  seconds  worth of 1 Hz samples at the specified
       samplerate, for each waveform, and generates frequency F by  circularly
       sampling  every  Fth  sample. Each buffer fragment is generated for the
       parameter(s) set at that moment. Buffer fragment sizes are set so  that
       aprox. 10 fragments/sec are generated. Changing a generation parameter,
       e.g. waveform, frequency, gain, will impact the  next  buffer  fragment
       generated, and hence changes appear to be almost immediate.

       If  your  sounds  periodically ’breaks’ up with clicks or breaks, it is
       usually a sign that siggen is not being scheduled  sufficiently  often.
       Either up the priority (see nice et al.), kill off other processes, get
       a faster processor, or increase the number of  audio  buffer  fragments
       that siggen uses. This last will make siggen respond more sluggishly to
       changes in generation parameters.  syslogd and crond are two  processes
       that I’ve found useful to kill off - YMMV.

              output  to  /dev/dsp,  22050  samples/sec, stereo if stereo card
              else mono, 16 bit samples if  possible,  else  8  bit,  3  audio
              buffer fragments.


       -h     display usage and help info

       -v     be verbose

       -s samples
              generate with samplerate of samples/sec

       -8|-16 or -b 8|16
              force 8 bit or 16 bit mode.

       -1|-2  mono or stereo




       signalgen, swgen, tones, sweepgen



       Copyright 1995-2008 Jim Jackson

       The  software  described  by  this manual is covered by the GNU General
       Public License, Version 2, June 1991, issued by :

              Free Software Foundation, Inc.,
              675 Mass Ave,
              Cambridge, MA 02139, USA

       Permission is granted to make and distribute verbatim  copies  of  this
       manual  provided  the  copyright  notice and this permission notice are
       preserved on all copies.

       Permission is granted to copy and distribute modified versions of  this
       manual  under  the  conditions  for verbatim copying, provided that the
       entire resulting derived work is  distributed  under  the  terms  of  a
       permission notice identical to this one.

       Permission  is  granted  to  copy  and  distribute translations of this
       manual into another language, under the above conditions  for  modified
       versions,  except  that  this  permission  notice  may  be  included in
       translation instead of in the original English.


       Jim Jackson