Reverb Deep Dive

Wave Equation · Springs & Plates · Schroeder · FDN · Convolution · Differentiable
the physics, the topologies, the iron and the papers // 1900 Sabine to 2025 gradient descent // every structure traced to its transfer function

Space As A Filter

A room is a linear time-invariant filter with a several-hundred-thousand-tap impulse response. Everything on this page is an attempt to build that filter out of something cheaper than a room: a coiled spring, a sheet of steel, four kilowords of RAM, an orthogonal matrix, a measured recording, or a set of gradients. The engineering history of reverberation is the history of those substitutions, and each one leaves a signature you can still identify by ear.

Three families exist, and they have never stopped competing:

                     the three ways to make a space

  MECHANICAL               ALGORITHMIC                CONVOLUTIONAL
  ─────────────            ──────────────             ──────────────
  build a physical         build a recursive          measure a real
  resonator with high      network of delays          impulse response
  modal density            that grows echoes          and convolve with it
                                                    
  chamber (1947)           comb + allpass (1961)      Sony DRE-S777 (1999)
  spring  (1939)           FDN (1971 / 1982)          Altiverb (2001)
  plate   (1957)           allpass loop (1992)        partitioned FFT
  tape    (1950s)          scattering net (2015)      hybrid ER + FDN tail
                                                    
  cost: space, weight      cost: coloration           cost: no parameters
  win:  free physics       win:  tweakable            win:  it is the room

  and the fourth, which is really the first: SIMULATION ─ solve the wave
  equation or trace the rays, then render. Games and architecture live here.
How to read this Each tab stands alone. The physics you need to know why things sound the way they do is in Wave Physics and IR Anatomy. If you are writing DSP, go straight to Schroeder, then FDN, then Allpass Loops, then Build It for working code. If you want the gear lineage and who actually did what, The Iron Age. The papers, with links, are in Further, along with a list of errors that circulate widely in the popular account.

The one number that organises everything

Reverberation time, T60, is the time for the sound pressure level to fall 60 dB after the source stops. It is the axis on which every device on this page is specified, tuned, and marketed. W. C. Sabine established it empirically at Harvard between 1895 and 1900 while trying to fix the Fogg lecture hall, using organ pipes, a stopwatch and his own ears, and the formula he arrived at is still the first thing anyone computes.

Sabine, 1900 · metric \[ T_{60} = \frac{0.161 \cdot V}{\sum_i \alpha_i S_i} \] V room volume in m³ · Sᵢ area of surface i in m² · αᵢ absorption coefficient of surface i, 0 to 1 (frequency dependent) · 0.161 = 24 ln(10)/c with c = 343 m/s. In feet the constant is 0.049.

Sabine's formula assumes a perfectly diffuse field and low absorption. When absorption is high it overestimates, and the Norris-Eyring correction replaces the linear absorption sum with a logarithmic one. For a live room the difference is a few percent; for a treated control room it is large.

Norris-Eyring \[ T_{60} = \frac{0.161 \cdot V}{-S \ln(1 - \bar\alpha)}, \qquad \bar\alpha = \frac{\sum_i \alpha_i S_i}{S} \] ᾱ is the area-weighted mean absorption. As ᾱ → 0, −ln(1−ᾱ) → ᾱ and Eyring collapses back into Sabine.

Worked example, verified numerically: a tracking room 9 × 7 × 4 m has V = 252 m³ and S = 254 m². At a mean absorption of 0.18, Sabine gives T60 = 0.89 s and Eyring gives 0.80 s, a 9 percent disagreement. That gap is why measurement, not calculation, settles arguments about rooms.

The Wave Equation And Its Consequences

Everything downstream is an approximation to one second-order PDE. Sound in a lossless fluid at rest obeys it, and reverberation is what its solutions look like inside a closed boundary.

acoustic wave equation \[ \nabla^2 p - \frac{1}{c^2} \frac{\partial^2 p}{\partial t^2} = 0, \qquad \nabla^2 = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2} + \frac{\partial^2}{\partial z^2} \] p(x,y,z,t) is the acoustic pressure; c the speed of sound, 343 m/s in air at 20 °C, rising about 0.6 m/s per °C.

Impose rigid walls (normal particle velocity zero, so ∂p/∂n = 0 at every surface) on a rectangular box and the solutions quantise. You get standing waves at discrete frequencies: the room modes.

rectangular room modes · Rayleigh \[ f_{n_x,n_y,n_z} = \frac{c}{2} \sqrt{ \left(\frac{n_x}{L_x}\right)^{\!2} + \left(\frac{n_y}{L_y}\right)^{\!2} + \left(\frac{n_z}{L_z}\right)^{\!2} } \] nx, ny, nz ∈ {0, 1, 2, ...}, not all zero. One index nonzero → axial mode (strongest, between one wall pair); two indices → tangential (about 3 dB weaker); three indices → oblique (weakest).

For the 9 × 7 × 4 m room, the lowest axial modes sit at 19.1, 24.5 and 42.9 Hz. Those are the frequencies that make small rooms untrustworthy at the bottom end, and no amount of algorithmic reverb fixes them because they are in the monitoring path, not the signal.

Modal density and the Schroeder frequency

Count how many modes exist below frequency f and differentiate. Modal density grows as f², which means that at some point the modes overlap so thoroughly that talking about individual resonances stops being useful.

modal density \[ \frac{dN}{df} \approx \frac{4\pi V}{c^3}\, f^2 \] For V = 252 m³: 0.78 modes/Hz at 100 Hz, 78 modes/Hz at 1 kHz. Multiply by the modal bandwidth (≈ 2.2/T60 Hz) to get the modal overlap.

The crossover is the Schroeder frequency, the point at which roughly three modes fall inside one modal bandwidth. Below it the room is a set of resonators and you should think in modes. Above it the room is a stochastic diffuser and you should think in statistics. This single boundary is why reverb algorithms and room-correction algorithms are different disciplines.

Schroeder frequency \[ f_s \approx 2000 \sqrt{\frac{T_{60}}{V}} \qquad \text{(SI units, } V \text{ in m}^3\text{)} \] Our room: T60 = 0.89 s, V = 252 m³ → f_s ≈ 119 Hz. A large concert hall (V = 15,000 m³, T60 = 2.0 s) → f_s ≈ 23 Hz, i.e. the whole audio band is statistical. A car cabin is the opposite case.
The constant is not sacred 2000 comes from a specific choice of "sufficient modal overlap". Schroeder himself revisited it in 1996 (JASA 99, 3240) and the literature also uses 4000 for a stricter three-modes-per-bandwidth criterion. Treat f_s as an order of magnitude, not a threshold you can measure to three digits.

Mean free path and echo rate

Two geometric statistics do most of the work in algorithmic design. The mean free path is the average distance a ray travels between reflections; its reciprocal in time gives the average reflection rate.

mean free path · reflection rate · echo density growth \[ \ell = \frac{4V}{S}, \qquad \text{rate} = \frac{c}{\ell}, \qquad \frac{dN_{\text{refl}}}{dt} = \frac{4\pi c^3 t^2}{V} \] Our room: ℓ = 3.97 m, mean rate 86 reflections/s. Echo density grows as t²: at 20 ms, 805 reflections/s; at 50 ms, 5,031/s; at 100 ms, 20,123/s. This t² growth is the single most important thing a reverb algorithm has to reproduce, and it is exactly what a bank of parallel comb filters fails to do.
Why parallel combs sound wrong A feedback comb filter emits a strictly periodic pulse train: constant echo rate forever. Four of them in parallel gives four constant rates. Real rooms accelerate quadratically. A feedback delay network, by contrast, produces a new set of echoes on every circulation through the matrix, so echo count grows without bound. That is the entire argument between Schroeder's 1962 topology and Gerzon's 1971 one, and it is audible within 200 ms.

The frequency-domain view

The transfer function of a room is a dense forest of poles. Each mode contributes a complex-conjugate pole pair with half-power bandwidth set by its damping. Because the poles are packed far tighter than their bandwidths above f_s, the magnitude response looks like filtered noise: a Rayleigh-distributed magnitude with roughly 5.6 dB standard deviation, and a mean spacing between response maxima of about 4/T60 Hz. Any algorithm whose magnitude response has visible periodic structure will read as "metallic", and that is a measurable defect, not a matter of taste.

QuantityExpressionReads as
T600.161V / Σ αSsize and liveness
EDT6 × slope of first 10 dBperceived decay, correlates better than T60
ITDGt of first reflection minus t of directdistance to nearest surface, room size
C8010 log(E₀₋₈₀ / E₈₀₋∞) dBclarity, music
D50E₀₋₅₀ / E₀₋∞definition, speech intelligibility
DRRdirect energy / reverberant energysource distance
IACCinteraural cross-correlationapparent source width, spaciousness
BRT60(125+250) / T60(500+1k)bass ratio, warmth

Anatomy Of An Impulse Response

Every reverb, mechanical or digital, is judged against the shape of a measured room impulse response. Learn to read this picture and most design decisions become obvious.

0 dB -30 dB -60 dB time → linear in dB = exponential decay slope sets T60 DIRECT EARLY REFLECTIONS · sparse, specular, direction-bearing LATE FIELD · dense, diffuse, statistically noise ITDG mixing time t_mix ≈ √V ms
room impulse response, log magnitude · the shape every algorithm is trying to hit

The three regions, and what each one is for

  1. Direct sound, t = 0The unreflected wavefront. Carries source identity, timbre and localisation. Not part of reverb, but its level relative to everything after it (the direct-to-reverberant ratio) is the primary distance cue. Turning up a reverb send is, perceptually, walking away from the source.
  2. Early reflections, roughly 1 to 80 msDiscrete, sparse, specular. Geometric acoustics is valid here, so each reflection has a computable path, arrival time, direction and spectral tilt from the surfaces it bounced off. These reflections do not sound like reverb; they sound like place. They set apparent room size, source distance, and, through interaural differences, apparent source width. The initial time delay gap (ITDG) between direct and first reflection is the strongest single size cue: 5 ms says small room, 40 ms says cathedral. In a mixer this is the pre-delay control, and it is the most underused parameter on any reverb.
  3. Late field, roughly 80 ms onwardEcho density has passed a few thousand per second, individual reflections are unresolvable, and the signal is statistically indistinguishable from Gaussian noise multiplied by a decaying exponential envelope. Frequency-dependent: air absorption and surface absorption both rise with frequency, so the high band decays faster and the tail darkens as it fades. This region is where all the DSP cleverness goes, because it is 99 percent of the samples and 100 percent of the CPU.

Mixing time

The boundary between region 2 and region 3 is the mixing time: the point at which the field becomes diffuse. A useful engineering rule for a roughly cubic room is t_mix ≈ √V milliseconds with V in m³, giving about 16 ms for our tracking room and 120 ms for a large hall. Below t_mix, model geometry. Above it, model statistics. Every serious modern reverb, from TC Electronic's VSS algorithms to a game engine's acoustic renderer, splits its architecture at exactly this line.

Echo density is measurable Abel and Huang's normalised echo density profile counts what fraction of samples in a sliding window exceed the window's standard deviation. For Gaussian noise that fraction is erfc(1/√2) ≈ 0.3173. The measure rises from near zero in the early region to 1.0 at the mixing time, which gives you a defensible number for "when does this reverb become diffuse". It is the right tool for auditing your own algorithm against a measured IR.

Reading decay: Schroeder backward integration

You cannot read T60 off a raw impulse response, because the tail is noise and the instantaneous amplitude fluctuates wildly. Schroeder's 1965 trick is to integrate the squared IR backwards in time, which converts a single noisy measurement into the ensemble-average decay curve you would otherwise need many measurements to estimate.

energy decay curve · Schroeder 1965 \[ E[n] = \sum_{k=n}^{N-1} h^2[k], \qquad \text{EDC}_{\text{dB}}[n] = 10 \log_{10} \frac{E[n]}{E[0]} \] Fit a straight line to the EDC and the slope gives the decay rate. T30 fits from −5 to −35 dB and doubles the result; T20 fits −5 to −25 dB and triples it. Both exist because real measurements hit the noise floor long before −60 dB. EDT (early decay time) fits 0 to −10 dB and sextuples, and correlates with perceived decay better than T60 does.

The same paper family gives you the two standard measurement excitations. Maximum length sequences (MLS) are deterministic pseudorandom binary sequences whose circular autocorrelation is a delta; you cross-correlate the response with the sequence and get the IR with a large SNR gain. The modern default is Farina's 2000 exponential sine sweep: sweep logarithmically from 20 Hz to 20 kHz, deconvolve with a time-reversed amplitude-corrected copy of the sweep, and the harmonic distortion products land at negative time where you can simply crop them away. That property is why sweeps beat MLS on real loudspeakers, which are never quite linear.

Rooms As Machines

The first artificial reverb was a real room used deliberately. Dedicated reverberation chambers, loudspeaker at one end and microphone at the other, were radio-network practice by the 1920s (the oft-repeated claim that RCA patented the chamber in 1926 has no locatable patent behind it), but the technique became a production tool in 1947 in a bathroom in Chicago.

The echo chamber, 1947

Bill Putnam Sr, working at Universal Recording in the Chicago Civic Opera Building, put a loudspeaker and a microphone in the tiled women's washroom and mixed the return into The Harmonicats' recording of Peg o' My Heart. Contemporary accounts have engineer Bernie Clapper on the build and somebody posted at the door to stop anyone flushing mid-take. The record went to number one and sold over a million copies, and the send-return architecture of every mixing console since descends from it: dry signal on the fader, wet signal on a separate return, ratio under the engineer's control.

Purpose-built chambers followed immediately, and their design rules are worth stating because they are the acoustic constraints the digital algorithms later had to satisfy:

The famous installations: Capitol Studios in Hollywood, concrete trapezoidal chambers roughly 30 feet under the Tower's parking lot, designed by acoustician Michael Rettinger (building on Les Paul's earlier reverb experiments), with decay times to about five seconds, four chambers in the original 1956 build and four more added in 1969; Abbey Road, one chamber per studio, later wired into the STEED send chain that put tape delay in front of the chamber; Gold Star, whose two chambers are structural to Phil Spector's Wall of Sound; and Motown's Hitsville attic, an untreated space whose accidental character defined a label.

What you cannot do with a chamber You cannot change its decay time, and you cannot have two different reverbs at once without two chambers. That is the entire commercial motivation for everything in the rest of this document. The plate gave engineers a decay control; the digital box gave them a hundred rooms in one rack; the plugin gave them one per track.

Tape and oil-can delay: the adjacent lineage

Tape loops with multiple playback heads (Echoplex, Roland RE-201 Space Echo, Binson Echorec with its magnetic drum) are not reverb, but they occupy the same send slot and they contributed one crucial idea: feedback around a delay. Route the playback head back into the record head at gain g and you have built, in iron and oxide, the feedback comb filter that Schroeder had described mathematically. The Binson's four heads at fixed spacings on a rotating drum is literally a four-tap delay line with recirculation, and its wow, flutter and head-bump filtering are the analogue ancestors of the modulated delay lines that later became the Lexicon sound. Oil-can delays (Tel-Ray, using a rotating dielectric fluid capacitor) got there by an even stranger route.

in + R record head tape travel → m samples of delay P play head out ×g (repeats) y[n] = x[n−m] + g·y[n−m] ← the feedback comb filter, in iron and oxide g → 1 is self-oscillation. Every dub engineer knows this pole.
tape echo as the physical prototype of a comb filter

Springs · A 1D Dispersive Waveguide

The idea is to trade three dimensions for one, and buy back the missing modal density with a medium in which waves travel slowly and, crucially, at a speed that depends on frequency.

Provenance

R. L. Wegel at Bell Labs patented torsional-wave delay in a coiled spring (US 1,852,795) as telephone research. Laurens Hammond adapted it for musical reverberation, filing in 1939 (granted as US 2,230,836, 4 February 1941) with the explicit goal of "introducing a reverberation effect of selected degree in the music irrespective of the acoustic properties of the place where the instrument is being played". The market was churches whose sanctuaries had been acoustically deadened so the sermon would be intelligible, which left the organ sounding dry. Hammond's Type 4 tank and its successors were productised at scale by Hammond's spin-off and later Accutronics; the canonical engineering description is Meinema, Johnson and Laube, "A New Reverberation Device for High Fidelity Systems", JAES 9(4), 1961, which is also where the lumped-element model comes from.

The electronics

in V-to-I converter drive transducer moving coil / magnet Z_coil = R + jωL, so a voltage drive would roll off at 6 dB/oct. Current drive keeps force flat. ∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿ ∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿ ∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿ spring 1 spring 2 spring 3 · mutually prime coil counts pickup transducer high-gain preamp out pickup output is tiny, so the recovery amp sets the noise floor · hum is the classic failure mode: tanks are hum-bucked with counter-wound coils
spring reverb signal chain · parallel springs with mutually prime coil counts: Schroeder's trick, arrived at by ear

The physics of the drip

A helical spring supports several wave types that couple into each other: transverse (the coil swinging sideways), longitudinal (coils compressing along the axis) and torsional (each coil twisting about the wire axis). Reverb tanks are driven and read torsionally. The essential fact is that the medium is strongly dispersive: phase velocity depends on frequency, so an impulse does not stay an impulse. It smears into a chirp.

Model the coil as a one-dimensional lumped lattice, one torsional compliance and one inertance per turn. For a spring of M coils you get M modes, and the dispersion relation has a hard cutoff:

helical spring torsional modes · lumped lattice \[ \omega_m = \omega_c \sin\!\left( \frac{\pi}{2} \cdot \frac{m}{M} \right), \qquad m = 1, 2, \dots, M \] ω_c is the lattice cutoff frequency. Below cutoff the spring behaves as a dispersive waveguide; near cutoff the group velocity collapses to zero and energy stops propagating. Typical tanks cut off in the 3 to 5 kHz region, which is why spring reverb is dark and why a bright spring is a fake.
group velocity, the source of the chirp \[ v_g = \frac{d\omega}{dk}, \qquad v_g = v_g(\omega) \;\Longrightarrow\; \text{an impulse arrives as a chirp} \] Group velocity is greatest at low frequency and collapses to zero at the cutoff, so the low end of each round trip arrives first and each echo is a chirp rising toward ω_c, lingering as it approaches the cutoff. The IR is a sequence of such chirps at the round-trip period, not a sequence of clicks. Spectrograms of a real tank show two branches: the dispersive branch below cutoff, and above the cutoff a second branch with a higher repetition rate. Any emulation with only one branch is incomplete.
f t ω_c cutoff above cutoff: second branch, faster repetition, denser τ₀ 2τ₀ 3τ₀ 4τ₀ 5τ₀ the drip: one chirp per round trip, sweeping up toward the cutoff as the slow high frequencies straggle in, flattening under ω_c where group velocity collapses · each arrival more blurred than the last
what a spring impulse response looks like on a spectrogram
How springs are emulated well Two families work. Cascaded allpass chains as a spectral delay filter: a long series of first-order allpasses has a frequency-dependent group delay, so it turns a click into a chirp directly (Välimäki, Parker and Abel's approach, and the basis of most plugin spring reverbs). Or modal synthesis: extract the M mode frequencies, amplitudes and decay rates from the lumped model or from a measured IR and run M resonators, which is expensive but physically parameterised by spring geometry. Bilbao and Parker's finite-difference and modal work is the reference. What does not work is a plain FDN with a lowpass, because it has no dispersion and dispersion is the whole sound.

The other property engineers exploit is that a spring tank is only approximately linear. Hit it hard and the transverse mode clips against the enclosure while coils collide in the longitudinal mode, which cross-couples into torsion as a sputtery burst. This is the surf-guitar reverb crash, and it is a nonlinearity, so no LTI convolution of a spring IR will ever reproduce it. Neural and Volterra-series models exist precisely to capture that.

Plates · A 2D Bending Sheet

Go from one dimension to two and modal density stops being a problem. A thin plate's modal density is constant with frequency (mode count grows linearly, where a room's grows as f³), and the constant is enormous because the plate is large and thin, so a 2 × 1 m steel sheet has thousands of modes in the audio band and produces a dense, flutter-free tail that no spring can match.

Provenance, corrected

The plate reverberator was developed by Dr Walter Kuhl at the Institut für Rundfunktechnik (German broadcasting's research institute) in the mid-1950s. EMT, Elektromesstechnik Wilhelm Franz KG of Lahr in the Black Forest, brought it to market in 1957 as the EMT 140 and held the patents. Wilhelm Franz founded and ran EMT; he is not the plate's inventor, a conflation that appears in a lot of secondary writing. The stereo version, the 140 ST with a second pickup, arrived in 1961.

outer wooden case, rubber shock mounts to the inner frame tensioning spring tensioning spring spring spring moving-coil exciter · centre, normal to surface pickup 1 pickup 2 2 m × 1 m × 0.5 mm cold-rolled steel asymmetric offsets → decorrelated stereo damping panel on motorised arms → sets T60 by radiation load, never touches the plate the steel tube frame carries three transverse bridges: one holds the exciter magnet, two hold the contact pickups and their wiring. drive and recovery amplifiers live in the case. hand wheel for T60 as standard; the motorised remote was a factory option, painful to retrofit.
EMT 140 · roughly 8 ft × 4 ft × 1 ft, about 600 lb

Mechanics

The 140 has no early reflections The exciter is at the centre and the pickups are close by, so there is no meaningful initial time delay gap and no sparse specular region: the tail is dense from the first millisecond. That is exactly why a plate is the wrong thing for simulating a hall and the right thing for putting a vocal in a bright, immediate, sourceless wash. Every plugin plate reverb reproduces this by starting its diffusion network with almost no pre-delay, and every good engineer then adds pre-delay by hand.

The 240 gold foil, and the digital 144

EMT's follow-up, the EMT 240 of 1971, replaced the two-metre steel plate with an electrolytically produced gold foil of 270 × 290 mm, dropping the enclosure to about one fifth the volume and, critically, removing the need to re-tension after transport. It reads brighter and shimmerier than the 140 and covers about 0.5 to 5 s of decay, in true stereo. There was also an EMT 144 in 1972, an early digital attempt that did not sell and barely survives, which makes EMT one of the few companies that shipped chamber-replacement, plate, foil and digital reverberators.

The other plate-family entries: AKG's BX 20 and BX 15, which are torsional spring systems in a floor-standing cabinet rather than plates, often grouped with plates because of their size and studio role; and the various Grampian and Fisher spring units that put reverb into consumer hi-fi.

DeviceYearMediumWave typeT60 rangeCharacter
Echo chamber1947air in a hard roomlongitudinal, 3Dfixed by builddense onset, real, unchangeable
Hammond / Accutronics spring1939 onhelical steel springtorsional, 1D1.5 to 4 schirped, dark, boingy, nonlinear
EMT 14019572 × 1 m steel platebending, 2D0.5 to 6 sdense, silky, no ITDG
EMT 240197127 × 29 cm gold foilbending, 2D0.5 to 5 sbrighter, tighter, transportable
AKG BX 20c. 1970long springs, cabinettorsional, 1D2 to 4.5 splate-adjacent, warmer than a tank

Schroeder's Two Primitives

Manfred Schroeder at Bell Labs published the founding papers: "Colorless" Artificial Reverberation (with B. F. Logan, JAES, 1961) and Natural Sounding Artificial Reverberation (JAES, July 1962). Between them they establish that reverberation can be synthesised from two discrete-time building blocks, and every algorithmic reverb since is assembled from these or their descendants. Note that these were offline computations on a mainframe: seconds of audio took hours. Real-time was fifteen years away.

Primitive 1 · the feedback comb filter

A delay of m samples with its output fed back at gain g. It emits an infinite, strictly periodic pulse train.

x[n] + z⁻ᵐ y[n] ×g y[n] = x[n−m] + g·y[n−m] δ[n−m] g·δ[n−2m] g²·δ[n−3m] constant spacing m, constant rate fs/m, forever m-sample spacing → the echo rate never accelerates: this is the defect the FDN fixes
feedback comb filter · H(z) = z⁻ᵐ / (1 − g·z⁻ᵐ)
comb filter \[ H(z) = \frac{z^{-m}}{1 - g\,z^{-m}} \] m poles evenly spaced on a circle of radius \( |g|^{1/m} \). The magnitude response has peaks every fs/m Hz: the "comb". Peak-to-notch depth is \( 20\log_{10}\frac{1+g}{1-g} \) dB, so g = 0.9 gives 25.6 dB of periodic ripple. That ripple is the coloration.
setting decay: solve for g given a target T60 \[ g = 10^{-3m/(f_s T_{60})} \qquad \Longleftrightarrow \qquad T_{60} = \frac{-3\,m}{f_s \log_{10} g} \] Worked at fs = 48 kHz, T60 = 2.0 s: m = 1567 → g = 0.893370 · m = 1789 → 0.879212 · m = 2003 → 0.865777 · m = 2311 → 0.846801. All four land on the same pole radius, 0.99992805, which is the point: decay time is a property of the pole radius, not of g alone.

Primitive 2 · the allpass filter

Wrap the same delay in a feedforward path with gain -g and the magnitude response becomes exactly flat while the phase, and therefore the group delay, still disperses. Schroeder's insight in 1961 was that this lets you increase echo density without adding coloration, which is the central trick of the whole field.

x[n] ×(−g) + z⁻ᵐ + y[n] ×g y[n] = −g·x[n] + x[n−m] + g·y[n−m]
allpass filter · flat magnitude, dispersed phase
practice# Dattorro / Gardner two-multiply form, one buffer, equivalent up to a sign on g:
d = buf.read(m)
t = x[n] - g*d      # write t into the buffer
y[n] = d + g*t
allpass \[ H(z) = \frac{z^{-m} - g}{1 - g\,z^{-m}}, \qquad \left| H(e^{j\omega}) \right| = 1 \;\; \forall\, \omega \] Proof by inspection: on the unit circle \( |z^{-m} - g|^2 = 1 - 2g\cos(\omega m) + g^2 = |1 - g z^{-m}|^2 \). Numerator and denominator magnitudes are identical, hence unity magnitude; zeros sit at reciprocal positions of the poles. All the action is in \( \arg H(e^{j\omega}) \), and therefore in group delay.
Allpass is not perceptually colourless Flat magnitude is a steady-state property. Feed an allpass a click and you hear a distinct metallic ring, because the impulse response is still a decaying pulse train, just one whose spectrum happens to sum flat. Schroeder's quotation marks around "colorless" in the 1961 title were doing real work. This is the single most common misunderstanding in reverb design: allpass filters diffuse, they do not sanitise.

The 1962 topology

Four parallel comb filters with mutually prime delay lengths, summed, then two allpasses in series. The parallel combs give decay and a first pass at density; prime lengths ensure their peak patterns do not align, so the combined ripple partially averages out. The series allpasses multiply the echo count without adding further ripple.

x[n] comb(m₁ = 1687, g₁) comb(m₂ = 1601, g₂) comb(m₃ = 2053, g₃) comb(m₄ = 2251, g₄) + AP(347, 0.7) AP(113, 0.7) y[n] delay lengths mutually prime, longest : shortest kept near 1.5 · each gᵢ chosen so all four combs share one T60 · allpass delays short (5-10 ms), prime Schroeder also showed the transpose: allpasses first, then combine the comb outputs through a matrix → decorrelated multichannel outputs. That footnote seeds the entire FDN lineage.
Schroeder 1962 · the canonical reverberator

Why it is not enough

Three failures, all audible:

Freeverb, and why you have heard this algorithm "Jezar at Dreampoint" released Freeverb into the public domain around 2000: eight parallel lowpass-comb filters plus four series allpasses per channel, which is Schroeder 1962 with Moorer's damping added. It is embedded in Audacity, in Csound and SuperCollider, in countless free plugins and in a generation of game engines. If a piece of software has a generic reverb and no one is quite sure where it came from, it is probably Freeverb.

Two Lineages Diverge, 1971 to 1979

Within a decade of Schroeder, the field split into two philosophies that are still recognisable in products today. One extends the cascade: more allpasses, more filters, tuned by ear, aimed at a beautiful result. The other replaces the cascade with a matrix: a network of delays cross-coupled by a unitary transform, aimed at a correct result. The commercial reverbs you know inherit from one or the other, and often from both.

Branch A · Moorer, 1979: fix the decay spectrum

James A. Moorer's About This Reverberation Business (Computer Music Journal, 1979) is the practical engineering follow-up to Schroeder. Three contributions:

  1. The lowpass comb filterPut a one-pole lowpass inside the feedback loop. Now each circulation attenuates high frequencies more than low, so T60 becomes frequency dependent, which is what air absorption and surface absorption actually do. This single change is the difference between "digital reverb" and "digital reverb that sounds like a room".
  2. The 2-multiply allpassA more efficient allpass structure than Schroeder's direct form, which became the standard building block and is what almost every implementation uses today.
  3. An explicit early-reflection FIRA sparse tapped delay line in front of the recursive network, with tap times and gains derived from room geometry, feeding the diffuse network. This is the first appearance of the split architecture (geometric early field, statistical late field) that every serious reverb since has used.
Moorer's lowpass comb filter \[ H(z) = \frac{z^{-m}}{1 - g\left(\dfrac{1-d}{1-d\,z^{-1}}\right) z^{-m}} \] d ∈ [0,1) is the damping coefficient; d = 0 is Schroeder's plain comb. The bracketed term is a one-pole lowpass with unity DC gain, so g still sets the low-frequency decay while d sets how much faster the top decays. In practice you specify T60 at DC and at Nyquist and solve for g and d.
1 · the lowpass comb x[n] + z⁻ᵐ y[n] LPF, pole d ×g one-pole lowpass in the loop → every circulation loses more top than bottom → T60(ω) 2 · the full topology: geometric early field + damped statistical late field x[n] tapped delay line · 15-20 taps · geometric ER 6 parallel LP-comb filters allpass + out late field, damped
Moorer 1979 · the lowpass comb, and the split architecture every serious reverb still uses

Branch B · Gerzon, 1971: replace the cascade with a matrix

Michael Gerzon, writing in Studio Sound (December 1971 and January 1972), described what we now call the feedback delay network, ten years before it entered the American literature. His observation was blunt: a single feedback comb sounds poor, but several cross-coupled combs can sound excellent. So put N parallel delay lines in a loop and close the loop through an orthogonal matrix.

Because the matrix is energy-preserving, the network is stable and lossless by construction, and because every delay feeds every other delay, the echo count multiplies on each circulation: density grows without bound, which is exactly the t² behaviour real rooms have and the Schroeder topology lacks. Gerzon also showed how to build higher-order unitary matrices out of 2 × 2 rotations, how to use the rotation angles to control the stereo spread of the reverberation, how to insert filters inside the network to get frequency-dependent decay, and how to replace the allpass multipliers with filters while preserving the allpass property. In 1976 he formalised the theory in Unitary (energy preserving) multi-channel networks with feedback (Electronics Letters 12(11)).

Studio Sound had no US distribution Gerzon's 1971 and 1972 papers were effectively invisible in North America. In 1982 John Stautner and Miller Puckette published Designing Multi-Channel Reverberators in Computer Music Journal 6(1), independently arriving at the same architecture with a specific four-channel design, general stability conditions, and Music 11 source code. Convergent evolution, and their name for it, feedback delay network, is the one that stuck. Their paper is also the first in the open literature to use slow random modulation of delay lengths to improve the sound, a technique that had been shipping in commercial hardware since the EMT 250 in 1976.

A third strand runs alongside: Julius O. Smith's A New Approach to Digital Reverberation using Closed Waveguide Networks (ICMC 1985) builds reverberators from bidirectional waveguides joined at scattering junctions. It matters because it connects reverb to physical modelling proper, and because the waveguide junction is a scattering matrix, which is where later FDN designs get many of their feedback matrices from.

YearAuthorContributionWhere it went
1961Schroederallpass delay, colourless diffusionevery diffuser since
1962Schroederparallel combs + series allpass; matrix transpose footnoteFreeverb, textbook reverb
1971/72Gerzonorthogonal-matrix feedback network, unitary filters, stereo spreadall FDNs
1976Gerzonunitary network theory, Electronics Letterslosslessness proofs
1979Moorerlowpass comb, 2-multiply allpass, explicit ER FIRevery damped reverb
1982Stautner & Puckette4-channel FDN, stability conditions, delay modulation, codethe name, the practice
1985Smithclosed waveguide networks, scattering junctionsphysical modelling, SDN
1991Jot & Chaigneper-delay absorbent filters, uniform decay across modesevery modern FDN
1992Gardnerallpass loops, nested allpass, single-buffer implementationLexicon-style reverbs
1997Dattorropublished a complete plate reverb with all coefficientshundreds of plugins
1997Rocchesso & Smithcirculant and elliptic FDNs, FFT-cheap feedback matricesefficient large N
2017Schlecht & Habetsgeneral conditions for lossless feedback matricesmodern FDN theory
2023+Dal Santo, Mezza et al.differentiable FDN/SDN trained by gradient descentcurrent research front

Feedback Delay Networks

The FDN is the workhorse of modern algorithmic reverb. N delay lines in parallel, their outputs mixed by an N × N feedback matrix and returned to their inputs. It generalises the comb filter (which is the N = 1 case with A = [g]) and, with the right matrix and the right per-line filters, it subsumes most other topologies including Schroeder's cascade, Moorer's extension and Dattorro's allpass feedback network.

x b₁ + z⁻ᵐ¹ c₁ b₂ + z⁻ᵐ² c₂ b₃ + z⁻ᵐ³ c₃ b₄ + z⁻ᵐ⁴ c₄ + y A · G   (N × N) feedback matrix × per-line attenuation d (direct / dry)
feedback delay network, N = 4 · every line feeds every other line through A on each pass
FDN state equations, vector form \[ \mathbf{s}_{\text{in}}[n] = \mathbf{A}\,\mathbf{s}[n] + \mathbf{b}\,x[n], \qquad y[n] = \mathbf{c}^{\top}\mathbf{s}[n] + d\,x[n] \] transfer function (Jot & Chaigne form) \[ H(z) = \mathbf{c}^{\top}\left[\mathbf{D}(z^{-1}) - \mathbf{A}\right]^{-1}\mathbf{b} + d, \qquad \mathbf{D}(z^{-1}) = \operatorname{diag}\!\left(z^{m_1}, \dots, z^{m_N}\right) \] s[n] is the vector of delay-line outputs; delay line i holds mᵢ samples, so \( s_i[n] = s_{\text{in},i}[n - m_i] \). Poles are the roots of \( \det\left[\mathbf{D}(z^{-1}) - \mathbf{A}\right] = 0 \), of which there are Σmᵢ. For Σmᵢ ≈ 10,000 samples that is ten thousand poles from an N=4 network: the reason FDNs are cheap and dense at the same time.

Losslessness: what makes it stable

The design discipline is to build a lossless prototype first (a network that rings forever without growing), then add attenuation to set decay. If A is unitary (orthogonal in the real case, so AᵀA = I), the total energy circulating in the delay lines is exactly conserved on every pass through the matrix and the network is lossless. All eigenvalues of A then lie on the unit circle.

the three matrices you will actually use \[ \text{Hadamard } (N = 2^k): \quad \mathbf{A} = \frac{\mathbf{H}_N}{\sqrt{N}}, \qquad \frac{\mathbf{H}_4}{2} = \frac{1}{2}\begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \end{bmatrix} \] \[ \text{Householder (any } N): \quad \mathbf{A} = \mathbf{I} - \tfrac{2}{N}\,\mathbf{u}\mathbf{u}^{\top}, \;\; \mathbf{u} = [1, \dots, 1]^{\top} \;\; \xrightarrow{\;N=4\;} \;\; \frac{1}{2}\begin{bmatrix} 1 & -1 & -1 & -1 \\ -1 & 1 & -1 & -1 \\ -1 & -1 & 1 & -1 \\ -1 & -1 & -1 & 1 \end{bmatrix} \] \[ \text{Stautner-Puckette } (N = 4): \quad \mathbf{A} = \frac{1}{\sqrt{2}}\begin{bmatrix} 0 & 1 & 1 & 0 \\ -1 & 0 & 0 & -1 \\ 1 & 0 & 0 & -1 \\ 0 & 1 & -1 & 0 \end{bmatrix} \] Hadamard applies in N log N additions with no multiplies and is maximally mixing: every input reaches every output with equal weight. Householder reduces to "subtract twice the mean from each element", the cheapest possible mixing matrix (orthogonal, det = −1). Stautner and Puckette's is sparse, two nonzero entries per row. All three verified orthogonal numerically: AᵀA = I.
Unitary is sufficient, not necessary Triangular matrices with unit-modulus diagonal are also lossless, and Schlecht and Habets (On Lossless Feedback Delay Networks, IEEE TSP 65(6), 2017) characterise the general class. In practice: Householder for cheapness, Hadamard for maximum mixing, circulant when you want the matrix multiply to be an FFT (Rocchesso & Smith 1997, which makes N = 16 or 32 affordable), and random orthogonal matrices from a QR decomposition when you want to break up any residual structure.

Setting decay: Jot's absorbent filters

Naively, multiply the whole matrix by a scalar g and everything decays. The problem is that different eigenmodes of the network then decay at different rates, and the slowest-decaying ones ring on as isolated pitches: metallic coloration. Jot and Chaigne's 1991 fix is to give each delay line its own attenuation, scaled so that every line loses the same amount of energy per unit time rather than per circulation.

per-line gain for uniform decay \[ g_i = 10^{-3 m_i / (f_s\, T_{60})} \] frequency dependent: replace each gain with an absorbent filter \[ \left| G_i(e^{j\omega}) \right| = 10^{-3 m_i / (f_s\, T_{60}(\omega))} \] In practice Gᵢ(z) is a low-order shelving or graphic-EQ filter fitted to a target T60 curve, typically specified in octave bands. The exponent scales with mᵢ, so a long delay line is attenuated more per pass than a short one: that is the whole content of the idea, and it is what removes the ringing.

Verified: an N = 4 FDN at 48 kHz with a normalised Hadamard matrix, delays m = [997, 1153, 1327, 1559] and per-line gains from the formula above measures T60 = 2.002 s against a 2.000 s target using T30 backward integration; per octave band, 2.005 s at both 200 Hz and 4 kHz. The formula is exact, not approximate.

Tonal correction

One more filter completes the classic design. Shortening the decay in a band also removes energy from that band in the impulse response, so a reverb with a short high-frequency T60 sounds dull in a way that is not physical. Jot's tonal correction filter E(z) sits at the network output with a gain that rises where decay is short, equalising the total energy per band irrespective of the decay time. It is the difference between a decay-time control that changes the decay and one that also changes the timbre.

tonal correction \[ \left| E(e^{j\omega}) \right| \;\propto\; \frac{1}{T_{60}(\omega)} \] Physical justification: in a real room, total reverberant energy per band is set by the source power and the absorption, and shortening the decay also raises the early level. E(z) restores that relationship.

Density, delay choice, and modulation

t taps FDN: new echoes on every circulation, ≈ Nᵏ after k passes: exponential real room · 4πc³t²/V: quadratic 4 parallel combs: constant rate: linear the FDN overshoots and the cascade undershoots, which is why practical designs interpolate: a short cascade of allpass diffusers in front of a modest-N FDN lands closest to the t² curve
density growth · why the matrix beats the cascade
first 120 ms of each impulse response, computed in this page · 48 kHz · Hadamard feedback · T60 = 2 s · tap counts are counted, not quoted
live · the table in build-it, demonstrated: combs stay sparse, the bare FDN starts sparse, diffusion fixes it

Allpass Loops And Nested Diffusion

The third major topology, and the one that actually shipped in the most famous hardware, is the allpass loop: a chain of allpass filters embedded inside a single larger delay loop, with the loop gain setting the decay. It circulated privately in the electronic instrument industry through the 1980s and reached the open literature only in the 1990s.

Nested allpass

The construction that makes it work is the nested allpass: replace the delay inside an allpass with another complete allpass. The result is still exactly allpass, but its impulse response is far denser than either component. Gerzon described the principle in 1972; Bill Gardner's A Realtime Multichannel Room Simulator (ASA, November 1992) is the first public treatment with concrete designs, and it is also where the single-shared-buffer implementation technique comes from.

x ×(−g₁) + z⁻ᵏ · AP(m₂, g₂) + y ×g₁ the inner block is itself allpass, so the whole structure is allpass -- nest two or three deep and one structure produces hundreds of taps with a perfectly flat magnitude response · cost: one buffer
nested allpass · y[n] = −g₁x[n] + inner[n] + g₁y[n−m]

The allpass loop

x predelay input diffusers: 4× series AP the tank AP(m) z⁻ᵃ damping LPF AP(m′) z⁻ᵇ × decay figure-of-eight: the two halves cross-feed: a 2-line FDN with an antidiagonal feedback matrix and allpasses embedded inside the delay lines taps pulled from fixed points inside the tank, summed with alternating signs → L and R outputs
allpass loop · the Griesinger / Gardner / Dattorro family

Jon Dattorro's Effect Design, Part 1: Reverberator and Other Filters (JAES 45(9), September 1997) published a complete working reverberator of this type, "in the style of Griesinger", with every delay length, every coefficient and every output tap listed. The effect on the field is hard to overstate: that one paper is the origin of an enormous fraction of the plate reverbs in commercial plugins, in synth effects sections and in game engines, often reproduced tap for tap. The paper also carries commentary from Barry Blesser explaining why delay modulation went into commercial reverbs in the first place, which makes it a primary historical source as well as a design document.

Dattorro plate, the published structure (fs = 29,761 Hz in the paper) input: predelay → lowpass(bandwidth) → 4 series allpass diffusers m = 142, 107, 379, 277 g = 0.75, 0.75, 0.625, 0.625 tank: two symmetric halves, cross-coupled modulated allpass m ≈ 672 / 908, g = 0.7 delay m = 4453 / 4217 damping lowpass coefficient = 1 - damping allpass m = 1800 / 2656, g = 0.5 delay m = 3720 / 3163 loop gain = decay output: 7 taps per channel pulled from inside both halves, summed with fixed +/- signs and 0.6 scaling Delay lengths are prime or near-prime at the paper's odd sample rate. Reimplementations at 44.1 or 48 kHz scale them by fs/29761 and re-prime, which is why no two "Dattorro reverbs" sound quite identical.
Why allpass loops became the studio sound An allpass loop gets very high echo density for very little memory, because each allpass multiplies the tap count of everything upstream of it, and it does so with a flat magnitude response so the coloration stays low. On 1980s hardware with a few kilowords of RAM and a handful of multiplies per sample, that efficiency was decisive. The trade is control: the decay, the density and the diffusion are entangled in the same coefficients, so an allpass loop is tuned by ear rather than derived from a target T60 curve. An FDN with Jot damping is the opposite: fully specifiable, less magical.

Modulation, and the Lexicon signature

David Griesinger's contribution at Lexicon was to make the network time-varying. Delay tap positions inside the loop are continuously modulated, in the 224 by low-frequency oscillators and in the 480L's Random Hall by pseudorandom tap displacement. Two effects:

The cost is pitch modulation. Every reflection inside the loop is being slightly resampled, so sustained tonal material acquires a chorus and phase coherence between channels is not preserved. For pop and film that reads as lush and expensive. For classical recording and mastering it is a defect, which is exactly the market TC Electronic went after with strictly time-invariant designs.

Interpolation matters more than the modulation depth A modulated delay line reads at a fractional index. Truncating gives quantisation noise at the modulation rate; linear interpolation gives a moving lowpass whose cutoff varies with the fractional part, which is audible as a shimmer on the tail. Allpass (Thiran) or Lagrange interpolation is the correct answer, and the "modulation noise" that Moore later listed as a flaw of the original SST-282 is precisely this: taps that were "simply picked up and moved 62 µs with no smoothing".

The Iron Age · 1976 to 2007

Schroeder's algorithms ran offline on Bell Labs mainframes: seconds of audio, hours of compute. Real-time reverberation needed a computer that was fast at multiply-accumulate, cheap enough to sell, and equipped with enough RAM to hold a few hundred milliseconds of audio. In 1976 all three of those were barely true at once, and the machines built at that boundary have characters that people still pay for.

EMT 250, 1976 · the first commercial digital reverb

EMT, already the incumbent in mechanical reverb with the 140 and 240, went digital by contracting the work out. The algorithms were designed by Dr Barry Blesser of MIT together with EMT's technical director Karl-Otto Bäder (US patent 4,181,820); the digital hardware came from Ralph Zaorski at the Massachusetts contract engineering firm Dynatron / Dynatronics; EMT built the converters, I/O, power supply and the enclosure. Bäder introduced it at the Zürich AES convention in 1976. Peter Bermes is also credited on the project, and the industrial design (the four upright levers, the red external power supply) was contributed by a freelance designer, which is why the machine looks like a prop.

          EMT 250 "the Robot" / "Spaceheater" · 1976 · $20,000

  ┌────────────────────────────────────────────────────┐
                EMT 250 front panel                   
                                                      
      ▐▌        ▐▌        ▐▌        ▐▌                  large upright
      ▐▌        ▐▌        ▐▌        ▐▌                  mechanical levers,
      ▐▌        ▐▌        ▐▌        ▐▌                  linear pots, an
    DECAY    HF-DAMP   LF-DAMP   PREDELAY               explicit visual
                                                        quote of the 140's
    programs: REVERB · DELAY · PHASE · CHORUS · SPACE   damping handwheel
  └────────────────────────────────────────────────────┘

  inside   ~400 discrete TTL ICs, no DSP chip existed yet
           16 kwords of RAM (1 kbit chips), ≈ 400 W, three fans,
           heat sinks on the outside of the cabinet
           12-bit converters, quasi-15-bit, ≈ 24 kHz sample rate
           1 input, 4 outputs · about 250 units built

  algorithm  one large, heavily cross-coupled allpass network, designed
           to consume every available word of RAM without producing
           discrete echo nodes. Blesser's team built a programmable
           simulator to audition candidate algorithms, roughly two
           years of R&D. Delay-line modulation was in from the start.
Correction to the usual account The 250 is frequently described as having 12-bit converters "with a clever hack for 16 bits". The gain-ranging trick belongs to the Lexicon 224, not the 250. The 250's converters are 12-bit with a quasi-15-bit effective range, and its sample rate is around 24 kHz, giving a bandwidth under 12 kHz. Its reputation for openness and three-dimensionality is achieved despite those numbers, which is worth sitting with.

Lexicon 224, 1978 · the one that defined the sound

Lexicon began in 1969 as American Data Sciences, founded by MIT professor Dr Francis F. Lee and engineer Chuck Bagnaschi to make digital delay lines for medical use (ECG and heart-sound analysis); renamed Lexicon in 1971, it pivoted to pro audio, with Blesser involved in its early days. The 224 came from outside: David Griesinger, a nuclear physicist, musician and classical recording engineer, had been experimenting with digital reverberation, saw the EMT 250, combined his algorithm work with microcomputer control, and pitched a prototype. Lexicon bought the design and brought him in to finish it. Announced at the 1978 AES convention; contemporary trade press lists $7,500 for the two-program version and $7,900 with four programs (later sources say $8,800).

                  Lexicon 224 · architecture as built

   analog in
      
      
  ┌────────────────────────┐   gain-ranging ADC: a 12-bit linear
  │ 12-bit + analog gain   │   converter (DAC80 family) preceded by
  │ ranging, 6 dB steps    │   an automatic gain-ranging stage that
  └───────────┬────────────┘   shifts level in discrete steps and
                              stores the exponent. Buys roughly
                              24 dB of extra headroom → pseudo-
  ┌────────────────────────┐   floating-point, ≈ 90 dB range.
  │ 16-bit fixed-point     │   The step transitions are part of
  │ engine, Intel 8080     │   the grit people pay for.
  │ control CPU + a great  │
  │ deal of 74S/74LS logic │   Dynamic RAM for the delay buffers,
  │ + dynamic RAM buffers  │   the scarcest and most expensive
  └───────────┬────────────┘   resource in the whole design.
              
                              4U mainframe + separate desktop
  ┌────────────────────────┐   remote. Griesinger insisted on the
  │ 12-bit DAC + ranging   │   split so the engineer had parameter
  └───────────┬────────────┘   access at the console; the 224X and
                              224XL later got the LARC remote.
   analog out

  the algorithm  allpass loops with continuously modulated delay taps.
  Sub-audio LFOs shift the internal tap positions, pitch-shifting the
  recirculating reflections slightly, which prevents standing modes and
  produces the smooth chorused tail known as the Lexicon sound. Split
  bass/mid decay with a crossover, plus separate treble decay, gave a
  tunable decay spectrum years before anyone published the theory.
Not AMD 2901 bit-slice A persistent claim has the 224 running on eight AMD 2901 4-bit-slice processors at 7 MIPS. Contemporary teardown accounts describe an Intel 8080 as the control processor with the audio path built from discrete 74S/74LS logic and DAC80-family 12-bit converters. Bit-slice designs were common in that era and did appear in other audio hardware, but the 224 is not one of the documented cases. Treat the 2901 story as unverified.

Ursa Major Space Station SST-282, 1978 · the cheap outsider

Christopher Moore was project engineer at Lexicon; he resigned in 1977, founded Ursa Major, and set out to build a good digital reverb for $2,000 rather than the price of a 224 (it shipped at $1,995, launched at the Los Angeles AES convention in May 1978; roughly 1,900 were made). The architecture is not a Schroeder cascade. It is a recirculating multitap delay: a single 255 ms buffer with eight audition taps whose positions float, moving randomly under program control. Moore described it in the manual as a special multi-head tape recorder with a 255 ms loop.

The floating taps are the invention, and they are patented: randomising tap positions is what lets the structure run at high feedback without either self-oscillating or turning into an audible periodic echo. Moore later catalogued its flaws honestly (spectral smearing from wandering taps, modulation noise from unsmoothed 62 µs tap jumps, and an inability to sound truly distant because the audition taps picked up dry source as well as diffuse tail). Those flaws are the sound. Ursa Major was bought by AKG in 1986; Moore's later designs (the 8×32, the AKG ADR-68K, algorithms for Kurzweil) used stable rather than time-variant structures.

AMS RMX16, 1982 · microprocessor control and the gated preset

Advanced Music Systems, founded in 1976 in Burnley by ex-aerospace engineer Mark Crabtree with Stuart Nevison, built the DMX 15-80 digital delay in 1978, then the DMX 15R reverb expander in September 1981, then repackaged that combination as the self-contained RMX16 in March 1982: a microprocessor-controlled digital reverberator running a 16-bit engine behind a 12-bit gain-ranged converter, physically compact next to a 250 or a 224, with a display and stored programs.

Its historical importance is a preset. In 1979 at Townhouse Studio 2, engineer Hugh Padgham was setting up drums for Peter Gabriel's third album when he engaged the reverse talkback on the studio's new SSL 4000 B console while Phil Collins was playing. The talkback mic was heavily compressed so that quiet speech from the live room would be audible; run through the console's per-channel gate as well, it produced an enormous room sound that snapped to silence. It went on "Intruder", then on "In the Air Tonight". AMS, working closely with Townhouse, turned the effect into the RMX16's Non Lin 2 preset: a deliberately unphysical reverb whose envelope does not decay, and in places rises, before terminating abruptly. Gated reverb as a preset rather than a signal-chain trick is the single most identifiable production signature of the 1980s.

the nonlinear envelope, why it is not physics \[ \text{physical:} \quad h[n] = \text{noise}[n] \cdot e^{-n/\tau} \qquad \text{(monotonic decay)} \] \[ \text{nonlinear:} \quad h[n] = \text{noise}[n] \cdot w[n], \qquad w[n] \text{ flat or rising, truncated hard at } n = N \] Truncating a noise burst hard in time spreads its spectrum: the abrupt edge is a step, and steps are broadband. That click-plus-burst is exactly what makes a gated snare cut through a dense mix. Reverse reverb is the same idea with w[n] rising monotonically to the cut.

Quantec QRS, 1982 · the outlier that modelled propagation

Wolfgang Buchleitner (born Wolfgang Schwarz), a self-taught German designer with no engineering degree, founded Quantec in Munich in 1982 and shipped the Room Simulator. Presented at the Montreux AES show, it took a different route from every competitor: rather than assembling echo and feedback networks, the QRS modelled sound propagation and resonance in an enclosure. Eight parameters, decay times reported from about 0.1 s to 100 s (and several times that in the low bass), 16-bit conversion with oversampling and a wider internal word length, plus the first commercial Freeze function, which captured a signal in a non-parallel-walled virtual room and sustained it indefinitely.

It became the tool of choice for post-production ADR matching (its accuracy at reproducing a specific room was the selling point), and a texture generator for Peter Gabriel, Enya, Pink Floyd and Depeche Mode. Units were still being built in 1995; the Yardstick series continued the algorithm. Buchleitner died in 2016, and in November 2024 Apple acquired the Quantec technology and shipped faithful QRS and Yardstick recreations inside Logic Pro, working from Buchleitner's original schematics, algorithms and code. That is one of the very few cases of a proprietary reverb algorithm being preserved rather than reverse-engineered.

Lexicon 480L, 1986 · maturity

The 480L moved to 18-bit linear conversion at 44.1/48 kHz with digital I/O compatible with the Sony PCM-1610/1630, quoting 98 dB dynamic range in the wet path, and it ran on Lexicon's own microcoded arithmetic unit rather than an off-the-shelf DSP. Reverse-engineering work on the family describes a common ARU architecture across the Lexicon 200, 224XL, PCM60, PCM70 and 480L, with the 480 adding an extra T-state per instruction to fit one more multiply. The later single-chip Lexichip is essentially that ARU on one die, which is what made the cheap LXP series and later the PCM80/90 and the 300 possible; Lexichip II and III followed.

Algorithmically the headline was Random Hall: instead of periodic LFO modulation, the late-field tap positions are displaced by a random process. Random modulation has no cyclic artefacts at all, which is what let the 480L hold up on sustained piano and strings where the 224's chorus would have been obvious.

TC Electronic · phase coherence as a product strategy

TC Electronic was founded in 1976 in Risskov near Aarhus by brothers Kim and John Rishøj, starting with analogue guitar pedals (the SCF chorus) and moving up into high-end digital. The M5000 in 1994 and the System 6000 in 1999 pursued a philosophy explicitly opposed to Lexicon's: source purity, phase linearity, and geometric accuracy.

Their VSS (Virtual Space Simulation) family splits the problem cleanly:

dry in early reflection engine explicit geometric pattern: a matrix of tapped delays, phase-aligned directional taps late reverb engine multichannel FDN, unitary feedback matrix, strictly time-invariant decoupled mixer independent ER and tail levels: size and decay set separately out no delay-line modulation anywhere: zero chorus on the tail, phase coherence preserved between channels. this is why VSS dominated classical recording, mastering and film post while Lexicon owned pop.
TC Electronic VSS · the two-engine split
The two-engine split is now universal Geometric early reflections plus statistical late field, with independent level control, is the architecture of TC's VSS, of Moorer's 1979 proposal, of every game audio engine, and of every hybrid convolution plugin that convolves a measured early portion and synthesises the tail. It is the direct engineering expression of the mixing time from IR Anatomy.

Democratisation, 1985 to 1990

What actually changed music was not the flagships but the arrival of cheap single-chip DSP. The Yamaha SPX90 (1985) put usable reverb, delay and pitch shift in a 1U box at a few hundred dollars; the Alesis Midiverb and Microverb pushed the price under $400. Yamaha's REV-1 (1983) and REV-7, Roland's SRV-2000 and R-880, Eventide's SP2016 with its user-loadable algorithm ROMs, Sony's DRE-2000, EMT's own 245 and 251: within five years every project studio had a reverb, and the sound of records changed accordingly. The 1980s do not sound reverberant because engineers suddenly liked reverb; they sound reverberant because reverb became something you could buy for the price of a microphone.

Bricasti M7, 2007 · the last flagship box

Brian Zolner (Lexicon's long-time VP of international sales) and Casey Dowdell (a Lexicon DSP engineer) left to found Bricasti Design in 2004, the name a blend of their first names. The M7 is an algorithmic reverb with modern converters and a very large delay-memory budget, and it arrived precisely when conventional wisdom said hardware reverb was finished. It succeeded, and it remains the reference against which convolution and plugin reverbs are compared, which tells you something durable: with enough compute, a well-tuned algorithmic reverb beats a measured one, because it can be adjusted.

UnitYearTopologyTime varianceWord / rateSignature
EMT 2501976large cross-coupled allpass networkyes, from launch12-bit quasi-15, ~24 kHzopen, three-dimensional, dark
Lexicon 2241978modulated allpass loopsLFO12-bit gain-ranged, 16-bit enginelush, chorused, extra-long decays
Ursa Major SST-2821978recirculating multitap, floating tapsrandom tap motion255 ms bufferspooky, smeared, unmistakable
AMS RMX161982micro-controlled digital reverbmodest12-bit gain-ranged, 16-bit engineNon Lin 2, the 1980s drum sound
Quantec QRS1982propagation / resonance modelnone stated16-bit in, wider internalaccurate rooms, Freeze
Lexicon 480L1986allpass loops, Random Hallrandom tap displacement18-bit linear, 44.1/48the studio default for a decade
TC M5000 / S60001992 / 1999ray-traced ER matrix + FDN tailnone, by designfull digitaltransparent, phase-coherent
Sony DRE-S7771999FFT convolution from CD-ROMn/areal-time convolutionit is the room, no parameters
Bricasti M72007large modern algorithmictasteful24-bit, 96 kHzthe current hardware reference

Convolution · Just Use The Room

If a room is an LTI system, its impulse response is a complete description. Record the IR, convolve, done. The theory has been obvious since the 1950s; the obstacle was arithmetic. A three-second stereo IR at 48 kHz is 144,000 taps per channel, so direct convolution costs 144,000 multiply-accumulates per sample per channel, roughly 14 GMAC/s for stereo in and stereo out. That is why convolution reverb arrived in 1999 and not 1979.

Measuring an impulse response

  1. Impulse excitationPistol shot, balloon burst, clapper board, spark gap. Simple, but the SNR is whatever the impulse's energy gives you in one shot, the spectrum is uncontrolled, and loud transients are nonlinear. Still the only option for spaces you cannot bring a PA into.
  2. MLS, maximum length sequencesA deterministic pseudorandom binary sequence of length 2ᴺ-1 whose circular autocorrelation is a delta. Play it, cross-correlate the recording with it (a fast Hadamard transform does this in N log N), and you get the IR with an SNR gain of roughly 10 log₁₀(L) dB for sequence length L. Because energy is spread over the whole sequence, peak level stays low. The fatal weakness: any nonlinearity in the loudspeaker scatters distortion products uniformly across the whole IR as a noise floor you cannot separate.
  3. Exponential sine sweep (ESS)Farina, AES 108th Convention, 2000. Sweep a sine logarithmically from 20 Hz to 20 kHz over 10 to 30 s, then deconvolve with a time-reversed, amplitude-corrected copy. Because frequency advances exponentially, the n-th harmonic distortion product arrives at a fixed time before the linear response, so all distortion lands at negative time and you crop it off. You also get the harmonic distortion measurement for free from the same recording. This is the modern default, and the reason every commercial IR library sounds clean.
  4. Post-processingCrop, denoise the tail (or replace the noise-buried portion with a synthesised extension), normalise, trim pre-delay, and decide on the direct sound: most libraries keep it, some strip it so the user controls dry/wet independently. Multichannel captures use spaced pairs, Ambisonic arrays or dummy heads.
the exponential sweep and its inverse \[ s(t) = \sin\!\left[ \frac{\omega_1 T}{\ln(\omega_2/\omega_1)} \left( e^{\frac{t}{T}\ln\frac{\omega_2}{\omega_1}} - 1 \right) \right] \] \[ h(t) = \mathrm{IFFT}\big\{ \mathrm{FFT}(\text{recorded}) \cdot \mathrm{FFT}(\text{inverse}) \big\} \] The inverse filter is s(−t) with a −6 dB/octave amplitude envelope: the sweep spends more time per octave at low frequencies, so it deposits more energy there. The k-th harmonic distortion product appears at \( t_k = -T \ln k \,/\, \ln(\omega_2/\omega_1) \) relative to the linear IR: strictly negative, strictly separable. That is the whole trick, and it is why ESS displaced MLS for room measurement.

Doing the arithmetic in real time

Frequency-domain convolution turns a 144,000-tap product into a pointwise multiply, but a single FFT of the whole IR would need 144,000 samples of input before it could produce anything: 3 seconds of latency. The solution is partitioned convolution: chop the IR into blocks, FFT each block once at load time, and for each incoming input block multiply and accumulate against all of them with the appropriate delays (overlap-save).

uniform partitioning (block size B, K = L/B partitions) h₀h₁ h₂h₃ h₄h₅ ···h_K₋₁ t each block FFT'd once at load time · per input block: 1 forward FFT, K complex MACs in a frequency-domain delay line, 1 inverse FFT · latency = B samples · cost ∝ (L/B)·log B per sample small B → low latency, high cost · large B → cheap, high latency non-uniform partitioning (Gardner 1995): the practical answer h₀h₁ h₂h₃ h₄h₅ 6464 256256 20482048 t head: tiny blocks (or direct-form FIR) → zero or near-zero latency tail: huge blocks → cheap, and their latency is hidden because the tail contribution is not needed until later anyway this is why a convolution plugin can report 0 samples of latency and still convolve a 10-second IR on one core
uniform vs non-uniform partitioned convolution

The hardware and the plugins

Sony's DRE-S777 (1999) was the first commercial real-time convolution reverberator: a rack unit with a CD-ROM drive for IR libraries and a memory card for patches, about £5,900 base and over £10,000 with the IR disc libraries. Sony's engineers travelled to real venues (the Concertgebouw among them) to capture them. Yamaha followed with the SREV1. TC Electronic had already been using limited real-time convolution for the early-reflection stage of VSS algorithms, which is worth noting as the first hybrid.

Then a chip made it free. When Apple shipped the PowerPC G4 in 1999/2000, its AltiVec SIMD vector unit made FFTs on a desktop cheap enough to convolve in real time. The Dutch company Audio Ease built Altiverb on it in 2001, and named it after the vector engine. Convolution reverb went from a five-figure rack to a plugin in two years, and the IR library became the product rather than the algorithm.

What convolution cannot do

It has no parameters. Decay time, room size and diffusion are baked into the recording. Stretching or resampling an IR to change decay also changes its spectrum and its early reflection geometry, which is why "decay" controls on convolution plugins are envelope multipliers and always sound like envelope multipliers.

It is strictly LTI. No modulation, no time variance, no nonlinearity. A convolved plate IR has none of the plate's slight nonlinear character and none of an algorithmic reverb's motion. Some plugins add modulation after the convolution to compensate; that is a different effect wearing the same coat.

It captures one source and receiver position. A real room's IR changes with every metre you move. Convolution gives you a photograph, so it cannot render a moving source, which is exactly why games do not use it for the general case.

Nonlinear artefacts. Poorly captured IRs carry the measurement loudspeaker's own response, the room's noise floor, and any distortion the deconvolution failed to separate. You are convolving with all of it.

Hybrid: the current best practice

Because convolution is accurate but rigid and algorithmic reverb is flexible but approximate, high-end designs use both. Convolve a short measured early portion (the first 50 to 150 ms, which carries the room's identity and is cheap because it is short), then hand off to a parameterised FDN whose T60 curve is fitted to the measured tail. You get the real room's fingerprint with an adjustable decay. LiquidSonics' approach of interpolating between multiple measured IRs and adding modulation is a commercial expression of the same idea, and the research equivalent is fitting a differentiable FDN to a measured RIR, which is where the field is now.

Geometry, Rays And Wave Solvers

A separate discipline computes impulse responses from a room description instead of measuring or approximating one. It matters here for two reasons: it produces the early reflections that hybrid reverbs use, and it is what every game engine and VR audio renderer actually runs.

Image source method, 1979

Allen and Berkley, Image method for efficiently simulating small-room acoustics (JASA 65(4), 1979), is the workhorse. Reflect the source across each wall plane to create a mirror image; the reflected path from source to listener is geometrically identical to the direct path from the image to the listener. Recurse to get higher orders.

wall wall Lx S L image₋₂ image₋₁ image₊₁ image₊₂ reflected path S→wall→L ≡ straight path image₊₁→L delay of image i = |p_i − p_L| / c gain of image i = Π reflection coefficients over walls crossed, ÷ distance (spherical spreading) 3D shoebox: images live on a lattice; order N gives O(N³) images, so order 3 is cheap and order 10 is not. Exact for rigid rectangular rooms, approximate otherwise, and invalid once wavelength ≈ surface size (diffraction).
image source method · one dimension of a shoebox room

Practical notes that bite people: images must be checked for visibility in non-convex rooms; the method models specular reflection only, so a real room's scattering has to be grafted on separately; and frequency-dependent absorption means each image path needs its own filter, not a scalar gain. The method's real home is generating the first 50 ms, which is exactly the region where geometric acoustics is valid.

Ray and beam tracing, radiance transfer

Shoot rays (or cones, or beams) from the source, bounce them off surfaces with a specular/diffuse split, and histogram the energy that reaches the receiver as a function of time. Scales to arbitrary geometry, handles diffuse scattering naturally, and is embarrassingly parallel. Costs: stochastic noise in the resulting energy histogram, no phase information (so you get an energy decay curve rather than a true IR and must synthesise the fine structure with noise), and no diffraction. Acoustic radiance transfer precomputes surface-to-surface energy exchange, which lets you move the listener cheaply, at the cost of a precomputation stage.

Solving the wave equation directly

Below the Schroeder frequency, rays are wrong: wavelengths are comparable to room dimensions, modes dominate, and diffraction is the main effect. There you solve the PDE.

MethodHowCostWhere used
FDTDdiscretise ∇² and ∂²/∂t² on a grid, step in timegrid must resolve the shortest wavelength: cost ∝ f⁴ in 3Dlow-frequency room acoustics, research
DWMdigital waveguide mesh: scattering junctions on a latticesame order as FDTD, equivalent in the linear casephysical modelling, plate and membrane reverbs
FEM / BEMsolve in the frequency domain on a mesh, per frequencyheavy, but handles complex geometry and impedancearchitectural consulting, car cabins
ARDadaptive rectangular decomposition: analytic modal solution inside boxes, interface handling between themfar cheaper than FDTD for box-decomposable scenesMicrosoft Project Acoustics / Triton
SDNscattering delay network: one delay line per wall pair, scattering junctions at wall centresreal-time, a few dozen delay linesgames, interactive VR

Scattering delay networks deserve a note because they close the loop back to FDN. De Sena, Hacıhabiboğlu, Cvetković and Smith (IEEE TASLP 23(9), 2015) place a scattering junction at the centre of each wall and connect junctions with bidirectional delay lines whose lengths come from the actual room geometry. First-order reflections are then exactly correct (they are the direct wall-to-wall paths), the late field emerges from recirculation as in an FDN, and the whole thing is parameterised by room dimensions and wall absorption rather than by tuned coefficients. It is the cleanest bridge between geometric accuracy and FDN efficiency, and it is what a modern interactive renderer wants.

What games actually ship A production audio engine runs a hybrid: precomputed or ray-traced parameters (occlusion, obstruction, per-portal transmission, a per-region T60 curve) driving a small number of parametric reverb instances, usually FDN or allpass-loop, with distance-based direct/wet mixing and HRTF panning on the direct path and the early reflections. Steam Audio, Wwise and FMOD with their reverb plugins, Google's Resonance Audio, and Project Acoustics all sit in this shape. Convolution appears only for fixed, non-interactive cases such as cutscenes and ambience beds. The reason is the same one from Convolution: an IR is tied to one source and receiver position, and in a game everything moves.

The hybrid frequency split

      how a serious simulation splits the problem, both axes at once

              low frequency               high frequency
              below f_s (modal)           above f_s (statistical)
  ──────────┼────────────────────────────┼───────────────────────────
   early      FDTD / ARD / FEM            image source method
   t < t_mix  diffraction matters,        specular, exact for
              rays are invalid            shoeboxes, cheap to
                                          order 2 or 3
  ──────────┼────────────────────────────┼───────────────────────────
   late       modal synthesis             FDN / ray-traced EDC
   t > t_mix  a few dozen resonators      + noise-shaped tail,
              for the strong modes        per-band T60 fitted
                                          to the simulation

  Crossovers at f_s (from √(T60/V)) and at t_mix (from √V ms). Both
  numbers come straight out of section 02 and 03. Nothing in this
  field is arbitrary; it is all the same two boundaries.

Modern Practice · 2010 to now

The classical topologies are settled. What has changed in the last fifteen years is that the parameters no longer have to be tuned by ear, and that the FDN has been rediscovered as a general-purpose framework rather than one algorithm among several.

The FDN as a universal container

A useful result from the recent literature: most historical reverb topologies can be written as an FDN with a particular feedback matrix and particular filters. Schroeder's parallel combs are an FDN with a diagonal matrix. His series allpasses are an FDN with a triangular one. Moorer's extension, Dattorro's allpass feedback network and Dahl and Jot's absorbent allpass FDN all fall out of the same equations. That matters practically: if you implement one well-optimised FDN engine you can express the whole family in it, and you can reason about all of them with the same losslessness and decay theory.

Velvet noise

A late reverberation tail is perceptually equivalent to filtered noise, and you do not need a recursive network to make noise. Velvet noise is a sparse sequence of impulses of value +1 or -1, one per fixed-length interval at a randomised position within it, at a density of roughly 1,000 to 2,000 impulses per second. It sounds smoother than Gaussian white noise at the same density (hence the name) and, because it is sparse and its values are ±1, convolving with it needs only additions and subtractions: no multiplies.

velvet noise sequence \[ T_d = \frac{f_s}{\rho} \qquad \text{e.g. } 48000/2000 = 24 \text{ samples} \] \[ s[n] = \pm 1 \;\text{ at }\; n = k\,T_d + \operatorname{round}\!\big(r_k\,(T_d - 1)\big), \qquad r_k \sim U(0,1);\; 0 \text{ elsewhere} \] ρ is the impulse density, roughly 1,000 to 2,000 per second: one impulse per interval at a random position, sign chosen with equal probability. Filtered velvet noise (Välimäki, Holm-Rasmussen, Alary, Lehtonen, 2017) gives a late-reverb generator whose cost is a handful of adds per sample. "Dark velvet noise" extends it to non-exponential decay envelopes, which is what coupled rooms and non-diffuse spaces actually produce.

Differentiable reverb

The current research front. Write the FDN in a framework that supports automatic differentiation, define a loss against a target (a measured room impulse response, or a spectral flatness objective), and optimise the delay lengths, feedback matrix and filter coefficients by gradient descent. Two distinct uses:

Supporting infrastructure exists: Schlecht's FDNTB (the Feedback Delay Network Toolbox, DAFx 2020) collects the special matrices, topologies, attenuation filters and modal decompositions; FLAMO (ICASSP 2025) is an open-source library for frequency-domain differentiable audio processing with learnable LTI modules. Lee, Choi and Lee's Differentiable Artificial Reverberation (IEEE/ACM TASLP 30, 2022) is the general framing paper.

Why gradient descent beats ear-tuning here specifically Reverb parameters are high-dimensional, strongly coupled and non-intuitive: change one delay length and the entire pole distribution moves. Human designers cope by fixing most parameters at conventional values and tuning a few. An optimiser has no such preference, so it finds configurations no one would try, and the objective (flat magnitude, matched energy decay relief) is genuinely the thing you want. The limitation is that perceptual quality is not fully captured by any current loss function, which is why the papers still run listening tests.

Beyond a single exponential

Sabine's model assumes one diffuse field with one decay rate per band. Real spaces frequently violate this: coupled volumes (a nave and its side chapels, a stage house and an auditorium, a stairwell off a corridor) produce a sum of exponentials, so the energy decay curve is bent rather than straight on a dB axis. The common slopes model represents a space as a small set of shared decay rates with position-dependent amplitudes, which is a good fit for coupled rooms and is what several current XR renderers use. Neural approaches to multi-exponential decay analysis (Götz, Pérez, Schlecht, Pulkki, JASA 152(2), 2022) fit these automatically.

The plugin landscape, honestly

ApproachExamplesWhat you getWhat you give up
Emulation of specific ironUAD 224 / 480L, UA RMX16, Arturia Rev collection, Logic's Quanteca documented, recognisable sound with the original parameter setfrozen design choices, including the flaws
Original algorithmicValhalla Room / VintageVerb / Supermassive, Eventide Blackhole, FabFilter Pro-Rfull parametric control, cheap, modulation and time variance availablenever exactly a specific real room
ConvolutionAltiverb, Waves IR-1, Steinberg Reverence, Nebulaa measured space, exactlyno parameters, LTI only, one mic position
Hybrid / interpolated IRLiquidSonics Seventh Heaven and Cinematic Rooms, Altiverb's modulationmeasured identity with adjustable decay and motioncomplexity, larger footprint
Reverb as instrumentValhalla Shimmer / Supermassive, Eventide Blackhole, granular and spectral reverbsunphysical structures: pitch shift in the loop, infinite feedback, freezeany pretence of simulating a space

The shimmer family is worth a paragraph because it is the clearest case of a reverb topology used as a compositional device. Put a pitch shifter inside the feedback loop (typically +12 semitones, sometimes +12 and -12 in parallel) and every circulation transposes the tail upward, producing an ascending harmonic cloud that never resolves. It comes out of Brian Eno and Daniel Lanois's work in the 1980s, notably on U2, the original chain is usually reconstructed as an AMS DMX 15-80's pitch shifter feeding a Lexicon 224 on Concert Hall (Eventide harmonisers belong to later recreations of the trick). It is now a preset, but its mechanism is exactly the loop from Allpass Loops with one nonlinear block inserted, and it is a useful reminder that the topology does not care whether the block is physical.

Build It · Reference Implementations

Working code, tested. NumPy sample-by-sample loops for clarity rather than speed: the point is that every structure on this page is fifty lines. Ship the vectorised version later.

Primitives and decay

pythonimport numpy as np

def comb_gain(m, T60, sr):
    """Feedback gain giving a -60 dB decay in T60 seconds for an m-sample loop."""
    return 10.0 ** (-3.0 * m / (sr * T60))

class Comb:
    # Moorer's lowpass comb: damp=0 is Schroeder's plain comb
    def __init__(self, m, g, damp=0.0):
        self.buf = np.zeros(m); self.i = 0
        self.g = g; self.damp = damp; self.lp = 0.0
    def tick(self, x):
        y = self.buf[self.i]
        self.lp = y * (1.0 - self.damp) + self.lp * self.damp   # one-pole LPF
        self.buf[self.i] = x + self.g * self.lp
        self.i = (self.i + 1) % len(self.buf)
        return y

class Allpass:
    """Dattorro / Gardner two-multiply form. One buffer, exactly allpass."""
    def __init__(self, m, g):
        self.buf = np.zeros(m); self.i = 0; self.g = g
    def tick(self, x):
        d = self.buf[self.i]
        t = x - self.g * d
        self.buf[self.i] = t
        self.i = (self.i + 1) % len(self.buf)
        return d + self.g * t

Schroeder / Moorer

pythondef schroeder_moorer(x, sr=48000, T60=2.0, damp=0.4):
    cm = [1687, 1601, 2053, 2251]          # mutually prime comb delays
    am = [347, 113]                        # short prime allpass delays
    combs = [Comb(m, comb_gain(m, T60, sr), damp) for m in cm]
    aps   = [Allpass(m, 0.7) for m in am]
    y = np.zeros(len(x))
    for n, s in enumerate(x):
        v = sum(c.tick(s) for c in combs) / len(combs)
        for a in aps:
            v = a.tick(v)
        y[n] = v
    return y

FDN with unitary feedback and Jot damping

pythondef hadamard(n):
    H = np.array([[1.0]])
    while H.shape[0] < n:
        H = np.block([[H, H], [H, -H]])
    return H / np.sqrt(n)                     # orthonormal: H.T @ H == I

def fdn(x, sr=48000, T60=2.0, m=(997, 1153, 1327, 1559), hf_ratio=0.35):
    """N-line FDN, unitary feedback, per-line absorbent shelf (Jot 1991)."""
    m = np.asarray(m, dtype=int); N = len(m)
    A = hadamard(N)
    g_dc = 10.0 ** (-3.0 * m / (sr * T60))              # gain at DC
    g_hf = 10.0 ** (-3.0 * m / (sr * T60 * hf_ratio))   # gain at Nyquist
    a  = (g_dc - g_hf) / (g_dc + g_hf)                  # one-zero shelf: H = b0*(1 + a*z^-1)
    b0 = (g_dc + g_hf) / 2.0
    bufs = [np.zeros(mi) for mi in m]
    idx  = np.zeros(N, dtype=int)
    z    = np.zeros(N)                                   # shelf state
    bvec = np.ones(N) / np.sqrt(N)                       # input gains
    cvec = np.ones(N) / np.sqrt(N)                       # output gains
    y = np.zeros(len(x))
    for n, s in enumerate(x):
        out  = np.array([bufs[i][idx[i]] for i in range(N)])
        y[n] = cvec @ out
        filt = b0 * (out + a * z); z = out
        fb   = A @ filt + bvec * s
        for i in range(N):
            bufs[i][idx[i]] = fb[i]
            idx[i] = (idx[i] + 1) % m[i]
    return y

Measurement, so you can audit your own output

pythondef t30(h, sr):
    """T60 estimate: Schroeder backward integration, least-squares line fit
    over the -5 to -35 dB span of the EDC, extrapolated to -60 dB."""
    e  = np.cumsum(h[::-1] ** 2)[::-1]
    db = 10 * np.log10(e / e[0] + 1e-30)
    i5, i35 = np.argmax(db <= -5), np.argmax(db <= -35)
    n = np.arange(i5, i35 + 1)
    slope = np.polyfit(n / sr, db[i5:i35 + 1], 1)[0]   # dB per second
    return -60.0 / slope

def echo_density(h, sr, half_win_ms=20):
    """Abel-Huang normalised echo density. 1.0 means Gaussian-noise-like.
    Window spans n +/- half_win_ms (40 ms total at the default)."""
    w   = max(1, int(sr * half_win_ms / 1000.0))
    ref = 0.3173                       # erfc(1/sqrt(2)), the Gaussian value
    out = np.zeros(len(h))
    for n in range(w, len(h) - w):
        seg = h[n - w:n + w]
        sd  = seg.std()
        out[n] = (np.abs(seg) > sd).mean() / ref if sd > 0 else 0.0
    return out

What the measurements say

Run at 48 kHz with a unit impulse, T60 target 2.0 s. All numbers below are measured from the code above, not estimated. The input diffusers are Dattorro's published set (allpass delays 142, 107, 379, 277 with g = 0.75, 0.75, 0.625, 0.625); the N = 8 delay set is [997, 1153, 1327, 1559, 1801, 2099, 2311, 2521]. Octave-band values were measured through a cascaded biquad bandpass.

ConfigurationTaps in first 50 msEcho density @50 / 100 / 200 msMeasured T60
FDN, N=4, no damping80.02 / 0.06 / 0.212.002 s
FDN, N=4, + 4 series allpass in front4710.73 / 0.91 / 0.962.001 s
FDN, N=8, + 4 series allpass in front4860.76 / 0.95 / 1.002.006 s
Schroeder / Moorer, 4 combs + 2 allpass270.15 / 0.39 / 0.541.70 s broadband
Read that table carefully, it contains three lessons

1. A bare N=4 FDN is not a reverb. Eight taps in 50 ms is an echo pattern, and the echo density measure agrees: 0.02 out of 1.0. Adding four cheap allpass diffusers in front takes it to 471 taps and 0.73 density for essentially no CPU. Diffusion is the cheapest quality you can buy; raising N from 4 to 8 doubles the cost and buys much less than the allpasses did.

2. The decay formula is exact. 2.002 s against a 2.000 s target broadband, and 2.005 s in both the 200 Hz and 4 kHz octave bands. Jot's per-line scaling works to three digits, so if your reverb's decay time control is inaccurate, that is a bug and not a fact of life.

3. Broadband T60 is a lie when the reverb is damped. The Schroeder/Moorer chain measures 1.70 s broadband against a 2.0 s target (1.97 s at 200 Hz, 1.16 s at 4 kHz), purely because the high band decays faster and dominates the early part of the energy decay curve. Always measure per octave band. Similarly, the FDN's first-order shelf only reaches its target high-frequency gain at Nyquist, so at 4 kHz the damped case measures 1.80 s rather than the nominal 0.7 s. A real design fits a higher-order filter to a target T60 curve across octave bands; a one-zero shelf is a demonstration, not a product.

Adding what the classics added

  1. Pre-delayA plain delay line in front of everything, 0 to 150 ms. The single most effective control for separating a source from its space, and the one that sets apparent room size (see ITDG in IR Anatomy).
  2. Explicit early reflectionsA sparse tapped delay line, 12 to 20 taps, with times and gains from the image source method for the room you want. Sum it with the FDN output under an independent level control, exactly as Moorer proposed in 1979 and TC Electronic productised in VSS.
  3. ModulationSlowly vary the delay read positions with independent low-frequency noise per line, depth of a few samples, rate under 1 Hz. Use allpass or Lagrange fractional-delay interpolation, not truncation, or you will hear the modulation as noise. This buys smoothness and stability margin at the cost of phase coherence.
  4. Tonal correctionAn output shelf inversely proportional to T60(ω), so that shortening the high-frequency decay does not also make the reverb dull.
  5. Input and output diffusionSeries allpasses before the network (as measured above) and optionally after it. Cheapest possible improvement in perceived quality.
  6. Low cut and high cut on the wet pathNot physics, but every engineer does it: rolling off below 150 Hz and above 8 kHz on the reverb return is how you get a big space that does not fight the mix.

Further · Papers, Errata, Rabbit Holes

The foundational ten

If you read only these, in this order, you will know the field. The list follows Sean Costello's (Valhalla DSP) selection, which is the best curated bibliography in the field and worth reading in his own words.

  1. Schroeder & Logan, "Colorless" Artificial Reverberation, JAES 9(3), July 1961. The allpass delay. PDF
  2. Schroeder, Natural Sounding Artificial Reverberation, JAES July 1962. Parallel combs plus series allpass, and the matrix transpose footnote that seeded FDNs. AES e-lib
  3. Gerzon, Synthetic Stereo Reverberation Part 1, Studio Sound December 1971, pp. 632-635. Orthogonal-matrix feedback networks, ten years early. Scan
  4. Gerzon, Synthetic Studio Reverberation Part 2, Studio Sound January 1972, pp. 24-28. Allpass feedback networks, cascaded unitary networks, filters inside unitary structures. Scan
  5. Moorer, About This Reverberation Business, Computer Music Journal 1979. Lowpass combs, the efficient allpass, explicit early reflections. Full text at IRCAM
  6. Stautner & Puckette, Designing Multi-Channel Reverberators, CMJ 6(1), Spring 1982. The FDN, by that name, with code. PDF
  7. Smith, A New Approach to Digital Reverberation using Closed Waveguide Networks, ICMC 1985. Waveguides and scattering junctions. PDF
  8. Jot & Chaigne, Digital delay networks for designing artificial reverberators, AES 90th Convention, Paris, February 1991. Per-delay absorbent filters, uniform decay, tonal correction. AES e-lib
  9. Gardner, A Realtime Multichannel Room Simulator, ASA New Orleans, November 1992. Allpass loops, nested allpass, single-buffer implementation. PDF
  10. Dattorro, Effect Design Part 1: Reverberator and Other Filters, JAES 45(9), September 1997. A complete plate reverb with every coefficient, plus Blesser's commentary on why modulation exists. PDF

Then these

Errata · claims that circulate and do not hold up

Collected from checking the popular account against primary and contemporary sources. If you have a reverb explainer in your notes, it probably contains several of these.

Common claimWhat the sources support
The EMT 140 plate was designed by Dr Wilhelm Franz at EMTDeveloped by Dr Walter Kuhl at the Institut für Rundfunktechnik. Wilhelm Franz founded and ran EMT (Elektromesstechnik Wilhelm Franz KG), which commercialised it in 1957 and held the patents.
The Lexicon 224 ran on eight AMD 2901 bit-slice processors at 7 MIPSContemporary teardown accounts describe an Intel 8080 control processor, a 16-bit fixed-point audio path built from discrete 74S/74LS logic, DAC80-family 12-bit converters and dynamic RAM buffers. The 2901 claim is unverified.
The 224's converter hack gave a pseudo-16-bit, roughly 90 dB rangeDirectionally right and the mechanism (analogue gain ranging in discrete steps ahead of a 12-bit converter) is correct, but the commonly cited figure from Lexicon-adjacent sources is about 24 dB of extra headroom. Treat "16-bit equivalent" as marketing arithmetic.
The EMT 250 used a 12-bit floating-point converter architectureThat is the 224's trick. The 250 is 12-bit, quasi-15-bit, at roughly a 24 kHz sample rate. Also: about 400 ICs and 16 kwords of RAM, not "16k words maximum delay".
Lexicon was founded in 1971Founded 1969 as American Data Sciences by Dr Francis F. Lee and Chuck Bagnaschi, in medical instrumentation; renamed Lexicon Inc. in 1971. Both years are "right" depending on which entity you mean.
The 480L used an "HSP (Hardware Sound Processor)"No such Lexicon part is documented. The 480L used Lexicon's own microcoded ARU, an architecture shared with the 200, 224XL, PCM60 and PCM70; the later single-chip derivative was the Lexichip, used in the 300, PCM80/81/90/91 and the LXP series.
FDNs were introduced by TC Electronic / by Stautner and PucketteGerzon, 1971, in Studio Sound. Stautner and Puckette independently arrived at the architecture in 1982, named it, and made it visible in the United States. Gerzon formalised the theory in 1976.
"Joël Rochesso" wrote the FDN stabilisation literatureDavide Rocchesso, with Julius O. Smith, on circulant and elliptic FDNs (1997). The name is garbled in a lot of secondary writing.
Allpass filters are perceptually colourlessThey have flat magnitude. Their impulse response is still a decaying pulse train and rings audibly. Schroeder's own quotation marks around "colorless" were doing work.
TC Electronic was founded in 1976 by Kim and John Rishøj in AarhusCorrect, and worth keeping: this one checks out. Risskov, near Aarhus, starting with the SCF chorus pedal.
Quantec's QRS was designed by Wolfgang SchwarzSame person: Wolfgang Buchleitner, born Wolfgang Schwarz, self-taught, founded Quantec in Munich in 1982. He died in 2016 and Apple acquired the technology, shipping it in Logic Pro in November 2024.
Gated reverb was invented on the AMS RMX16Discovered in 1979 at Townhouse Studio 2 with an SSL 4000 B console's compressed reverse-talkback mic plus a channel gate, on Peter Gabriel's third album ("Intruder"). AMS turned it into the RMX16's Non Lin 2 preset afterwards.
The Sony DRE-S777 was "the first convolution reverb"First commercial real-time convolution reverberator, 1999. Offline software convolution predates it by years, and TC Electronic was already using limited real-time convolution for VSS early reflections.
Springs work by torsional waves travelling slower than sound in airTrue but incomplete, and it misses the point. The defining property is dispersion: group velocity depends on frequency, and there is a hard cutoff above which energy does not propagate. That is what makes the chirp, and any model without it is not a spring.
Capitol Studios has four echo chambersFour in the original 1956 build, four more added in 1969. Designed by acoustician Michael Rettinger (Les Paul's earlier reverb experiments preceded, but he was not a named consultant), built from lacquer-coated concrete about 30 feet under the Tower, trapezoidal with no parallel surfaces, decay to about five seconds.
Reverb time is 0.161V/A and that is thatSabine assumes a diffuse field and low absorption. Use Norris-Eyring when mean absorption is high, expect the two to disagree by around 10 percent in a treated room, and remember that neither describes coupled volumes, where the decay is a sum of exponentials (the common slopes model).

Rabbit holes worth the time

The meta-question to hold Every time a reverb sounds good, ask which of the four things it is doing: growing echo density at the right rate, distributing poles densely enough that the magnitude response has no periodic structure, decaying at a rate that varies correctly with frequency, or getting the first eighty milliseconds geometrically right. Every algorithm on this page is some combination of those four, and every failure mode is one of them missing. If you cannot say which one a given design is buying, you do not understand it yet.
// physics · anatomy · chambers · springs · plates · schroeder · lineage · fdn · allpass · iron · convolution · geometry · modern · build //