A system for real-time analysis and processing of sound

NEW mailing list

Subscribe by sending "subscribe aglaophone" to, or post by sending email to aglaophone at You can also browse the archive
Let's get some activity going!

News - aglaophone 111901 released

The 19-Nov-2001 Version of Agalophone adds minor bugfixes, usability improvements, component upgrades, and installation enhancements.

What is Aglaophone?

Aglaophone is 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:

These can be connected in any way you please. A typical connection might be:
  soundcardio(record) -> bits -> spectr -\
    (play)\-    <-     <-     <-      <--/

What platforms does it run on?

Aglaophone is currently available only for Linux, but I strongly encourage anyone who is interested to port it to other operating systems. It shouldn't be at all difficult.

System requirements for Linux

Obtaining Aglaophone

Aglaophone is (mostly) licensed under the GNU General Public License. You can download the Aglaophone source code. (if it doesn't download when you click on the file name, try shift-clicking in netscape). I don't currently distribute binaries.

About the version numbering

Aglaophone is still in pre-release. Versions are numbered by date. The format is aglaophone<mm><dd><yy> where <mm> is the month, <dd> is the day, and <yy> is the year.

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

If you do write additional modules, I request (but do not require) that you do the following things:

  1. 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).
  2. 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.
  3. Send me a copy (preferably GPL Licensed) so I can include it with the distribution.

Screen shots

(click on the images to make them larger)

Full-screen spectrogram

This shows the real-time spectrogram module ("spectr"). The upper part of the display shows the real time spectrogram, with time on the horizontal axis and frequency on the vertical axis. Color corresponds to amplitude at the corresponding time and frequency. The bottom of the spectrogram display corresponds to zero frequency. The top corresponds to the nyquist limit (5.02 kHz in this case). The black vertical bar through the spectrogram display shows where sound is currently being recorded. The lower part of the display is a real-time oscilloscope showing the actual samples of the signal being recorded.

Imaging distortion from a step-type DAC

This demonstrates the imaging distortion one gets from using a step mode DAC. The bottom display is an x4 oversampled and step-filtered version of the audio data from the upper display. The high frequency components (upper 3/4 of the lower window's spectrogram display) are images from 5 kHz-20 kHz of the 0 - 5 kHz audio data. You can see the 'step' type interpolation in the time domain by looking at the lower oscilloscope display.

Quantization noise

This shows the effect of very large quantization steps. In the section on the right, the 11 lowest order (out of 16) bits of the digital audio stream have been masked out, adding quantization noise. The noise is visible in the right half of the spectrogram display as a broadband signal. You can see the quantization steps in the oscilloscope display.

Smith-Barnwell perfect reconstruction filter banks

In this example quantization is being added to the subbands of a Smith-Barnwell filter bank. A spectrogram shows the spectral character of the signal, as affected by the different quantization in the two subbands.

Subband wavelet decomposition/reconstruction

We use the same Smith-Barnwell filter bank above, but use a wavelet transform architecture, and eight subbands instead of two. Sample configuration files are provided for both time-domain and frequency-domain quantization. This provides a framework for understanding the audible differences between time-domain and frequency-domain quantization and the effect of subband quantization as a compression algorithm.

In the upper left is a switch that allows comparison of the original and reconstructed sounds. On the lower left is a spectrogram display. On the right are quantizers for each frequency band.

About the name

Aglaophone was one of the Sirens of Greek mythology. It means "Bright voice"

"[Sirens] were huge birds with women's heads who lived on an island off the coast of Sicily. By their sweet singing, they lured seafarers on to dangerous rocks."

"In primitive times the Sirens, who were daughters of the river Achelous, had been river deities. In number they were - depending on different authors - two, three, four or even eight. They had names which emphasized the charm of their voices: Aglaophonos or Aglaophone (of the brilliant voice); Thelxepeia (of the words which enchant); PeisinoŽ (the persuasive); Molpe (song)."

For more information, see


Aglaophone was written by Steve Holland ( It is Copyright (C) 1998-1999 Steve Holland. Aglaophone is distributed under the GNU General Public License.
IMPORTANT: Some included modules were written by different authors and may have different (i.e. non-GPL) licensing restrictions