在MIDI通道音量和实际增益之间转换

时间:2016-01-10 11:17:31

标签: formula midi volume

将MIDI通道音量映射到增益的推荐方法是什么?

从这里[1]

  

如果仅使用粗略值,建议设备以对数方式使用音量值,如下面的公式所示:

     

40 log(Volume / 127)

对我来说,这个公式看起来像一个反公式。如果以dB为单位给出通道音量,则公式应使用exp而不是log。如果音量已经是幅度,那么应该只有Volume/127。澄清一下,这没有意义

*output_buffer = 40*log(channel_volume/127.0) * (*input_buffer);

(测试用例:channel_volume = 0将提供无限增益)另一方面,下面的情况更好(假设channel_volume是实际增益而不是以dB为单位的增益):

*output_buffer = channel_volume * (*input_buffer)/127.0;

[1] http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midispec/vol.htm

1 个答案:

答案 0 :(得分:0)

MIDI规范本身不指定音量响应。 但是,General MIDI Level 1 Developer Guidelines显示了这个公式,因为大多数实现都使用它。

通道音量的值为0到127。 该公式的结果以dB为单位测量;你必须在之后将其转换为增益值:

  

增益= 10 ^(dB / 20)

有关如何处理与表达式控制器的交互,请参阅同一文档。

相关问题