siggen(1)                     Linux System Manual                    siggen(1)



NAME
       siggen - an Ncurses based signal generator program

SYNOPSIS
       siggen [options] [waveform [freq]]

DESCRIPTION
       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
       hardware.

       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  mean
       ingful.  Higher  frequencies can be specified, but don't expect to hear
       them!

       On screen values for individual fields can be locked to  prevent  acci
       dental changes. The unlock facility unlocks all locked fields.

       Corresponding values for the 2 channels can be set to track, the values
       are made equal and a change to one causes a change to the other.   e.g.
       making the frequency values track will make both channels the same fre
       quency, and altering one freq. value alters both simultaneously.

       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

       triangle
              a linear rise from 0 to peak, thru' 0 to negative peak, and back
              to 0

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

       noise  This is weak. All it consists of is one  second  of  pseudo-ran
              domly  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
              1:9).

       A lot of thought has gone into the algorithms for generating the  wave
       forms.   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 exter
       nal 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 ordinarily 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.

       The -res option can be used to make siggen generate signals with  0.1Hz
       resolution, or 0.01Hz resolution. However be warned at 0.1Hz resolution
       the basic waveform sample buffers generated are each 10 times  (and  at
       0.01Hz  resolution  100  times)  as big as the samplerate. It typically
       requires 5.5Mbytes of memory to run at 0.1Hz  resolution,  16bit  32000
       samples/sec.  and  55Mbytes  of  memory  to  run  at 0.01Hz resolution.
       Because of the large buffer sizes,  the  initial  waveform  calculation
       time can also be lengthy.  Remember also that the waveforms are re-cal
       culated whenever the playing parameters, 8/16bit, mono/stereo, sampler
       ate are changed.


       If  your  sounds  periodically 'breaks' up with clicks or breaks, it is
       usually a sign that siggen is not being scheduled  sufficiently  often.
       Either  increase  the  priority  (see nice et al.), kill off other pro
       cesses, 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.

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

CONFIGURATION FILES
       Three  possible  configuration  files  can be used: a LOCAL config file
       (usually in current directory), a HOME  config  file  in  user's  $HOME
       directory and a GLOBAL config file.

       All  the  siggen  suite  of programs are compiled with the names of the
       config files built in. By default the configuration files are:

       ./.siggen.conf
              is the LOCAL config file.

       $HOME/.siggen.conf
              is the HOME config file.

       /etc/siggen.conf
              is the GLOBAL config file.

       siggen -h
              will indicate which config files will be searched for.

       The config files do not have to exist. If they exist and  are  readable
       by the program they are used, otherwise they are simply ignored.

       The  config  files  are always searched for configuration values in the
       order LOCAL, HOME, GLOBAL. This allows a scheme where the sysadmin sets
       up  default  config values in the GLOBAL config file, but allows a user
       to set some or all different values in their own HOME config file,  and
       to set yet more specific values when run from a particular directory.

       If  no  configuration files exist, the program provides builtin default
       values, and most of these values can be set by appropriate command line
       switches and flags.

       See siggen.conf(5) for details of the configuration files.

       siggen looks for configuration values BUFFERSPERSEC, CHANNELS, DACFILE,
       FRAGMENTS, RESOLUTION, SAMPLERATE, SAMPLESIZE, VERBOSE, VI_KEYS.

       BUFFERSPERSEC
              The aprox. number of sound buffer fragments to play every second
              (Sound buffersize is always a power of 2).

       CHANNELS
              sets the number of channels, see '-c' option.

       DACFILE
              allows  the  name  of  the DAC/DSP/PCM device to be changed from
              /dev/dsp

       FRAGMENTS
              The number of Audio Buffers to configure in the driver.

       RESOLUTION
              The minimum change possible to the  frequency  setting.  Only  3
              values allowed: 1Hz , 0.1Hz or 0.01Hz

       SAMPLERATE
              sets the number of samples/sec for the DAC device

       SAMPLESIZE
              sets whether 8 or 16 bit samples to be generated

       VERBOSE
              sets whether or not to run in verbose mode.

       VI_KEYS
              if set then the VI cursor moving keys "HJKL" are enabled

OPTIONS
       -h     display usage and help info

       -BPS n configure to play aprox. n audio buffers per second.

       -C configfile
              Use configfile as the LOCAL configuration file.

       -NB n  set number of audio buffers to n

       -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

       -res n set  resolution  of frequency generation. Valid values are: 1Hz,
              0.l1Hz or 0.01Hz

EXAMPLES


FILES


SEE ALSO
       sgen, swgen, tones, sweepgen, siggen.conf

BUGS


COPYING
       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 per
       mission notice identical to this one.

       Permission is granted to copy and distribute translations of this  man
       ual into another language, under the above conditions for modified ver
       sions, except that this permission notice may be included  in  transla
       tion instead of in the original English.

AUTHOR
       Jim Jackson

       Email: jj@franjam.org.uk



Release 2                         20 Aug 1999                        siggen(1)
