-
Notifications
You must be signed in to change notification settings - Fork 311
Description
Is your feature request related to a problem?
This RPN is not implemented in fluidsynth.
This document, section 3.4.4
Expected behavior
this MIDI file should have more and more modulation range depth with each note played.
Describe the solution you'd like
Since there's no Modulation Sensitivity (or anything similar) source in the sf2 modulator source enum, we have to give it special treatment.
My proposed solution is to use a modulation multiplier.
The sf2 spec assumes 50 cents depth by default, so when the RPN gets called, calculate a modulation multiplier by dividing the target depth range by 50. Then when running the DSP chain, simply multiply vibLfoToPitch or modLfoToPitch (or both) by that amount.
That way, if the soundfont creator wanted a more subtle vibrato effect on a given instrument (25 cents for example) and the MIDI composer would want to double the modulation depth (by setting it via RPN to 100 cents, which is the double of MIDI spec default), the final depth would be 50 cents, so double the initial depth, instead of suddenly jumping from 25 cents to 100.
Describe alternatives you've considered
Another solution could be finding all modulators that use mod wheel as source and vibLfoToPitch as destination and overriding the amount with the set range, but I think it could be quite destructive because of the problem mentioned above.