A Basic Synth

basy is a tool allowing additive synthesis of audio waveforms. The initial
version of basy will provide a command line interface and a simple
programming language for describing waveforms. Playback of audio is provided
by the portaudio library. The waveforms can also be written to m-files for
visualization in Matlab or octave, or to wav files in raw PCM format.

The following is a specification of a voice, as well as its visual
representation (from octave):

MUL { SIN 2/D;
MUL { TRI;
AVG { SIN 1/2/D,1;
TRI 1/2/D,1; } } }

However, the innermost envelope is factored out into the file
GOODENV.bsv:

MUL { AVG { SIN 1/2/D,1;
TRI 1/2/D,1; } }

So the voice can be synthesized with just following:

MUL { SIN 2/D;
GOODENV { TRI; } }

I plan to have the "feature complete" synthesis core ready by January
2005. The intent of this release will be to provide a means of writing
descriptions of basic voices, envelopes, etc. to be used with the sequencing
core that will be released in the next major edition. (Note that is possible
to perform sequencing with the synthesis language, but it is not very
intuitive.)

If you are interested in contributing to the project, please
let me know. There are still
a lot of things that need polishing before the release, and even more things
that would be nice to have (e.g. a standard module library) by then.