Four-model dispersive spring reverb · Fireball Audio
A spring reverb is two transducers and a few feet of coiled wire. What makes it sound like nothing else on earth is that the wire is dispersive: high frequencies travel along it faster than low ones. Hit it and the top of the sound comes back first, while the bottom is still on its way. Stretched over tens of milliseconds, that lag is the boing.
That is also the one thing a convolution of a spring cannot give you. A convolution is a photograph of what one tank did on one afternoon at one setting. Dispersion is not a sound, it is a behaviour — and you cannot turn a behaviour up.
So Dub Demon builds the wire instead of photographing it. Each delay line runs through two cascaded allpass chains, up to 1,556 sections of them, sized so the low end genuinely arrives last across the whole band rather than collapsing into a thump below 250 Hz the way a short first-order chain does. And you do not tune it by ear: you tell it how long the chirp should be, in milliseconds, and the coefficient is solved from that.
Then it wraps the tank in a regeneration loop that encloses the pre-delay, which turns the same instrument into two. At one end of the Pre-Delay knob it is a tight amp spring; at the other it is a dub echo you can ride for as long as you want. Feedback is safe at maximum by construction — there is a tanh inside the loop, so loop gain falls as level rises and the thing settles into a limit cycle. Nothing is limiting it. It simply cannot run away.
The instrument at the top, what it does at the bottom. Values read off lit amber windows, because every number this machine reports should look like a number a machine reported.
A reverb scatters a sound into a cloud that arrives all at once and then thins out. A spring does something narrower and stranger: it sends the sound down a wire that different frequencies travel at different speeds, so the thing that comes back is sorted. Everything below is in service of that one behaviour.
The high chain uses a negative coefficient, which disperses downward — lows come back last, which is what a spring does. The low chain uses a positive one and contributes a nearly flat delay with a slight rise. A single cascade can only get one side of that right.
up to 580 + 976 sections, per line
Boing is a length of time. The cascade coefficient is solved from it: a = [ −PC ± (P²C² − P² + 1)^½ ] / (P + 1), taking the negative root of smaller magnitude. Negative disperses downward; small magnitude spreads the chirp across the band instead of dumping it all in the bass.
25 – 90 ms of spread, by model
Every model band-limits at its own pickup, which is why they sound like different boxes rather than one box with the tone knob moved. It is also what lets the cascade run decimated behind an anti-alias pair without losing anything that was ever there.
60 Hz – 6 kHz across the set
Regeneration is injected before the pre-delay rather than after the tank, so the loop encloses both. Repeats are spaced by pre-delay plus tank, not by the tank alone. At Pre-Delay 0 that is dense metallic sustain; wound up, it is an echo with a tempo.
0 – 120 ms, bounded at any setting
Each model has its own line count, its own line lengths, its own transducer band and its own drive knee. Below, each one is shown with the chirp turned down and turned up, drawn to the same scale as every other figure on this page — so you can compare any model against any other by looking only at what changed.
Two lines a hand-span apart and the widest usable top end of the set. The drive knee is the lowest of the four, so this is the model where Drive is a character control rather than a level trim — it starts to crunch while the others are still polite. Snares, rimshots, anything you want to hear the metal on.
Six lines packed between 30 and 40 ms, so the return is a wash rather than a pair of distinct arrivals. It is band-limited far lower than the rest and carries a deliberate dip at 300 Hz, which is what keeps something this dense from turning to mud. Dub, and anything that has to sit under a vocal.
Thirty-three and thirty-seven milliseconds — four apart, so the two arrivals fuse into one rather than reading as two. That fusing is the whole character: it is the most singular, most obviously one object of the four. Guitars, keys, and anything that should sound like it is in a cabinet.
Not modelled on anything. Twenty and fifty milliseconds — a thirty millisecond gap against Champion Grampa's eight — so you hear two separate arrivals rather than one thickened one. Widest band, lowest high-pass, longest decay and the biggest cascade in the set. Turn Boing up and Width past 1 and it stops sounding like a spring and starts sounding like a place.
Each control gets the same two pictures: the tank's own return with that control turned down, and with it turned up, drawn to the same scale so the difference between them is the real difference. Once you have read one you can read all of them by looking only at what changed.
Every picture below was produced by running the plugin's own DSP at the two settings named underneath it and measuring what came out. None of them is an illustration.
On the longer views — Decay, most of Motion, Feedback and FB On — the teal line is left off on purpose. Once repeats start stacking up, the loudest moment in a band is a later repeat rather than the first return, and a line drawn through those would be a measurement of the wrong thing.
The Motion controls are all drawn on the same test, because their whole subject is time and a still picture cannot show speed directly: four hits, 600 ms apart, with the decay shortened so each return finishes before the next one starts. On those you are comparing the four returns against each other rather than the left picture against the right one. When they are identical copies, nothing is moving.
Chooses which of the four tanks you are playing. This is not a macro over one engine — the line count, the line lengths, the transducer band, the cascade size, the drive knee and in one case the filters all change. A preset moved onto another model is a different sound, not the same sound shifted, which is why the presets are grouped by the model each was voiced on.
How: Each model carries its own table row. Switching rebuilds the cascade coefficients and the per-line loop gains, but both anti-alias filters run at the full rate in every model, so every model has the same 16-sample latency and switching does not shift anything in time.
How hard the tank is hit. Low is clean and open. High compresses the return, thickens the middle and eventually adds the ragged edge a real tank gets when you overdrive the send into it. Each model breaks up at a different point, so this knob sounds like four different controls depending on what Model is set to.
How: A tanh at the input, scaled against the model's own drive knee so turning it up is character rather than level. The knee runs from 0.45 on Champion Grampa to 1.60 on Orbital — a factor of three and a half, which is why one model crunches where another stays clean.
The control this whole plugin exists for. It sets how far apart in time the top and the bottom of a sound come back. Down, the return is prompt and reverb-like. Up, a hit turns into a descending doi-oi-oing that takes most of a tenth of a second to finish arriving. Watch the teal line lean over in the two pictures — that is not a stylisation, it is the measurement.
How: Boing declares a chirp length in milliseconds; the allpass coefficient is solved from it at the rate the cascade actually runs, then interpolated from −0.15 to that solved value. Solving at the full rate and running decimated would give a chirp D times too short.
How long it rings. Short is a slap with a tail on it; long is a pad you can play over. It is real seconds — asked for and delivered — so four seconds means the tail is 60 dB down at four seconds, not somewhere near it. Unlike almost every spring plugin, turning it up does not make it darker: decay changes loop gain only.
How: Per line, not shared: g = 10^(−3·T_loop / RT60), where T_loop is that line's own length plus the cascade's group delay. Six lines of different lengths sharing line 0's gain is how a tank runs away. The 1.11 trim covers what the damping filter and the tanh take out per pass.
How bright the tank comes back. This is damping inside the loop, not an EQ across the output, so the tail gets darker as it decays rather than being uniformly dull from the first millisecond — which is what real absorption does and what a post-EQ cannot fake. On Orbital it runs out of band well before it runs out of range: above about 2 kHz there is nothing left up there to let through.
How: A one-pole low-pass inside each line's feedback path, running at the cascade's rate and clamped to 0.45 of it. Inside the loop, so every lap applies it again.
How fast the dispersion moves when the LFO is not locked to your song. Slow is a tank that will not sit still — the chirp lengthens and shortens over several seconds and no two hits come back quite the same. Fast is an audible warble on the tail. The knob shows Hz when SYNC is off and a note division when it is on; it is the same knob driving two different parameters. In the pictures: four hits, 600 ms apart. At the slow end all four come back identical. At the fast end no two of them match.
How: A free-running phasor that keeps advancing even while the control is locked, so switching SYNC off does not jump the phase.
How far the dispersion is moved. At zero the tank is a fixed object. A little is the thing that stops a long tail sounding like a loop. All the way up and successive hits genuinely land differently. The two pictures are the same hit caught at the two ends of the modulator's travel, with Depth at 100 %. Look at the teal line: the distance between those two leans is how far this control moves the chirp.
How: Modulates the solved allpass coefficient by ±25 % of itself, then clamps to the range that still disperses downward. It moves the chirp length, not the pitch — there is no delay-line modulation here and so no chorusing.
Locks the dispersion modulator to your song instead of running free. Locked, it follows the host's position, so the movement lands in the same place on every pass and in every take. It also means the movement stops while the transport is stopped — deliberate, and worth knowing before you decide it is broken. Four hits again: the pair differs because the two are running at different speeds, which is the point of locking one of them.
How: Swaps the free phasor for a transport-locked one. The free phasor keeps running underneath, so switching back does not jump.
Which note the locked dispersion modulator moves on. This is what the LFO Rate knob reads out once SYNC is engaged. Half notes are a slow swell across a bar; sixteenths are a shimmer that tracks the hi-hats.
How: Four host-locked phasors at 2n, 4n, 8n and 16n are supplied to the DSP; the division picks one. They advance on the host's musical position rather than on a counter, so an edit or a locate lands in phase.
How far the wet signal swings across the stereo field. At zero it sits still. All the way up, the peak of the swing puts the whole tank in one speaker and silence in the other. It moves only the wet — your dry signal never moves, so this is width and motion rather than a pan on the track.
How: Equal-power, via an angle rather than a pair of gains, so the total stays constant across the sweep instead of dipping in the middle.
Which note the auto-pan swings on when it is locked to your song. This is the second, entirely separate modulator: the dispersion LFO can be free while this one is locked, or the other way round. Nothing couples them.
How: Reads the same four transport phasors as the LFO but chooses among them with its own control, so the two can sit on different divisions.
Whether the auto-pan follows your song or runs at its own speed in Hz. Locked is for anything rhythmic. Free is for the slow three-quarters-of-a-minute drift that makes a long tail feel like it is in a room rather than in a plugin.
How: Same swap as the LFO's, made independently. Its free phasor also keeps running while locked.
The auto-pan's speed when it is not locked. This is what the Pan Rate knob reads out with SYNC off. Down at a hundredth of a hertz the image takes a minute and a half to cross and back, which you will not hear as movement so much as unease.
How: A free-running phasor, independent of the dispersion LFO's.
The gap before the tank hears anything. A little keeps the reverb from swallowing the attack of what you played. A lot is a slap. Because the regeneration loop is wrapped around this and not just around the tank, Pre-Delay also sets the spacing of the repeats — which is the difference between metallic sustain and an echo with a tempo.
How: A plain delay line ahead of the tank, inside the regeneration path. 120 ms at 192 kHz is the buffer size, so the full range is available at every supported rate.
How wide the return is. The two pictures below show the side signal — the part that exists only in stereo. At zero there is none: both speakers get the same thing. At 1 you get the tank's own natural split, which is real, because the lines are genuinely different lengths with genuinely different dispersion. Past 1 that difference is boosted. It folds to mono safely at any setting.
How: 0 to 1 crossfades from mono to the lines' own split; 1 to 2 is a true M/S boost. Width only ever adds side, never subtracts mid, so the mono sum is unchanged whatever it is set to — verified sample for sample, not asserted.
Dry against wet. At zero you hear only what you put in. At a hundred you hear only the tank, which is what you want on an aux send — and there is a lock beside this knob for exactly that case, so changing presets on a send does not suddenly dump dry signal into a bus that already has it.
How: A straight crossfade on the output. The wet path is scaled so that 100 % sits at a sensible level against the dry rather than leaping in volume.
How many times round. This is the dub control. At zero you have a spring reverb. Turned up, the tank feeds itself through the pre-delay and becomes an echo that chirps a little further every pass — and because each pass loses a little top end, the repeats settle under a mix instead of stacking up and fighting it. At 100 % with a long decay it will sustain until you open the loop.
How: Injected before the pre-delay so the loop encloses it. Bounded by construction: a tanh limits what the loop can inject to ±0.62 whatever the tank is doing, so loop gain falls as level rises. It settles into a limit cycle. The per-line runaway guard is the second net, not the first.
Opens the regeneration loop. This is the panic button and the performance control at the same time: wind Feedback up until it is singing, then click this to let the whole thing fall away. It does not chop — the tail decays out over about ten milliseconds, so it sounds like letting go rather than like a mute.
How: A smoothed gate on the feedback amount with a ~10 ms time constant, so the kill is click-free. It is a gate on the injection, not a mute on the output: what is already in the tank rings out normally.
Plus a neutral Init at the top of the list. A preset carries its model with it, because moving one onto another model gives you a different sound rather than the same sound shifted — unless you lock the model first, which is exactly what the lock is for.