All the software on this page is free and distributed under the terms of the GNU General Public License. It is written in ANSI C and should compile with any C compiler. There are programs for generating various periodic waveforms and frequency modulated waveforms, programs for adding noise to a waveform and for generating pink noise.

Digital signal processing software can be found here.

The following are all command line programs. They take command line parameters and write their output to stdout. Some of them also take input from stdin. The programs are all self documenting. For help on using a program, run it with no parameters.

- parabolic.c - Generates a parabolic waveform (similar to sine but more computationally efficient). Example:
produces:**parabolic 1000 10 1 330** - sawtooth.c - Generates a sawtooth waveform. Example:
produces:**sawtooth 1000 10 1 330** - sine.c - Generates a sinusoidal waveform. Example:
produces:**sine 1000 10 1 0 330** - sines.c - Generates a sum of sine waves defined in file. Example:
with**sines sines.in 1000 300**consisting of the the four lines (see code for input file format):**sines.in**

3 0.25 10 0 0.5 10 0 0.5 20 0

which produces: - square.c - Generates a square waveform. Example:
produces:**square 1000 10 1 330** - triangle.c - Generates a triangular waveform. Example:
produces:**triangle 1000 10 1 330**

- impulsetrain.c - Generates a*d[i] where d[i1]=1, d[i2]=1,... and d[i]=0 otherwise
- step.c - Generates the sequence a*u[n] where u[n]=1 for all n
- fm.c - Produces a frequency modulated sine wave
- fmline.c - Produces a linear frequency modulated sine wave

- noise.c - Reads numbers from stdin and adds Gaussian noise. Example:
produces:**square 1000 10 1 330 | noise 0.0 0.05 13** - pinkgen.c - Pink noise generator. Example:
produces:**pinkgen 10 1000 0.1 13** - bernrv.c - Generates n random numbers with values -1 or +1. Example:
produces:**bernrv 20 13**`1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1` - brownrv.c - Generates n samples of an integrated Gaussian random process (Brownian motion). Example:
produces:**brownrv 1000 0.0 0.1 13** - cauchyrv.c - Generates n random numbers from the Cauchy distribution. Example:
produces:**cauchyrv 1000 0.0 1.0 13** - laplacerv.c - Generates n random numbers from a Laplace distribution. Example:
produces:**laplacerv 1000 0.0 0.1 13** - gaussrv.c - Generates n Gaussian random numbers with mean=m, stdev=a. Example:
produces:**gaussrv 1000 0.0 0.1 13** - stdgaussrv.c - Generates n Gaussian random numbers with mean=0, stdev=1. Example:
produces:**stdgaussrv 1000 13** - uniformrv.c - Generates n random numbers uniformly distributed from a to b. Example:
produces:**uniformrv 1000 -1.0 1.0 13** - exponentialrv.c - Generates n random numbers from the exponential distribution. Example:
produces:**exponentialrv 1000 1.0 13** - telegraph.c - Reads random numbers from stdin and outputs a telegraph process. Example:
produces:**exponentialrv 10 100 13 | telegraph 44100 1.0**