Source Code for a system of interconnectable modules for the recording, processing, and playback of real-time audio.
What does it do?
Anything you want, provided you write modules
Modules with the following functionality are included:
- soundcardio -- recording/playback with an off-the-shelf soundcard.
Supports oversampling and oversampling anti-alias/anti-image filtering.
- spectr -- real time spectrogram and oscilloscope display
- bits -- increase the amount of quantization (decrease the number of bits) of a signal.
- rawread -- read unformatted sample data
- rawwrite -- read unformatted sample data
- mp3gate -- gateway to an MP3 compressor/decompressor
- splitter -- generate two outputs from one input
- syncswitch -- switches between two inputs. Supports 'blind test' mode.
- upsamplefilter -- upsample and then filter a signal
- filterdownsample -- filter and then downsample a signal
- adder -- add two signals together
These can be connected in any way you please. A typical connection might be:
soundcardio(record) -> bits -> spectr -\ (play)\- <- <- <- <--/
Writing additional modules
If the modules included with the Agalophone distribution don't do what you
need, go ahead and write more! There is a utility library in the lib/
directory which is full of convenient routines. You can also use pre-existing
modules as examples. For a signal processing module, "bits" is probably the
If you do write additional modules, I request (but do not require) that you
do the following things:
- Use portable API's when possible. Especially, use Java over a pipe to
build GUI's (see Bits for an example), and use OpenGL with Glut for
graphics (see spectr for an example).
- Avoid C++ unless you get a real benefit from its capabilities. It
usually adds unneeded complexity and makes porting difficult because
of differences between compilers. To make matters worse, the
C++ standards committee has Pentagon syndrome.
- Send me a copy (preferably GPL Licensed) so I can include it with