Alexander J. Ellis The harmonical is the part of my codebase that generates audio on the basis of Longuet-Higgins' tonal space theory.

Its name is that given by Alexander J. Ellis, in his translation of Helmholtz's On the Sensations of Tone, to his specially tuned harmonium that allowed him to experiment with just tuning systems.

My harmonical produces music with notes tuned to points in the tonal space. It fits on the end of the pipeline of the parser. The parser produces an analysis of some music in the tonal space. This analysis, in the form of a path through the space, can be used to tune each note to the pitch that it should be in just intonation according to the theory. The result will preserve the integrity of the perfect fifths and major thirds in chords and in intervals between successive chord roots.


The harmonical currently provides two forms of output:

  1. Raw audio (either to a wave file or played directly). This is generated directly from combinations of sine waves. The output provides some interesting insights into the theory, since the resonance of closely-related intervals can be heard clearly, but is unnatural and doesn't show how this theory interacts with the natural harmonics of an instrument.

  2. Midi data. The midi standard supports retuning of instruments while they're being played. The harmonical can produce a midi file that plays the notes, retuning each one to the pitch we need it to be. You can generate audio from this using a midi synthesizer which supports retuning, like Timidity.


The harmonical is used by the parser to produce a realization of an input chord sequence, tuned according to its analysis.

The harmonical can also be used directly to generate sound (through the audio generator). A framework is defined for different types of direct input file. Currently, the only type of input implemented is chord input, in which the tones of chords are specified sequentially.

The harmonical can generate both forms of output from the parser and from directly specified input.


You can hear some examples of what can be done with the harmonical using chord input on TuningExamples.