pedrolcl / drumstick

Drumstick Qt/C++ MIDI libraries (Mirror)
https://sourceforge.net/projects/drumstick/
GNU General Public License v3.0
12 stars 3 forks source link

issues with the new reverb/chorus settings in 2.9.1 #26

Open mrbumpy409 opened 2 weeks ago

mrbumpy409 commented 2 weeks ago

I have discovered a few issues with the new reverb/chorus settings in version 2.9.1 used in dmidiplayer 1.7.4 development version.

  1. The UI can only set reverb and chorus values to a single decimal place (excluding chorus_nr, which is supposed to be an integer), whereas FluidSynth supports at least two decimal places of precision (greater precision than this isn't necessary). For example, I can't set my preferred values (e.g., chorus level = 0.55, chorus speed = 0.36) in the UI as it will always be rounded to the nearest tenth. I can manually set the desired values in the registry, but then those values are revised to a single decimal place if the FluidSynth configuration window is used again.
  2. Probably related to no. 1 above: the default for chorus_depth should be 4.25, but is set to 4.3 in library/rt-backends/fluidsynth/fluidsynthengine.h and library/widgets/fluidsettingsdialog.h
  3. FluidSynth's reverb width is not properly defined in FluidSynth's documentation. Reverb widths between 0% and 100% are mapped between 0 and 1, just like the other reverb settings. Values higher than 1 just make the reverb sound bad. I recommend capping this knob to a max of 1, which is also what QSynth does (while also displaying all reverb values multiplied by 100 to appear as percentages).
mrbumpy409 commented 2 weeks ago

Looks like we have a spambot on the loose...

mrbumpy409 commented 2 weeks ago

One more observation: is it the intention to have the FluidSynth configuration GUI set values different from the FluidSynth 2.4 defaults? I am noticing a disparity between the default reverb and chorus values set in library/widgets/fluidsettingsdialog.h and those reported by the tooltips in the dmidiplayer FluidSynth configuration. Differences are marked in bold:

Setting FluidSynth 2.4 Default Drumstick GUI Init Value
chorus_depth 4.25 3.6
chorus_level 0.6 0.5
chorus_nr 3 4
chorus_speed 0.2 0.36
reverb_damp 0.3 0.3
reverb_level 0.7 0.5
reverb_size 0.5 0.5
reverb_width 0.8 0.8

This sets the reverb level too low. As for the chorus, these values appear to have been pulled from my comment on my FluidSynthPlugin bug report "better default reverb & chorus settings". If that is the case, the chorus level should be 0.55 instead of 0.5 (this was an error in my original post which has now been fixed). That being said, I'd personally recommend just going with the new FluidSynth defaults as they should be quite pleasant with any type of SoundFont or music.

pedrolcl commented 2 weeks ago

The defaults released in v2.9.1 do not match the table above. Please see:

Chorus: https://github.com/pedrolcl/drumstick/blob/c7f8e80fb0952ec192d05a98d4129fe312ffcda9/library/widgets/fluidsettingsdialog.ui#L218-L266 Reverb: https://github.com/pedrolcl/drumstick/blob/c7f8e80fb0952ec192d05a98d4129fe312ffcda9/library/widgets/fluidsettingsdialog.ui#L343-L403

Widget defaults: https://github.com/pedrolcl/drumstick/blob/c7f8e80fb0952ec192d05a98d4129fe312ffcda9/library/widgets/fluidsettingsdialog.h#L99-L107

Fluidsynth backend defaults: https://github.com/pedrolcl/drumstick/blob/c7f8e80fb0952ec192d05a98d4129fe312ffcda9/library/rt-backends/fluidsynth/fluidsynthengine.h#L110-L118

Perfect is the enemy of good

mrbumpy409 commented 2 weeks ago

Aah, I hadn't seen commit c468566 fixing the tooltips, and I had noticed the wrong tooltips in the preview build you had sent me, thinking the tooltips were reporting incorrect initial values. My bad.

What are your thoughts on the other matters raised in the first post?

pedrolcl commented 2 weeks ago

What are your thoughts on the other matters raised in the first post?

Perfect is the enemy of good

mrbumpy409 commented 2 weeks ago

I can respect that. I would then only ask you to consider point no. 3 above regarding the range choice for reverb width. It really should be limited between 0 and 1 like the other reverb values, since 1 = 100% reverb width. The FluidSynth 2.4 default value of 0.8 sets the reverb width to 80%. Values above 1 start to cause a weird feedback into the reverb engine, which sounds bad, and bad is also the enemy of good. :smile: Furthermore, it will be a lot easier to select sane reverb width values with the knob if it is limited to such a range.

pedrolcl commented 2 weeks ago

I can respect that. I would then only ask you to consider point no. 3 above regarding the range choice for reverb width. It really should be limited between 0 and 1 like the other reverb values, since 1 = 100% reverb width. The FluidSynth 2.4 default value of 0.8 sets the reverb width to 80%. Values above 1 start to cause a weird feedback into the reverb engine, which sounds bad, and bad is also the enemy of good. 😄 Furthermore, it will be a lot easier to select sane reverb width values with the knob if it is limited to such a range.

Then, I suggest to raise an issue in Fluidsynth: https://www.fluidsynth.org/api/settings_synth.html#settings_synth_reverb_width