Signal and Sensation

One Detune, Ten Speeds

Two saws seven cents apart is the Reese, the bass under most of jungle. Detune them and they beat, but a saw is a stack of harmonics and the tenth one beats ten times faster than the first. One knob, and every harmonic moves at its own speed.

Open fullscreen →

What it is

Two of the saws from part one, playing the same note, one of them a few cents sharp.

That’s the Reese, and it’s the bass under a very large share of jungle and drum and bass. Detune two oscillators and they drift in and out of phase with each other, so the sound swells and hollows at the difference between their frequencies. At 55 Hz and seven cents apart that difference is 0.22 Hz, one turn every 4.5 seconds, and you can hear the bottom of the sound breathing at that rate.

The top of the sound isn’t doing that. Watch the bars: the first harmonic breathes once every 4.5 seconds, the tenth flickers once every 0.45, and every bar between them has its own speed. One detune knob, and twenty four different rates of movement out of it.

How it works

A saw is a stack of harmonics at every multiple of the pitch, each 1/n as loud. Detune the whole saw by seven cents and every harmonic moves by seven cents too, but seven cents of 55 Hz is 0.22 Hz and seven cents of 550 Hz is 2.2 Hz. So the nth harmonic of the two saws beats at n times the rate of the fundamentals. The formula is one line. The point is what it sounds like, which is a bass that moves slowly with a shimmer over it, and that’s the Reese.

Every bar on the page is measured. Each frame, a few cycles of the pair are synthesised from the same maths the oscillators run and every harmonic’s level is read out under a Hann window. The bars are those readings, and the faint marks above them are where each harmonic would sit if the two saws were in phase. The history of the first and tenth harmonic feeds a live beat rate, read off the spacing of the nulls, which the page reports next to the prediction.

Against a 24 second render, the measured beat of harmonics 1, 2, 3, 5, 8, 10 and 16 is 0.223, 0.446, 0.669, 1.114, 1.783, 2.228 and 3.565 Hz. The predictions are the same numbers to three decimals. Rendered with the real Web Audio oscillators the page plays through and measured the same way, the first and tenth harmonics come out at 0.223 and 2.228 Hz at 55 Hz and seven cents, 0.639 and 6.391 at twenty cents, and 0.446 and 4.457 an octave up.

What surprised me

The finding I expected, and the measurement fought me all the way to it.

My first instrument measured each harmonic’s level with a window a whole number of cycles of that harmonic, and read beat rates of 3 to 5 Hz on harmonics whose true rate was under 2. The neighbouring harmonics, 55 Hz either side, were leaking into the window, and the hop from one window to the next was aliasing that leakage into a slow ripple that the null finder then locked on to. So I windowed on the fundamental instead, which puts every harmonic of the first saw exactly on its own bin, and it got worse: 6 to 10 Hz on every harmonic, and 12.5 Hz when I halved the hop.

That the number moved with the hop was the tell. It can’t be the signal if it depends on how often I look. Two things were wrong at once. The detuned saw’s harmonics sit a little off the fundamental’s grid, by m times the detune, so they land just off the rectangular window’s zeros and still leak, more so at high m. And the null finder counted every local minimum below half the peak, and inside one real null there are dozens of tiny ones, so it was counting the wobble inside a null as a stack of nulls and reading a rate proportional to my sample density. A Hann window fixed the first, pairing a downward and upward crossing of a threshold into one null fixed the second, and every harmonic then read n times the fundamental to three decimals at both hops.

The thing worth carrying forward is the test for it: the same measurement at two hops has to agree. Both bugs broke that and neither would have been caught by comparing with the formula at one hop, because at one hop you can get lucky. Harmonic 1 did.

The second surprise is smaller and it’s a real problem for anyone playing a Reese bass line. Detune is in cents, and cents are a ratio, so the beat rate is proportional to the pitch. The same seven cent patch turns once every 6.0 seconds at E1, 4.5 at A1, 3.0 at E2 and 2.2 at A2. A bass line across an octave has no single speed of movement, and the wobble you tuned on the root is twice as fast by the time the line reaches the octave. Fixed detune in hertz would hold the speed still and change the interval instead, and I haven’t heard a synth that offers it.

What I would do next

Part five is the Reese itself, which is this pair through the filter from part two and into some saturation, and the measurement there is what the saturation adds: the pair has harmonics only at multiples of two nearly equal pitches, and distortion puts sum and difference tones between them that are not in either saw.

The other thing to measure is the moving null. When harmonic n cancels, that frequency drops out of the sound and the cancellation sweeps up through the harmonics in turn, which is a comb filter moving through the spectrum. Whether the ear hears the Reese’s movement as loudness breathing or as that sweep is a question with a listening test in it, and I’ve not run it.