我正在使用Core Midi在Xamarin iOs应用上通过USB发送MIDI事件, 我基于这个例子 https://developer.xamarin.com/samples/monotouch/CoreMidiSample/
我想修改上面的示例,以便通过USB同时发送多个NoteOn MIDI事件,不幸的是,它只能同时发送一个NoteOn Midi事件,
这是修改后的部分
void SendNote ()
{
for (int i = 0; i < Midi.DestinationCount; i++) {
var endpoint = MidiEndpoint.GetDestination (i);
// play note
outputPort.Send (endpoint, new MidiPacket [] { new MidiPacket (0, new byte [] { 0x90, 60, 127 }) });
outputPort.Send(endpoint, new MidiPacket[] { new MidiPacket(0, new byte[] { 0x90, 64, 127 }) });
outputPort.Send(endpoint, new MidiPacket[] { new MidiPacket(0, new byte[] { 0x90, 68, 127 }) });
}
}
有时只听起来一个音符,有时两个音符, 我希望这三个音符总是总是同时发声, 我该怎么办?
答案 0 :(得分:0)
MidiPacket
仅包含一堆要发送的字节。因此,您可以将它们串联起来:
new byte [] { 0x90, 60, 127, 0x90, 64, 127, 0x90, 68, 127 }
甚至使用运行状态:
new byte [] { 0x90, 60, 127, 64, 127, 68, 127 }
答案 1 :(得分:0)
请参见midi.org上的以下页面-基本上,您需要启用“多边形模式”。
频道模式消息
控制器编号124到127用于在打开或关闭Omni模式之间进行选择,以及在Mono模式或Poly模式下进行选择。
当选择“ Poly”模式时,传入的“ Note On”消息将被复音播放。这意味着,当接收到多个“音符开启”消息时,每个音符都被分配了自己的声音(取决于合成器中可用的声音数量)。结果是可以同时演奏多个音符。
https://www.midi.org/articles-old/about-midi-part-3-midi-messages
希望有帮助:)