Add a signal to a delayed copy of itself and the spectrum grows teeth — a comb of evenly spaced notches or peaks, one for every fs/D hertz. Down the center, data flows: a signal goes in, the delay line combs it, the response comes out. The blue team builds and defends the transfer function; the red team pushes the feedback gain until it rings forever.
source M. R. Schroeder, "Natural Sounding Artificial Reverberation," J. Audio Eng. Soc. 10(3):219–223, 1962 (Bell Labs) — AES e-library, paywalled; semanticscholar record. AMBER — no stable open link. Rendered, not quoted.
One delay line, two ways to wire it. Feedforward: y[n] = x[n] + g·x[n−D], so H(z)=1+g·z−D — an all-zero (FIR) filter. Feedback: y[n] = x[n] + g·y[n−D], so H(z)=1/(1−g·z−D) — an all-pole filter.
Squared magnitude is exact: feedforward |H|²=1+2g·cos(ωD)+g², feedback |H|²=1/(1−2g·cos(ωD)+g²). For the current panel form:
| quantity | value |
|---|
The comb is the atom of delay effects. A short delay (D≈a few ms) sweeping in time is a flanger; a slightly detuned bank is a chorus; a long delay is an echo.
Wire several feedback combs in parallel and follow them with allpasses and you have Schroeder's the-reverb. A comb is just a sparse the-biquad-filter whose one pole/zero pair is spread across D samples. Each sphere is the next one's premise.
The blue team's live check: re-derive the notch spacing (fs/D), confirm the feedforward comb is FIR-stable, and test the feedback pole radius against the unit circle. If red pushes the gain out, this badge is where it shows.
Feed a signal x[n] and hold it in a delay line of length D samples. The only knobs are the delay D (how far back the echo sits) and the mix/feedback gain g (how loud the copy returns). At sample rate fs=48000 Hz, a delay of D samples corresponds to a physical time of D/fs seconds.
| D (samples) | = time | character |
|---|---|---|
| 1–20 | <0.4 ms | flange (tight comb) |
| 50–1000 | 1–20 ms | colour / chorus |
| >2000 | >40 ms | discrete echo |
Short delay ⇒ few, wide teeth (flange). Long delay ⇒ many, dense teeth (echo). That is what you feed the panel below.
Feedforward: a copy is added. Zeros land on the comb — the spectrum gets notches. Always stable (FIR).
Move any control — |H|, the teeth spacing and the stability verdict are computed from the transfer function on the spot, never looked up.
What the machine produces, proven: a comb of evenly spaced teeth at fs/D Hz — feedforward gives notches (depth |1−g|, a true zero when g=1), feedback gives peaks (height 1/(1−g)). The feedforward comb is always stable; the feedback comb is stable iff |g|<1, and blows up otherwise.
The blue team's witness (left) re-derives these live; the red team (right) drives the gain past 1 to break them.
A feedback comb also has infinite gain at DC as g→1 (the pole reaches z=1), and any DC offset in x integrates and drifts. "Comb filter" is the atom, not the instrument.
"A comb filter is stable for any gain." Cut. Only the feedforward (FIR) form is. The feedback comb has poles at |g|1/D; at |g|≥1 they leave the unit circle and the output grows without bound.
"Notches and peaks are the same comb." Cut. Feedforward zeros ⇒ notches at (2k+1)·fs/2D; feedback poles ⇒ peaks at k·fs/D. Same spacing, opposite teeth.
"One comb makes reverb." Kept, corrected. One comb makes flutter/coloration. Reverb is a bank of them plus allpass diffusers — the machine shows the atom.
The red team's move: switch to feedback and shove the gain to g = 1.05 (|g|≥1). Now the echo returns louder every pass — the comb rings forever and the output diverges. The blue team's witness (window 7) is watching.
Push |g| to or past 1 and the feedback pole escapes the unit circle: the impulse response gk grows without limit. The witness recomputes the pole radius, finds it >1, and turns red. Nothing is faked; the instability is real and it is caught.