๐ Reverb Overview
The following page gives an overview of different reverbator engines provided by fluidsynth and selectable via setting synth.reverb.engine. It concentrates on objective criteria, although a quality assessment is attempted below. Sound examples are provided so you can make up your own opinion. Listening with headphones is strongly recommended! The reverb settings of all examples below share those settings:
-o synth.reverb.room-size=0.7 -o synth.reverb.width=1 -o synth.reverb.damp=0 -o synth.reverb.level=0.7
We start with the dry versions of the provided sound examples (the MIDIs may be found here):
Example 1 - Piano:
Example 2 - Snap:
Example 3 - Water drops + Triangle:
1. Freeverb
Freeverb was the reverb engine fluidsynth had used up to including version 2.0.9 and was based on: https://ccrma.stanford.edu/~jos/pasp/Freeverb.html
It was added back to fluidsynth in version 2.6.0 as comparison baseline for the other reverbators.
The reverbator receives a monophonic input signal, which then passes 8 parallel comb filters and finally 4 allpass filters.
The design of the reverbator is not capable of processing a stereo input signal.
Due to its design and the usage of comb filters in particular, the reverb introduces a resonance tone on mid- to high-frequency tones. This is often referred to as "ringing" and perceived unpleasant.
Freeverb is slightly more CPU-expensive than FDN.
Example 1 - Piano:
Example 2 - Snap:
Example 3 - Water drops + Triangle:
2. FDN
Due to its ringing nature, Freeverb was replaced by "Feedback Delay Networks"-reverbator in version 2.1.0. It's based on: https://ccrma.stanford.edu/~jos/pasp/FDN_Reverberation.html
FDN receives a monophonic input signal and - as the name suggests - routes it through several delay lines. Fluidsynth's default implementation makes use of 8 delay lines, although there is a compile-time switch to allow using 12 delay lines, that slightly increases the reverb's quality by an increased frequency density. However, it also increases CPU usage beyond what the previous Freeverb would have required, so it was decided to use only 8 delay lines.
To fight ringing and high-frequency reverb "reflections", the delay lines are modulated with a sine. While this is generally inaudible, it can be perceived on certain high-frequent usually clear sounding instruments, like a triangle, causing a slight vibrato effect to be applied to them.
FDN tends to add unnaturally sounding distortions for samples that have a wide frequency range. Take a listen to the "Snap" example 2.
FDN is less CPU-expensive than Freeverb and is not capable of receiving a stereo input signal. The reverb settings (room-size, width, damp, level) were tuned and scaled to match up well with the behavior of the original Freeverb.
Example 1 - Piano:
Example 2 - Snap:
Example 3 - Water drops + Triangle:
3. Lexverb
This reverb engine is inspired by Lexicon reverbators and is available since fluidsynth 2.6.0. It's the first reverb engine capable of processing a stereo input signal (though due to limitations by fluidsynth, it still only receives a monophonic input signal).
There are 10 allpass filters involved: Lexverb routes the left input channel through 5 allpass filter, and the right input channel through another 5 allpass filters. Delay lines between these filter chains feed a part of the left-wet signal back to the right filter chain and vice versa.
Due to the use of only allpass filters, the gain of the individual frequencies is not changed, only their phase is messed around with. It's similar to the reverb found in many Nintendo64 games... and possibly other stuff from the 90s.
Lexverb currently suffers from the fact that it receives a monophonic input signal, causing the wet-reverb sound to be effectively panned to the center, instead of bouncing left and right.
Lexverb is CPU-cheaper than FDN.
Example 1 - Piano:
Example 2 - Snap:
Example 3 - Water drops + Triangle:
4. Dattorro
This "plate-class" reverb engine is named after Jon Dattorro and based on this paper: https://ccrma.stanford.edu/~dattorro/EffectDesignPart1.pdf
It is available since fluidsynth 2.6.0. A monophonic input signal is fed into a sophisticated network of delay lines and allpass filters to create a rich and colorful reverb sound.
Dattorro is a bit more CPU-expensive than Freeverb.
Example 1 - Piano:
Example 2 - Snap:
Example 3 - Water drops + Triangle:
5. Signalsmith
This is a FDN based reverb engine, similar to Fluidsynth's original FDN reverb, but more sophisticated and better engineered.
It is available since fluidsynth 2.6.0, but only available when fluidsynth was compiled with Signalsmith Audio Basics support - the same library that also provides the limiter implementation. Signalsmith reverb receives a stereo input signal (though due to limitations by fluidsynth, it still only receives a monophonic input signal) and creates a rich and colorful reverb sound similar to Dattorro.
It performs better on transient and high-frequent sounds.
Signalsmith is significantly more CPU-expensive than Dattorro. Furthermore, its runtime varies by a factor of 10 and might therefore not be suited for real-time performances.
Example 1 - Piano:
Example 2 - Snap:
Example 3 - Water drops + Triangle:
Comparison
Architecture & Design
| Freeverb | FDN | Lexverb | Dattorro | Signalsmith | |
|---|---|---|---|---|---|
| Algorithm family | Schroeder-Moorer | Jot FDN | Lexicon-inspired allpass network | Plate reverb | Diffused FDN |
| Core structure | 8 parallel combs + 4 series allpass, separate L/R banks, Flowchart | 8 modulated delay lines + feedback matrix , Flowchart | 10 allpass filters (5/side) + 2 LโR cross-delay lines, Flowchart | Predelay + 4 input allpass diffusers + 2 tank loops + 14 output taps, Flowchart | 8-ch FDN + 4 Hadamard diffusion stages + early reflections stage |
| Feedback/mixing matrix | None (parallel combs) | A = P โ (2/N)ยทuuแต (Jot/Householder) |
Implicit via cross-feedback delays | Fixed plate tank topology | Householder (feedback) + Hadamard (diffusion) |
| Diffusion | 4 allpass per side (Freeverb approximation) | Input tone corrector only; matrix provides diffusion | 5-stage allpass cascade per L/R side (Schroeder) | 4-stage input diffuser + 2 decay diffusions per tank | Explicit pre-diffusion and post-diffusion |
| Modulation | None | All 8 lines, sinusoidal LFO, 1st-order allpass interpolation | None | None | 3 of 8 channels, sinusoidal LFO, 7th-order Lagrange interpolation |
| Damping filter | 1-pole LPF inside each comb | 1-pole LPF per line | 1-pole LPF on AP4, AP9 and both cross-delays | 1-pole LPF on input (bandwidth) + per-tank LPF | Biquad low-shelf + high-shelf per FDN channel; separate LP/HP output cut |
| Early reflections | No | No | No | No | Yes |
| Stereo input capable | ๐ด Mono-in by design | ๐ด Mono-in by design | ๐ข Stereo capable (โ ๏ธ fluidsynth feeds mono currently) | ๐ด Mono-in by design | ๐ข True stereo in/out (โ ๏ธ fluidsynth feeds mono currently) |
| Denormalisation | DC offset injection | DC offset injection | Not handled | Not handled | Not handled |
| CPU cost | More than FDN | Less than Freeverb | Cheapest | Slightly more expensive than Freeverb | Most expensive |
Quality Assessment
| Freeverb | FDN | Lexverb | Dattorro | Signalsmith | |
|---|---|---|---|---|---|
| Tail smoothness | ๐ด Poor | ๐ก Fair, but modulated | ๐ข Clean | ๐ข Clean | ๐ข Excellent |
| Ringing | ๐ด High (comb resonances) | ๐ก Low | ๐ข Minimal | ๐ก Low | ๐ข Minimal |
| Transient broadband handling | ๐ก Fair | ๐ด Distorted | ๐ข Good | ๐ข Good | ๐ข Excellent |
| Echo density | ๐ด Poor | ๐ก Fair, no pre-diffusion | ๐ก Sparse, no pre-diffusion | ๐ข Good (4-stage input diffuser) | ๐ข Excellent (multi-stage) |
| Stereo output | ๐ก Separate L/R comb banks | ๐ก ยฑ1 gain vector providing functional stereo, but not deeply decorrelated | ๐ข Cross-coupled stereo by design | ๐ก 14-tap decorrelated L/R output | ๐ข Full stereo by design |
| Spectral character | Colored (comb resonances) | Colored, sometimes overloaded or synthetic | Flat & simple | Rich, colorful (plate character) | Rich, colorful |
| Best for | Legacy / compatibility | ? | CPU-constrained use, nostalgic video game sound | Smooth long reverbs | Rich creative "real-room" reverb, acoustic realism |
| Worst for | High-frequent solo instruments, long decay | Broadband transients (snaps, clicks) | ? | ? | Real-time and live-performances |
| Overall | โญโญ | โญโญโญ | โญโญโญโญ | โญโญโญโญโญ | โญโญโญโญโญ |