Quelle est la manière recommandée de mapper le volume du canal MIDI à gagner?Conversion entre le volume du canal MIDI et le gain réel
A partir de là [1]
Il est recommandé qu'un dispositif utilise la valeur du volume d'une manière logarithmique, comme spécifié par la formule suivante si seule la valeur grossière est utilisée:
40 log (Volume/127)
Pour moi, cette formule ressemble à une formule inverse. Si le volume du canal est exprimé en dB, la formule doit utiliser exp
au lieu de log
. Si le volume est déjà une amplitude, alors il ne devrait y avoir que Volume/127
. Pour clarifier, cela n'a pas de sens
*output_buffer = 40*log(channel_volume/127.0) * (*input_buffer);
(Testcase: channel_volume = 0 donnera gain infini) qui suit d'autre part est mieux (à condition que channel_volume
est le gain réel et non le gain en dB):
*output_buffer = channel_volume * (*input_buffer)/127.0;
[1] http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midispec/vol.htm
Cela signifie que cette formule ne doit pas être utilisée avant de transmettre la valeur en tant que valeur de gain à un synthétiseur. C'est ce que je voulais dire par "inverse" – user877329