Skip to content

Multi reverb engine support#1760

Open
derselbst wants to merge 68 commits intomasterfrom
multi-reverb-support
Open

Multi reverb engine support#1760
derselbst wants to merge 68 commits intomasterfrom
multi-reverb-support

Conversation

@derselbst
Copy link
Copy Markdown
Member

@derselbst derselbst commented Feb 22, 2026

This PR implements my idea posted in #1157: Providing multiple built-in reverb engines. In effort to fix problems #1496 and #1215.

TL;DR: Check out the new reverb overview with audio samples in the API docs.


This PR currently adds 3 additional reverb engines to fluidsynth, which can be selected via the new setting synth.reverb.engine or via the -R flag for convenience:

  • -R fdn - The default FDN reverb
  • -R free - Fluidsynth's pre-2.1.0 reverb "Freeverb"
  • -R lex - LEXverb
  • -R dat - Dattorro Reverb

The existing FDN was used to derive a C++ base class from it, which every engine inherits from, to provide a common interface for rvoice_mixer.

Users who are interested in testing the reverbs themself - with optional parameter tweaking - can do so by building the renderReverbOverview CMake target, which will render audio to build/test/manual/reverb/.

Implementation details of the reverbators can be obtained from the liked papers from the API docs, or from the source code / header file, which may or may not include a block chart in ASCII art.

Breaking Changes

  • In version 2.4.0 the default synth.reverb.damp setting was changed to 0.3. After having played around a lot with reverb in the last weeks, I conclude that this was a mistake. At least for the default FDN reverb, damp=0.3 always sounds too much like a garage or metal bucket to me. This PR changes the default damp value back to 0.

TODO

  • I don't like the way the damping parameter affects LEXverb: it doesn't really "damp" it rather "undoes" the effect of synth.reverb.level - is there a better approach to this?
  • The logic in the synth involving with_reverb, fluid_synth_reverb_on() etc should be revised / simplified
  • Clarify, how the different reverb engines should be selected: with an int or string setting? (int setting would be backward compatible, but numbers may change for future versions; string setting would be a breaking change, but more future safe, or a completely new string setting...)
  • General reverb settings rehearsal / tuning for LEXverb
  • General reverb settings rehearsal / tuning for Dattorro
  • Clarify, which of those reverb engines to keep in fluidsynth
  • Clarify, which of those reverb engines to become default
  • Out of scope for this PR but to be kept in mind: Revive Support stereo fx send to LADSPA #1170 - Ability for stereo fx

I should add that ChatGPT-5.2 was a huge help and time safer to get all those different implementations plugged together and integrated into fluidsynth's 4-reverb-settings universe. Something that was unthinkable when I initially brought up this topic on our mailing list almost four years ago.

Resolves #1157, #1496, #1215

Copilot AI and others added 30 commits February 22, 2026 16:37
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
@jimhen3ry
Copy link
Copy Markdown
Contributor

Congratulations on breaking through with an item that has been on your wish list for a long time! I know this will be a very welcome enhancement in the virtual organ world. I look forward to enhancing the Miditzer so that it can offer access to a menu of reverb types.

I think the addition of a synth.reverb.type string setting for selecting the reverb engine is most in keeping with other settings of this type. The default would be FDN, so not breaking if no setting is made. synth.reverb.active would continue to enable/disable the reverb engine regardless of the engine selected. The advantage of a string setting from my perspective as an app developer is that it allows me to query FluidSynth for the available reverb engines and build a dynamic menu of reverb engine choices. If integers are used as selectors, I would keep a static table of the names that correspond to the selector.

@spessasus
Copy link
Copy Markdown
Contributor

One thing I thought of, something I couldn't find in the current API.
Maybe fluidsynth could have a method for split dry signals to allow others to implement their own processors?

That is, something like fluid_write_float_split which instead of lout and rout would have dry (ldout), reverb (lrout) and chorus (lcout), where it just routes the dry signal, allowing users to directly process it themselves.

Thoughts?

@derselbst
Copy link
Copy Markdown
Member Author

One thing I thought of, something I couldn't find in the current API. Maybe fluidsynth could have a method for split dry signals to allow others to implement their own processors?

That is, something like fluid_write_float_split which instead of lout and rout would have dry (ldout), reverb (lrout) and chorus (lcout), where it just routes the dry signal, allowing users to directly process it themselves.

Thoughts?

fluid_synth_process(), use case 2

@derselbst
Copy link
Copy Markdown
Member Author

Based on @jimhen3ry suggestion, I've added a string based setting to switch reverbators and called it synth.reverb.engine (instead of .type because I kept using "engine" throughout the documentation so far). Values so far are: fdn, free, lex, dat

I'm intending to bring this up on our mailing list in the upcoming days.

@spessasus
Copy link
Copy Markdown
Contributor

I think that it should be noted for FDN that it can create distortion in some cases (like the finger snap sample).
Current description only mentions distortion for freeverb, but not FDN and some users may not listen to audio samples and just go off the description.

Also:

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 beyound what the previous Freeverb would have required, so it was decided to use only 8 delay lines.

Wouldn't it make sense for FDN to default to 12 delay lines now, since there are even more CPU-expensive engines? (like Dattorro)

@derselbst
Copy link
Copy Markdown
Member Author

I think that it should be noted for FDN that it can create distortion in some cases

I'll do that.

Wouldn't it make sense for FDN to default to 12 delay lines now, since there are even more CPU-expensive engines? (like Dattorro)

I see no benefit in increasing it to 12 delay lines. Compared to the Lexverb and Dattorro, FDN is way inferior. Also, the regression tests show that it has quite some impact and I do know at least one user around here who wouldn't be quite happy about unnecessary changes in sound. (PS: To get a feeling for the values below: while messing around with Lexverb's damping I saw an SNR of 30 - 40, but never less than that):

Details
File                                                                            SNR          RMS          ABS
SoundFont-Spec-Test/sf_spec_test.wav                                          27.34     0.005900     0.338623
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
awe32_nrpn/Altitude.wav                                                       16.75     0.019049     0.188263
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
awe32_nrpn/HYBRID Collage NRPN.wav                                            11.75     0.040511     0.536163
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
awe32_nrpn/HYBRID Collage wah-guitar.wav                                      28.77     0.001370     0.009827
  SNR below threshold (60)
  RMS above threshold (0.0001)
awe32_nrpn/The Nervous Filter 1mgm.wav                                          inf     0.000000     0.000000
awe32_nrpn/The Nervous Filter GM_Roland.wav                                     inf     0.000000     0.000000
awe32_nrpn/The Nervous Filter GeneralUser-GS.wav                                inf     0.000000     0.000000
awe32_nrpn/Uplift-fixed.wav                                                    8.59     0.093547     0.645416
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
awe32_nrpn/filter_NRPN_test.wav                                                 inf     0.000000     0.000000
dsp_interp/sample interpolation test.wav                                        inf     0.000000     0.000000
dynamic-sample-loading/DrTebz_dynamic-sample-loading_off.wav                    inf     0.000000     0.000000
dynamic-sample-loading/DrTebz_dynamic-sample-loading_on.wav                     inf     0.000000     0.000000
exclusive_class/MIDInotecut0.wav                                                inf     0.000000     0.000000
exclusive_class/MIDInotecut1.wav                                                inf     0.000000     0.000000
exclusive_class/MIDInotecut2.wav                                                inf     0.000000     0.000000
exclusive_class/e1m1_GeneralUser2_notecut0.wav                                  inf     0.000000     0.000000
exclusive_class/e1m1_GeneralUser2_notecut1.wav                                  inf     0.000000     0.000000
exclusive_class/e1m1_GeneralUser2_notecut2.wav                                  inf     0.000000     0.000000
exclusive_class/e1m1_gzdoom_notecut0.wav                                        inf     0.000000     0.000000
exclusive_class/e1m1_gzdoom_notecut1.wav                                        inf     0.000000     0.000000
exclusive_class/e1m1_gzdoom_notecut2.wav                                        inf     0.000000     0.000000
exclusive_class/exclusive class cutoff speed.wav                                inf     0.000000     0.000000
exclusive_class/percussion note cutoff.wav                                      inf     0.000000     0.000000
exclusive_class/percussion-test.wav                                             inf     0.000000     0.000000
iir_filter/1415_the-nervous-filter.wav                                          inf     0.000000     0.000000
iir_filter/1417_filter-envelope-noise.wav                                       inf     0.000000     0.000000
iir_filter/1424_clicks-on-ModEnv-FilterFc-change.wav                            inf     0.000000     0.000000
iir_filter/1427_high-Q-note-cutoff.wav                                          inf     0.000000     0.000000
iir_filter/1481_cutoff-resolution.wav                                           inf     0.000000     0.000000
limiter/Uplift-limiter_a1.wav                                                  8.20     0.087252     0.599091
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
limiter/Uplift-limiter_a1_r0.wav                                               8.32     0.091112     0.645416
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
limiter/Uplift-limiter_a1_r250.wav                                             8.18     0.079642     0.556152
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
limiter/Uplift-limiter_a50.wav                                                 8.13     0.084119     0.580231
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
limiter/Uplift-limiter_default.wav                                             8.18     0.086931     0.596863
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
limiter/Uplift-limiter_h0_lim06.wav                                            7.61     0.070919     0.520721
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
limiter/Uplift-limiter_lim06.wav                                               7.53     0.067333     0.520721
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
limiter/Uplift-limiter_r0.wav                                                  8.29     0.090693     0.645416
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
midi-bank-select/9 - On 'Til Morning.wav                                      12.12     0.018285     0.148407
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
midi-bank-select/Dance_GM.wav                                                   inf     0.000000     0.000000
midi-bank-select/Dance_GM2.wav                                                  inf     0.000000     0.000000
midi-bank-select/Dance_GS.wav                                                   inf     0.000000     0.000000
midi-bank-select/Dance_XG.wav                                                   inf     0.000000     0.000000
midi-bank-select/Dance_original.wav                                             inf     0.000000     0.000000
midi-bank-select/MM6_-_MrX2010XG.wav                                          15.64     0.054523     0.309937
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
portamento/1TOWOW.wav                                                           inf     0.000000     0.000000
portamento/1TOWOW_reduced_to_A3_C4.wav                                          inf     0.000000     0.000000
portamento/1TOWOW_reduced_to_A3_C4_linear.wav                                   inf     0.000000     0.000000
portamento/3 - Turn Up, Strut In, Chill Out (XG).wav                            inf     0.000000     0.000000
portamento/6 - Galactic Invasion (XG).wav                                       inf     0.000000     0.000000
portamento/Descent_Game08.wav                                                   inf     0.000000     0.000000
portamento/Descent_Game08_linear.wav                                            inf     0.000000     0.000000
portamento/MM6_-_MrX2010XG.wav                                                  inf     0.000000     0.000000
reverb/1455_dry.oga                                                             inf     0.000000     0.000000
reverb/1455_tdat.oga                                                            inf     0.000000     0.000000
reverb/1455_tfdn.oga                                                           4.98     0.021182     0.180939
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/1455_tfree.oga                                                           inf     0.000000     0.000000
reverb/1455_tlex.oga                                                            inf     0.000000     0.000000
reverb/1496_dry.oga                                                             inf     0.000000     0.000000
reverb/1496_tdat.oga                                                            inf     0.000000     0.000000
reverb/1496_tfdn.oga                                                          -1.49     0.015262     0.232117
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/1496_tfree.oga                                                           inf     0.000000     0.000000
reverb/1496_tlex.oga                                                            inf     0.000000     0.000000
reverb/DK64_sparse04_0.0.wav                                                  16.96     0.003943     0.034210
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/DK64_sparse04_0.5.wav                                                  17.26     0.003820     0.032104
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/DK64_sparse04_1.0.wav                                                  16.74     0.004081     0.032867
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/DK64_sparse04_10.0.wav                                                  9.90     0.009768     0.075714
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/DK64_sparse04_100.0.wav                                                 7.55     0.013828     0.107452
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/DK64_sparse04_5.0.wav                                                  11.85     0.007522     0.057190
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/DK64_sparse04_50.0.wav                                                  7.84     0.013203     0.102631
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/mrbumpys_rev_width_test_0.0.wav                                         8.48     0.009213     0.082245
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/mrbumpys_rev_width_test_0.5.wav                                         8.65     0.008988     0.086426
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/mrbumpys_rev_width_test_1.0.wav                                         8.12     0.009731     0.095734
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/mrbumpys_rev_width_test_10.0.wav                                        3.57     0.024110     0.193085
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/mrbumpys_rev_width_test_100.0.wav                                       2.71     0.034165     0.259186
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/mrbumpys_rev_width_test_5.0.wav                                         4.55     0.018517     0.156586
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/mrbumpys_rev_width_test_50.0.wav                                        2.80     0.032620     0.249176
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_dry.oga                                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.0_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.0_tfdn.oga                17.35     0.002632     0.080933
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.0_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.0_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.3_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.3_tfdn.oga                17.51     0.002584     0.091461
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.3_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.3_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.7_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.7_tfdn.oga                18.12     0.002404     0.090973
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.7_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d0.7_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d1_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d1_tfdn.oga                  24.06     0.001211     0.052460
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d1_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w0.0_d1_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.0_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.0_tfdn.oga                16.91     0.002773     0.077393
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.0_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.0_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.3_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.3_tfdn.oga                17.18     0.002688     0.076904
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.3_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.3_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.7_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.7_tfdn.oga                17.84     0.002492     0.089569
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.7_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d0.7_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d1_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d1_tfdn.oga                  22.75     0.001410     0.083038
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d1_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w1.0_d1_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.0_tdat.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.0_tfdn.oga                 10.40     0.006182     0.088257
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.0_tfree.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.0_tlex.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.3_tdat.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.3_tfdn.oga                 10.49     0.006115     0.087250
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.3_tfree.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.3_tlex.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.7_tdat.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.7_tfdn.oga                 11.28     0.005559     0.089203
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.7_tfree.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d0.7_tlex.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d1_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d1_tfdn.oga                   17.25     0.002741     0.076660
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d1_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.3_w10_d1_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.0_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.0_tfdn.oga                11.74     0.005086     0.094635
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.0_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.0_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.3_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.3_tfdn.oga                11.83     0.005040     0.099426
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.3_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.3_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.7_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.7_tfdn.oga                12.71     0.004545     0.061279
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.7_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d0.7_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d1_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d1_tfdn.oga                  20.61     0.001812     0.065247
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d1_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w0.0_d1_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.0_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.0_tfdn.oga                10.98     0.005581     0.122345
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.0_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.0_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.3_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.3_tfdn.oga                11.08     0.005516     0.076447
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.3_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.3_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.7_tdat.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.7_tfdn.oga                12.01     0.004945     0.085297
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.7_tfree.oga                 inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d0.7_tlex.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d1_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d1_tfdn.oga                  19.74     0.002008     0.064056
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d1_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w1.0_d1_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.0_tdat.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.0_tfdn.oga                  4.32     0.013981     0.128876
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.0_tfree.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.0_tlex.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.3_tdat.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.3_tfdn.oga                  4.40     0.013850     0.129669
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.3_tfree.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.3_tlex.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.7_tdat.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.7_tfdn.oga                  5.39     0.012118     0.111847
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.7_tfree.oga                  inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d0.7_tlex.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d1_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d1_tfdn.oga                   12.66     0.004880     0.098816
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d1_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s0.7_w10_d1_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.0_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.0_tfdn.oga                   4.50     0.012570     0.101837
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.0_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.0_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.3_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.3_tfdn.oga                   4.56     0.012501     0.104065
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.3_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.3_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.7_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.7_tfdn.oga                   6.24     0.010043     0.085358
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.7_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d0.7_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d1_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d1_tfdn.oga                    16.78     0.002849     0.049622
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d1_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w0.0_d1_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.0_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.0_tfdn.oga                   3.54     0.014460     0.149872
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.0_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.0_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.3_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.3_tfdn.oga                   3.62     0.014347     0.115295
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.3_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.3_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.7_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.7_tfdn.oga                   5.35     0.011389     0.096588
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.7_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d0.7_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d1_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d1_tfdn.oga                    15.49     0.003325     0.093201
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d1_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w1.0_d1_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.0_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.0_tfdn.oga                   -1.22     0.039567     0.279846
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.0_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.0_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.3_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.3_tfdn.oga                   -1.14     0.039403     0.271851
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.3_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.3_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.7_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.7_tfdn.oga                    0.02     0.030796     0.240936
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.7_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d0.7_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d1_tdat.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d1_tfdn.oga                      8.39     0.008788     0.116119
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l0.7_s1_w10_d1_tfree.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l0.7_s1_w10_d1_tlex.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.0_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.0_tfdn.oga                  14.75     0.003572     0.079132
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.0_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.0_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.3_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.3_tfdn.oga                  14.91     0.003507     0.046600
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.3_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.3_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.7_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.7_tfdn.oga                  15.56     0.003250     0.049713
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.7_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d0.7_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d1_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d1_tfdn.oga                    22.13     0.001518     0.080200
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d1_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w0.0_d1_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.0_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.0_tfdn.oga                  14.27     0.003785     0.084686
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.0_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.0_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.3_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.3_tfdn.oga                  14.38     0.003738     0.069305
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.3_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.3_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.7_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.7_tfdn.oga                  15.10     0.003436     0.080750
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.7_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d0.7_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d1_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d1_tfdn.oga                    21.07     0.001718     0.068756
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d1_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w1.0_d1_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.0_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.0_tfdn.oga                    7.84     0.008762     0.117584
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.0_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.0_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.3_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.3_tfdn.oga                    7.95     0.008653     0.126343
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.3_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.3_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.7_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.7_tfdn.oga                    8.73     0.007843     0.118622
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.7_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d0.7_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d1_tdat.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d1_tfdn.oga                     14.84     0.003745     0.090088
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.3_w10_d1_tfree.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.3_w10_d1_tlex.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.0_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.0_tfdn.oga                   8.94     0.007159     0.092896
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.0_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.0_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.3_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.3_tfdn.oga                   9.03     0.007096     0.078674
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.3_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.3_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.7_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.7_tfdn.oga                   9.90     0.006385     0.069641
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.7_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d0.7_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d1_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d1_tfdn.oga                    18.51     0.002329     0.064575
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d1_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w0.0_d1_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.0_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.0_tfdn.oga                   8.26     0.007834     0.099304
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.0_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.0_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.3_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.3_tfdn.oga                   8.36     0.007755     0.099854
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.3_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.3_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.7_tdat.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.7_tfdn.oga                   9.34     0.006882     0.075714
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.7_tfree.oga                   inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d0.7_tlex.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d1_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d1_tfdn.oga                    17.24     0.002709     0.071014
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d1_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w1.0_d1_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.0_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.0_tfdn.oga                    2.42     0.019909     0.185669
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.0_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.0_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.3_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.3_tfdn.oga                    2.49     0.019732     0.188232
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.3_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.3_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.7_tdat.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.7_tfdn.oga                    3.37     0.017281     0.172943
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.7_tfree.oga                    inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d0.7_tlex.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d1_tdat.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d1_tfdn.oga                     10.34     0.006856     0.085052
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s0.7_w10_d1_tfree.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s0.7_w10_d1_tlex.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.0_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.0_tfdn.oga                     2.15     0.017862     0.140930
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.0_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.0_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.3_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.3_tfdn.oga                     2.21     0.017782     0.137268
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.3_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.3_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.7_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.7_tfdn.oga                     3.71     0.014301     0.130646
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.7_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d0.7_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d1_tdat.oga                        inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d1_tfdn.oga                      14.07     0.003965     0.057251
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w0.0_d1_tfree.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w0.0_d1_tlex.oga                        inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.0_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.0_tfdn.oga                     1.38     0.020531     0.160858
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.0_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.0_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.3_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.3_tfdn.oga                     1.45     0.020412     0.156158
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.3_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.3_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.7_tdat.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.7_tfdn.oga                     2.98     0.016196     0.133820
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.7_tfree.oga                     inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d0.7_tlex.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d1_tdat.oga                        inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d1_tfdn.oga                      12.88     0.004609     0.074829
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w1.0_d1_tfree.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w1.0_d1_tlex.oga                        inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d0.0_tdat.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d0.0_tfdn.oga                     -1.96     0.056462     0.414154
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w10_d0.0_tfree.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d0.0_tlex.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d0.3_tdat.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d0.3_tfdn.oga                     -1.88     0.056272     0.386017
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w10_d0.3_tfree.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d0.3_tlex.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d0.7_tdat.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d0.7_tfdn.oga                     -0.93     0.043956     0.349976
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w10_d0.7_tfree.oga                      inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d0.7_tlex.oga                       inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d1_tdat.oga                         inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d1_tfdn.oga                        6.53     0.012472     0.157104
  SNR below threshold (60)
  RMS above threshold (0.0001)
  ABS above threshold (0.01)
reverb/reverb_water_triangle_test_l1_s1_w10_d1_tfree.oga                        inf     0.000000     0.000000
reverb/reverb_water_triangle_test_l1_s1_w10_d1_tlex.oga                         inf     0.000000     0.000000
rpn/SA2 - Prison Lane -- MIDIMan - FluidSynth Test.mid.wav                      inf     0.000000     0.000000
sf2/GeneralUser-GS/Bond.wav                                                     inf     0.000000     0.000000
sf2/GeneralUser-GS/Breakout.wav                                                 inf     0.000000     0.000000
sf2/GeneralUser-GS/Dance.wav                                                    inf     0.000000     0.000000
sf2/GeneralUser-GS/Earth Day - by Richard Audd (fixed).wav                      inf     0.000000     0.000000
sf2/GeneralUser-GS/J-cycle.wav                                                  inf     0.000000     0.000000
sf2/GeneralUser-GS/Jump!.wav                                                    inf     0.000000     0.000000
sf2/GeneralUser-GS/Santa Claus is Comin' to Town.wav                            inf     0.000000     0.000000
sf2/GeneralUser-GS/The HYBRID Collage (v2.0) - by S. Christian Collins.wav          inf     0.000000     0.000000
sf2/GeneralUser-GS/Umi no Mieru Machi.wav                                       inf     0.000000     0.000000
sfe/DMOD.wav                                                                    inf     0.000000     0.000000
stacked_sf2/Streetwise.wav                                                      inf     0.000000     0.000000

@spessasus
Copy link
Copy Markdown
Contributor

Compared to the Lexverb and Dattorro, FDN is way inferior.

I agree, esp. with the finger snap.
Though, since you are fine with musically breaking changes in this PR (changing default FDN param), how about we go a step further and change the default reverb to Lexverb or Dattorro? (Anything that doesn't introduce distortion or ringing)

I believe it is very important for the default reverb algorithm to be the most mature one, as most programs will probably stick to defaults, or users will just run fluidsynth sf.sf2 midi.mid without changing anything and hear distortion.

The only problem I could see here is the increased CPU usage, though for such extreme cases where that really matters, the users can switch back to Freeverb or FDN.

What do you think?

@derselbst
Copy link
Copy Markdown
Member Author

Though, since you are fine with musically breaking changes in this PR (changing default FDN param),

You mean synth.reverb.damp? That only changes the default behavior. Any serious implementation should define their own custom reverb parameters. If not, they're free to change it back to 0.3 and get the same result as before. Something that cannot be done when changing a compile-time option.

how about we go a step further and change the default reverb to Lexverb or Dattorro?

It'll be one of the questions I'll be posting to the mailing list. The behavior of the reverb settings is still quite different for the two compared to FDN. I cannot decide this on my own.

@spessasus
Copy link
Copy Markdown
Contributor

It'll be one of the questions I'll be posting to the mailing list. The behavior of the reverb settings is still quite different for the two compared to FDN. I cannot decide this on my own.

Asking the community is a good idea, though wouldn't GitHub discussions be a better place for this? Similarly to the modernizing development tools thread. fluid-dev seems to be hardly active compared to GH.

@derselbst derselbst marked this pull request as ready for review April 19, 2026 12:32
@sonarqubecloud
Copy link
Copy Markdown

@derselbst
Copy link
Copy Markdown
Member Author

I announced that topic on our mailing list and on Github discussion. Feel like an eternity. No feedback so far, just 3 upvotes. If it stays that way I will merge it as is, i.e. keep all four engines for now and keep FDN as default engine (to remain compatible in how the reverb parameters behave / influence the reverb sound). I'll reserve the option to remove freeverb in a future release again, as it sounds worst compared to the others.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reverb Engine Causes Distortion Cyclic modulation of amplitude in the reverb sound Support different reverb engines

4 participants