@audio/reverb-schroeder
v1.1.3
Published
Schroeder reverb — 4 parallel feedback combs with LP damping + 2 series allpass diffusers
Readme
@audio/reverb-schroeder

Schroeder reverb — 4 parallel feedback combs with LP damping + 2 series allpass diffusers
npm install @audio/reverb-schroederimport schroeder from '@audio/reverb-schroeder'The classical Schroeder topology: 4 parallel feedback comb filters (prime delay lengths, ~29–35 ms at 44.1 kHz) each with one-pole LP damping on the feedback path, summed and run through 2 series allpass diffusers (g = 0.5, ~6–8 ms delays). Mono only — for stereo, call it once per channel with separate options objects (see below).
schroeder(data, { decay: 0.84, damping: 0.5, mix: 0.3, fs: 44100 })| Param | Default | |
|---|---|---|
| decay | 0.84 | 0..1 — comb feedback (reverb time) |
| damping | 0.5 | 0..1 — high-frequency loss in the comb feedback path |
| mix | 0.3 | 0..1 — wet/dry blend |
| fs | 44100 | sample rate; delay lengths scale to it |
Requires an options object — schroeder(data) throws. Unlike every other reverb in this family, schroeder has no default = {} on its second parameter, so a call with only data throws reading params.decay off undefined rather than falling back to defaults. Always pass at least {}.
Mutates data in place and returns it. Caches comb/allpass state on the options object itself (params._c/params._a) rather than allocating fresh state per call — this is the family's one stateful exception. Passing a fresh options object each call gives independent, freshly-seeded reverb (the common case); passing the same options object across successive calls continues the same comb/allpass state, which is how you'd stream chunks through one continuous tail. Don't reuse an options object across unrelated buffers unless you want that continuity — reuse it per logical stream instead.
Use when: the cheapest CPU budget in the family, or reproducing the specific Schroeder/Moorer-predecessor sound.
Not for: stereo width (use freeverb/dattorro/fdn) or streaming without manual state-object management.
Part of the @audio/reverb family.
MIT © audiojs
