Jon Dattorro reverb implementation in C (by El Visio 2022)
The algorithm: https://ccrma.stanford.edu/~dattorro/EffectDesignPart1.pdf
This reverb is a fine-tuned IIR feedback delay network with lots of magic numbers involved (faithful to the original paper).
The basic components used to implement the network:
- delay lines
- all pass filters (keeps amplitude per frequency but messes with phase)
- low pass filters (pre-reverb filter and damping)
Input signal flow (function DattorroVerb_process):
- Pre-delay
- Input filter (low pass)
- Input diffusor x 4 (all pass filter)
- Signal splits into two halves of the "reverbation tank", for each:
- Cross feedback from post damping delay (vi) of the other half
- Decay diffusor 1 (modulated all pass filter)
- Pre damping delay
- Damping (low pass filter)
- Decay diffusor 2 (all pass filter)
- Post damping delay
The final reverbated output is calculated by tapping multiple delay lines in the network.
Call functions DattorroVerb_getLeft and DattorroVerb_getRight for 100% wet stereo signal.