This change adds a new feature that enables loading and unloading of
sample data on demand. As soon as a preset is selected for a channel, all
of it's samples are loaded into memory. When a preset is unselected, all
of it's samples are unloaded from memory (unless they are being used by
another selected preset).
This feature is disabled by default and can be switched on with the
"synth.dynamic-sample-loading" setting.
The EMU8k/10k hardware applies a 0.4 factor to all initially set attenuation generator values. Do this once on soundfont load.
Remove the invalid -531.509 power factor that was computed from Timidiy's non-standard conversion table. And remove the synth.volenv switch again, as the "compliant" setting wasn't compliant at all.
This allows us to get rid of the atten2amp function and use cb2amp everywhere, with a range of 0 1440 centibels.
Fixes#70
Supersedes #71
Supersedes #318
FluidSynths overflow priority calculation, that determines which voice to
kill if the current polyphony limit has been reached, treats all channels
as equal. Only percussion channels can get a user defined score added to
their priority.
In certain use-cases there can be a number of MIDI channels that are much
more important than other ones, and not just percussion channels. For
example, a channel playing a constant pad sound which would be very
noticeable if killed.
This change adds two new synth.overflow settings:
- synth.overflow.important
- synth.overflow.important-channels
They add the ability to mark MIDI channels as "important" and have
the overflow calculation add a user defined score to voices on those
channels.