v1.6.1 - Reverb Performance
Reverb performance - an Eco engine for constrained targets and direct control over convolution IRs, both prompted by real-world feedback from a synthesizer firmware project (#2).
Eco quality mode
AlgorithmicReverb::setQuality(Quality::Eco)runs a reduced engine: 8 FDN lines (alternate base delays keep the full 29.7-160 ms span, per-line gains keep T60 exact), control-rate modulation, linear interpolation in the modulated allpasses, a single-stage input scatter and a leaner output stage.- Measured about 3.3x cheaper per block than the default engine, with matched tail loudness and the same control set.
- The default
Fullengine is bit-identical to v1.6.0; Eco is opt-in and applied like a preset change (at the next block, with a state reset).
Convolution reverb IR shaping
setDecayScale(0.25-2)rescales the impulse response's own T60, estimated from its Schroeder decay curve, from the direct sound onward. Values below 1 also trim the now-silent tail, so shorter decays cut convolution cost roughly in proportion.setStretch(0.5-2)resamples the IR tape-speed style: larger and darker above 1, smaller and brighter below.- Both always reshape the IR as loaded (never cumulatively), compose predictably, and rebuild/publish the convolver bank atomically, exactly like
loadIR(). - State: new tolerant keys (
quality,decayScale,stretch); blobs from older versions load unchanged.
DSParkLab
- Quality selector on the Reverb, Decay Scale / Stretch sliders on the Convolution Reverb, for instant A/B.