prof-spock / FluidSynthPlugin

Simple Wrappers Around the FluidSynth Library as DAW Plugin and Pedantic Command Line Processor
5 stars 0 forks source link

better default reverb & chorus settings #6

Open mrbumpy409 opened 5 months ago

mrbumpy409 commented 5 months ago

FluidSynth's default reverb and chorus settings are... kind of gross. Fortunately, it is possible to alter these in the plugin GUI, but why not also make them better out-of-the box? Here are the settings I will be suggesting for use with all of my SoundFonts:

synth.reverb.damp = 0.3
synth.reverb.level = 0.7
synth.reverb.room-size = 0.5
synth.reverb.width = 0.8
synth.chorus.depth = 3.6
synth.chorus.level = 0.55
synth.chorus.nr = 4
synth.chorus.speed = 0.36

Here is audio comparing the original with my revised settings. The instrument featured is the FM Electric Piano from my upcoming Fluidity GM, and the reverb and chorus levels are set as CC91 = 117 and CC93 = 87.

Note that default reverb & chorus.flac had to be attenuated 6 dB to avoid clipping due to the massive amount of volume that the default chorus adds.

prof-spock commented 5 months ago

Hello @mrbumpy409,

thanks for your input!

But I am a bit hesitant to change the default settings of the plugin and I'll try to explain my reasons.

The central idea of the FluidSynth plugin is that - according to the documentation - it tries to

exactly reproduce an external fluidsynth rendition

Once I am changing the defaults of the plugin to some more "convenient" values, this is hard to do: when I wanted to mimic the external fluidsynth command line processor, I would have to override settings in the plugin to compensate those changes. Another way would be to use some settings file for fluidsynth with the exact same settings.

Both variants are not very practical.

And normally when you are working in a DAW, you have plugins available that are much more elaborate than the built-in reverb or chorus of FluidSynth. Examples are the free chorus Azurite or the ReaPlugs stock plugins of Reaper with Reaper ReaVerb even using impulse responses. And if you really need DAW plugins that have command-line counterparts, my notorious SoXPlugins could also be helpful (although there is no chorus there...).

Chains of specialized plugins can be tuned to your individual instrument much better; I guess that some standard one-size-fits-all fluidsynth setting will not be very helpful once you are trying to optimize the sound for an electric bass or a pad synth.

So my standard technique is even to switch off reverb and chorus completely in the FluidSynth plugin and in the external rendering chain (via synth.chorus.active = 0 and synth.reverb.active = 0) and then use other means to produce audio enhancements.

If you really want to use the fluidsynth chorus and reverb, you could - as a workaround - take your settings and make a preset of them for initialization. The disadvantage of that approach is that once you load that preset, all other data is dismissed. Another strategy is to just use copy-and-paste: this strategy benefits from the simplistic text interface... Or even combine both approaches by temporarily cutting the text parts you want to keep and then load your preset.

So this time it seems I have to pass on your request.

But maybe you have further convincing arguments I cannot refuse...

Best regards Prof. Spock

mrbumpy409 commented 5 months ago

I cannot argue with your logic. Also, it appears that FluidSynth will be changing the default reverb and chorus to settings similar to mine in version 2.4 anyway. I don't mind pasting my custom settings into each plugin instance where I want to use them. I just figured the change might be nice for newcomers to the plugin wondering why the default fx engine sounds so gnarly.

Peace :smile:

prof-spock commented 5 months ago

Hello @mrbumpy409,

well, whenever Fluidsynth 2.4 comes out, you simply drop in the DLL or SO file and the settings you obviously recommended upstream will be available as the new default. And then, of course, this will be the new mandatory reference for the FluidSynth plugin.

Be aware that fluidsynth has a different usage profile, because people use it to just render complete MIDI files to audio. On the other hand a DAW plugin normally transforms a single voice in a DAW having a multitude of other plugins available for postprocessing.

Nevertheless I have no problem with that upcoming change at all, but probably I shall also shut those off by silencing chorus and reverb for the reasons given.

I only want to ensure that the FluidSynth plugin is - as much as possible - conforming to the fluidsynth command-line program. This was the original intention: a "bit-exact" reproduction of fluidsynth in a DAW...

The only problem I am going to have is that people will complain that version X of the FluidSynth plugin will not sound identical to version X+1 when using default settings, although I have not changed anything.

But I can live with that :wink:

Best regards, Prof. Spock

mrbumpy409 commented 5 months ago

well, whenever Fluidsynth 2.4 comes out, you simply drop in the DLL or SO file and the settings you obviously recommended upstream will be available as the new default.

Well, they didn't end up using my settings, but their settings are pretty close. Well enough to make a huge improvement anyway. I like the final iteration of their reverb, but the chorus is a bit too tame for my taste.

Nevertheless I have no problem with that upcoming change at all, but probably I shall also shut those off by silencing chorus and reverb for the reasons given.

I will also frequently shut them off to use DAW plugins instead.

I only want to ensure that the FluidSynth plugin is - as much as possible - conforming to the fluidsynth command-line program. This was the original intention: a "bit-exact" reproduction of fluidsynth in a DAW...

I will be recommending FluidSynthPlugin in my documentation as the best way to experience my SoundFonts in a DAW. Some people may still want something like juicysfplugin due to the GUI, but that plugin's timing resolution is limited to the current ASIO buffer size, it can't adjust reverb/chorus/interpolation settings or load only the active preset to memory, and it appears to have been pretty much abandoned. There's also no working Linux version. All of which just makes me all the more appreciative of your efforts!

prof-spock commented 5 months ago

[juicysfplugin has] also no working Linux version. All of which just makes me all the more appreciative of your efforts!

Thanks for your kind words, that's music to my ears :smile: And there is even a MacOS AU version :wink:, so the main x86-64 platforms are covered (but I have to admit that there is no MacOS ARM version, which is somewhat careless).