2

我正在尝试向 MIDI 音序器发送控制更改消息。但我真的不明白它是如何工作的。例如,我应该怎么做才能使用连奏踏板(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 接口,效果很好。

4

0 回答 0