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.

In any case, thanks for your interest in the project!

SourceForge.net Logo