Code
import sonore as so
C4 = so.note_to_freq("C4")Each stop of a pipe organ is a rank of pipes, one for every key, and drawing stops adds ranks. A registration is therefore a kind of additive synthesis: ranks at the octave and at other harmonics of the written note add partials to one tone, and change its timbre rather than adding notes. This page is a template. Its sounds wait for measured spectra of real stops, so for now it lays out what each section will show, and prints the arithmetic of footages and tuning, which needs no pipe sounds.
import sonore as so
C4 = so.note_to_freq("C4")Press play and a line follows the sound across every time axis in its plots. Click any time axis to play from that point. Start with your volume low.
A stop's footage names its pitch by the length of its lowest open pipe. The 8′ stop sounds the written note, 4′ an octave higher and 16′ an octave lower, and a rank at 8/n feet sounds harmonic n of the 8′ stop: 2⅔′ the twelfth (harmonic 3), 1⅗′ the tierce (harmonic 5). The lengths are nominal: an ideal open pipe of 8 feet sounds about 70 Hz, while low C, which the name stands for, is 65.4 Hz. The cell prints the footages and the harmonic each reinforces.
for footage, name in [
(16, "16′"),
(8, "8′"),
(4, "4′"),
(8 / 3, "2⅔′"),
(2, "2′"),
(8 / 5, "1⅗′"),
(4 / 3, "1⅓′"),
(1, "1′"),
]:
harmonic = 8 / footage
print(f"{name:>4s}: harmonic {harmonic:g} of the 8′ stop, {harmonic * C4:7.1f} Hz on middle C")16′: harmonic 0.5 of the 8′ stop, 130.8 Hz on middle C 8′: harmonic 1 of the 8′ stop, 261.6 Hz on middle C 4′: harmonic 2 of the 8′ stop, 523.3 Hz on middle C 2⅔′: harmonic 3 of the 8′ stop, 784.9 Hz on middle C 2′: harmonic 4 of the 8′ stop, 1046.5 Hz on middle C 1⅗′: harmonic 5 of the 8′ stop, 1308.1 Hz on middle C 1⅓′: harmonic 6 of the 8′ stop, 1569.8 Hz on middle C 1′: harmonic 8 of the 8′ stop, 2093.0 Hz on middle C
To come: a principal 8′, a flute 8′, a stopped flute 8′ and a reed 8′ on the same note, each with the spectrum of a measured stop. The principal will follow the harmonic levels Harrison & Thompson-Allen (1998) measured on the Great Diapason of the Newberry organ at Yale; the other families still need sources or recordings.
To come: an 8′ principal, then 4′, 2⅔′, 2′ and 1⅗′ added one at a time, with the pitch track beside the spectrum, so that the spectrum fills in while the pitch stays on the same note. Then two gap registrations, 8′ + 2′ and 8′ + 1⅓′, where, in the experience of organists, the separate ranks can stand out as pitches of their own; the page will play them and say so, rather than claim a perceptual result.
Mutation stops, and the fifths and thirds of mixtures, are tuned pure to the harmonic they reinforce, not to the tempered notes of the keyboard. Tuned in equal temperament instead, as on a tonewheel organ, a mutation would beat with the 8′ stop's own harmonic. The cell prints how far, and how fast, on middle C; the sounds will play a pure and a tempered tierce.
for name, harmonic, semitones in [
("twelfth 2⅔′", 3, 19),
("tierce 1⅗′", 5, 28),
("larigot 1⅓′", 6, 31),
]:
tempered = C4 * 2 ** (semitones / 12)
pure = harmonic * C4
print(
f"{name:12s}: tempered {so.ratio_to_cents(tempered / pure):+6.2f} cents from harmonic {harmonic}, "
f"beating at {abs(tempered - pure):5.2f} Hz"
)twelfth 2⅔′ : tempered -1.96 cents from harmonic 3, beating at 0.89 Hz tierce 1⅗′ : tempered +13.69 cents from harmonic 5, beating at 10.38 Hz larigot 1⅓′ : tempered -1.96 cents from harmonic 6, beating at 1.77 Hz
To come: a celeste, a second rank tuned a few cents sharp of the first, so that the two beat slowly (on middle C, 3 cents sharp beats at about 0.45 Hz and 10 cents at 1.52 Hz; the beats of two close tones are on the Classic stimuli page), and a tremulant, which shakes the wind and with it the level and pitch of every pipe.
To come: how a flue pipe starts to speak, with a brief noisy transient (the chiff) and its harmonics building up at different rates. For instrument identification the build-up of the partials seems to matter more than the transient itself (Siedenburg, 2019; see the Timbre page), so the synthesis will model both.