MIDI声道音量和实际增益之间的转换



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

从此处[1]

如果只使用粗略值,建议设备以对数方式使用体积值,如以下公式所规定:

40日志(卷/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

MIDI规范本身并没有指定音量响应。然而,通用MIDI Level 1开发人员指南显示了这个公式,因为它实际上被大多数实现所使用。

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

增益=10^(dB/20)

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

最新更新