调整MIDI音量

时间:2010-10-06 15:54:37

标签: language-agnostic midi

[我在Java中做这项工作,但我认为这个问题与语言无关。]

我有一个MIDI Note On音量(称为“data2”,它是0-127),我用推子调节(0到127)。我使用的“数学”很简单:

newData2 = oldData2 * faderVolume / 127;

Zero工作完美,127也工作,但接近范围底部的音量太大,特别是声音更响亮。什么可能是一个不同的关系而不是一个线性的(在伪代码中会很棒)?我必须将它们插入到代码中并尝试它们。

我意识到这个问题取决于正在播放Note Ons的乐器(Ableton Live中的BFD套件,它没有多少通知),但可能没有,也许有一种标准的方式来调整Midi Note On音量用推子。

2 个答案:

答案 0 :(得分:3)

你的等式是正确的。您正在以线性方式计算相对于推子的音符开启速度。几个笔记......

您要调整的参数是速度。这并不一定意味着音量!这两者确实具有大多数合成器的相关性(包括你在Ableton的鼓组),但它可能与你想象的音量无关。

0速度相当于音符关闭,永远不会播放声音。我这样说是因为如果0和1之间的差异是显着的,那么音量可能不会像你想象的那样受到速度参数的影响。

最后,传统的混音器推子使用对数定律。你可能会试验这个,但我再次认为你是用卷来咆哮错误的树。

有一个用于音量的MIDI信息应该用于音量,即CC 7。

答案 1 :(得分:1)

正如我在评论中所说,在播放声音或音频或任何声音技术时,请使用双打或浮动(取决于硬件或API规范)。

您在newData2上返回一个整数。而是将其转换为double或float(用于精度)。

e.g。

float newData2 = (float)oldData2 * (float)faderVolume / (float)127;

希望这有帮助。