A Python Implementation of the Datorro Reverb
If you’re interested in implementing high-quality reverb in your audio projects, the Dattorro Reverb1 is an excellent candidate to explore. The Dattorro Reverb, even though the algorithm was first introduced decades ago, still holds up remarkably well in terms of sound quality and versatility.
Background: Why the Dattorro Reverb?
When I set out to design a reverb for my audio processing project, I started by testing several state-of-the-art plugins and algorithms. One that particularly caught my attention was the Dattorro Reverb, which has somewhat “leaked” from professional environments. The algorithm produces a lush, immersive reverb sound.
As with most reverb algorithms, a lot of magic numbers are involved. These values, carefully chosen through experimentation, are essential for creating a chaotic yet natural sound, where no aspect of the reverb feels too predictable or rigid.
Understanding the Dattorro Reverb
The Dattorro Reverb is built around a feedback delay network (IIR) with various filtering stages, the signal flow is as follow:
- Pre-Delay: Adds a slight delay before the reverb starts.
- Input Filter: A low-pass filter shapes the signal.
- Input Diffusor: Four all-pass filters add diffusion.
- Reverberation Tank (split into two parts): • Cross Feedback: Each half feeds into the other, creating a dense reverb. • Decay Diffusors: Modulated and standard all-pass filters further diffuse the signal. • Damping: Low-pass filtering removes high frequencies from the reverb tail.
- Output: The reverb is built from multiple delay taps, creating a lush tail.
Sound examples
Here are sound examples of the Datarow reverberation applied to a drone sound from UVI Cinematic Shades, with a long decay setting of 0.9.
Notable Limitation
One drawback is that L and R channels are summed at the input, meaning it’s not a “true stereo” reverb. You lose some signal information since the side is discarded early on.
Final Thoughts
Despite the mono summing issue, the Dattorro Reverb delivers exceptional sound quality and is worth experimenting with. It can also serve as a strong foundation for a true stereo reverb by modifying the feedback network.
You can find my Python implementation on GitHub here or in the code section below. The implementation has been thoroughly tested to ensure it closely follows the original algorithm.
|
|