Man Linux: Main Page and Category List

NAME

       sweepgen - an Ncurses based sweep generator program

SYNOPSIS

       sweepgen [options]

DESCRIPTION

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

       sweepgen in MONO mode outputs the generated swept waveform.  In  STEREO
       mode  the  swept  waveform  is  output on one channel, and the sweeping
       waveform is output on the second channel.

       The sweeping frequency is by default specified as an integer number  of
       Hertz.  Fractional  Hertz  frequencies,  specifiable to 0.1Hz or 0.01Hz
       resolution, are supported by use of the -res command  line  option,  or
       the   resolution   parameter  in  the  configuration  file(s).  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-calculated whenever the  playing  parameters,
       8/16bit, mono/stereo, samplerate are changed.

       The  swept  waveform  frequencies  are  specified either as a lower and
       upper frequency, or as a centre frequency with a frequency variation.

       1000 500
              would signify a range of 1000-500 Hz to 1000+500 Hz, i.e. 500 to
              1500 Hz

       Of  course,  only  frequencies less than half the samplerate (number of
       samples/sec) can be generated. Although this is not checked.

       The waveforms that can be used as either the sweeping or swept  signals
       are:

       sine   A standard sine wave

       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-
              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)
              is 10% (mark/space ratio of 1:9).

       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.

       At 1Hz resolution, sweepgen generates one seconds worth of 1 Hz samples
       at  the specified samplerate, for each waveform, and generates sweeping
       frequency F by circularly sampling every Fth sample. These samples  are
       scaled  to  fit  the  swept  frequency range and are used to sample the
       swept waveform to generate the swept signal.  Each buffer  fragment  is
       generated  for  the parameter(s) set at that moment. By default, buffer
       fragment sizes are set so that aprox. 10 fragments/sec  are  generated.
       Changing  a generation parameter, e.g. waveform, frequency, 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.

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

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.

       sweepgen  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, mono or stereo.

       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

       -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 mode

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

EXAMPLES

FILES

SEE ALSO

       swgen, signalgen, siggen, tones

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

AUTHOR

       Jim Jackson

       Email: jj@franjam.org.uk