Where the Filter Really Cuts
The cutoff dial on a synth is only telling the truth at one setting of the resonance dial. Turn the resonance to 2 and a cutoff reading 1,000 Hz cuts at 1,485. Measured off the filter, not the diagram.
What it is
The saw from part one, going through a lowpass filter, with two dials.
Cutoff says where the line is. Everything above it gets turned down, and you hear the sines come off the top as it sweeps. Resonance says how hard the filter rings at the line, which is the squelch in every acid record and the reason a filter sweep is a sound rather than a volume change.
The bars along the bottom are the harmonics of the saw, measured after the filter. The line over them is what the maths says the filter does. They sit on each other, which is the picture working. The dashed mark is where the dial says the cutoff is, and the glowing one is where the filter is actually 3 dB down.
They’re not in the same place. At resonance 2 a dial reading 1,000 Hz cuts at 1,485.
How it works
The filter is the two pole lowpass from the cookbook every synth uses, and the whole day is one property of it. At the cutoff frequency its gain is exactly Q, the resonance. So at Q of one over root two it’s 3 dB down at the cutoff, which is the definition of a cutoff, and the dial is honest. At any other Q it’s not.
“Where it cuts” here means where the output is 3 dB below the input, half the power, the same convention everyone uses. Solving the response for that point gives a quadratic in the square of the frequency ratio, and the answer depends on Q alone:
| resonance Q | really cuts at | peak at the cutoff |
|---|---|---|
| 0.5 | 0.644 × the dial | -6.0 dB |
| 0.707 | 1.000 × the dial | -3.0 dB |
| 1 | 1.272 × the dial | 0.0 dB |
| 2 | 1.485 × the dial | +6.0 dB |
| 4 | 1.537 × the dial | +12.0 dB |
| 10 | 1.551 × the dial | +20.0 dB |
Every row is measured as well as computed. A sine goes through the same biquad, settles for several ring times, and its output is read back with a Goertzel filter, and the measured cutoffs come out at 0.644, 1.000, 1.271, 1.482, 1.534 and 1.548 against the column above. The bars on the page are measured the same way, off a filtered saw rather than a single sine.
The second measurement is the ring, reused from day 74. Ping the filter, fit a line to the decay in dB, and the slope is the Q. That comes back at 2.01, 3.01, 5.01, 10.01 and 40.11 for Qs of 2, 3, 5, 10 and 40, and it’s an independent route to the same number as the dial.
What surprised me
The size of it. I knew the dial drifted with resonance, and I expected a few per cent. Across the range of the resonance dial the honest cutoff moves by a factor of 2.41, from 644 Hz to 1,551 Hz for a dial that says 1,000 throughout. At a resonance of 2, which is a normal squelch rather than an extreme one, the filter cuts nearly half an octave above where you set it.
It goes the other way as well. Below the flat setting the real cutoff is under the dial, 644 Hz at Q 0.5. So the dial is wrong in both directions and honest at exactly one number, 0.707, and that number isn’t marked on any synth I’ve used.
The thing that would have made the page lie is a units problem, and I only caught it because I refused to trust the page about itself. Web Audio’s lowpass takes its resonance in decibels. Set the Q to 2 and you get a linear Q of 1.259, a peak of +2.00 dB where a real Q of 2 is +6.02. The picture is drawn from the linear maths, so the sound and the picture would have disagreed by a factor that grows with the resonance, and nothing on screen would have said so.
The check is in the page as a hook. It renders the actual Web Audio filter offline with a sine going through it and returns the gain, and a headless run compares that against the formula at eight settings. With the conversion in place the worst disagreement is 0.061 dB. Without it, the peak is 4 dB short.
The last one is a limit of the instrument rather than the filter. The ring measurement cannot see a gentle filter. At 1 kHz and Q of 1 the whole decay is over in about two cycles, there are not enough peaks to fit a line through, and it declines rather than guessing. It starts working at Q 2 and is exact by Q 3. The cutoff measurement covers the gentle end, the ring covers the sharp end, and the overlap is where I trust both.
What I would do next
Part three is the envelope, and the reason it comes before the sounds is that a filter sweep is nothing but this page with an envelope on the cutoff dial. Every acid line, every pluck, is that.
This is a two pole filter, 12 dB an octave. The classic ladder filter in a Moog is four poles, 24 dB an octave, and its honest cutoff sits somewhere else again. Measuring that alongside this one would say how much of the Moog sound is the slope and how much is the resonance.
Turn the resonance far enough and a filter stops filtering and starts oscillating, a sine wave at the cutoff frequency with nothing going in. That’s the sine from part one coming back round from the other side, and the threshold where it happens is a measurement I haven’t made.