npm.io
1.1.3 • Published 6h ago

@audio/reverb-dattorro

Licence
MIT
Version
1.1.3
Deps
0
Size
10 kB
Vulns
0
Weekly
0

@audio/reverb-dattorro npm MIT

Dattorro plate reverb — input diffusers + figure-eight tank (JAES 1997 topology and taps)

npm install @audio/reverb-dattorro
import dattorro from '@audio/reverb-dattorro'

Input diffusion (4 series allpasses) feeding a figure-eight tank of two cross-coupled branches (allpass → delay → one-pole damping → decay → allpass → delay), each branch's output re-entering the other. Structure, delay lengths, and output taps are Dattorro's Table 1/2 ("Effect Design Part 1: Reverberator and Other Filters", JAES 45(9), 1997), reference rate 29761 Hz, scaled to fs. Modulation (chorus on the tank delays) is omitted — a static tank. Mono input sums to a single feed and both output taps blend into one channel; stereo input feeds the tank from (L+R)/2 and reads the two taps independently for width. Strictly stereo, not N-channel: only data[0]/data[1] are read and written.

dattorro(data, { decay: 0.6, damping: 0.3, mix: 0.3, fs: 44100 })
dattorro([left, right], { decay: 0.85, mix: 0.4 })  // stereo, longer tail
Param Default
decay 0.5 0..1 — tank feedback (tail length)
damping 0.3 0..1 — one-pole high-frequency loss in each tank branch
bandwidth 0.9995 input low-pass coefficient (pre-tank high-cut)
mix 0.3 0..1 — wet/dry blend
fs 44100 sample rate; delay lengths scale to it

Mutates data in place and returns it. Fresh tank state is allocated per call — no state carries across calls, reprocess the whole buffer each time.

Use when: plate/studio-reverb character, long shimmering tails.
Not for: short room ambience (use freeverb/schroeder) or a physically-modeled spring "boing" (use spring).


Part of the @audio/reverb family.

MIT audiojs

Keywords