这就是我所拥有的:

// Note on message
ShortMessage noteOnMessage = new ShortMessage();
noteOnMessage.setMessage(ShortMessage.NOTE_ON, chanNum, key, velocity);

// Pan change
ShortMessage panChangeMessage = new ShortMessage();
panChangeMessage.setMessage(ShortMessage.CONTROL_CHANGE, chanNum, SoundManager.PAN_CONTROLLER, pan);

// Note off message
ShortMessage noteOffMessage = new ShortMessage();
noteOffMessage.setMessage(ShortMessage.NOTE_OFF, chanNum, key, 0);


问题在于,将panChangeMes​​sage添加到轨道后,会改变MidiEvent滴答声中所有音符的声相,而不仅仅是当前的单个音符。有没有办法改变只有一音符的声像呢?

最佳答案

你不能

将通道平移,然后在触发音符清除后将其平移回去。请记住,任何衰减都会平移。

或者,使用多个Midi通道,每个通道用于您所需的复音。

关于java - Java Midi:如何更改序列中单个音符的声相?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38153971/

10-10 16:12