如何发送midi Control Change消息

时间:2012-07-12 09:41:58

标签: c# midi

我正在尝试将控制变更信息发送到MIDI音序器。但我真的不明白它是如何工作的。 例如,我应该怎么做才能使用Legato踏板(n°68)?或者,如果我想使用控制器n°72更改声音释放时间?

我试过这样做:

MidiTimedMessage msg = new MidiTimedMessage();
uint releaseTimeMessage = (uint)MidiReleaseTime << 16 | (uint)72 << 8 | 0xB0;
msg.Msg = (int)releaseTimeMessage;
msg.SystemTime = sequencerService.Now;
sequencerService.PostMidiMessage(midiOutDevice, msg);

但它不起作用。然而,当试图用这个来启用延音踏板时,同样的事情是有效的:

uint sustainPedalOn = (uint)127 << 16 | (uint)64 << 8 | 0xB0;

所以我想知道是否有特定的方式发送和使用控制器,如声音释放时间?我应该发送noteOn消息然后发送我的CC消息吗?相反?我已经尝试了两种...也许除了我的CC消息之外我还应该使用其他东西以使其有效?

编辑:好的我解决了这个问题。它无法工作,因为默认的Windows合成器(Microsoft GS Wavetable Synth)不处理CC消息的主要部分。我尝试过外接MIDI接口,效果很好。

0 个答案:

没有答案