我在我的应用程序中使用UWP Midi来控制我的Yamaha MOX8键盘。我可以发送ProgramChangeMessages来更改键盘上的补丁。我可以通过简单的程序变更消息更改前128个补丁。但是,有几家银行都有我想要切换的补丁。根据Yamaha文档,第一个银行或默认银行标记为PRE1(MSB = 63,LSB = 0),我需要在发送程序变更之前发送控制变更以更改银行。
下一个银行是PRE2(MSB = 63,LSB = 1)。 PRE3(MSB = 64,LSB = 2),PRE4(MSB = 63,LSB = 3),PRE5(MSB = 63,LSB = 4)一直通过USR3(MSB = 63,LSB = 10)。 GM还有一个银行(MSB = 0,LSB = 0),另一个用于DRUMS(MSB = 63,LSB = 32)
// How do MSB, LSB value translate into the Control Change Message api below?
var ccMessage = new MidiControlChangeMessage(Byte Channel, Byte Control, Byte ControlValue);
midiOutPort.SendMessage(ccMessage);
// This message works for changing the program patch:
IMidiMessage midiMessateToSend = new MidiProgramChangeMessage(0, 73);
midiOutPort.SendMessage(midiMessateToSend);
应该将哪些值放入MidiControlChangeMessage的Control和ControlValue参数中?
答案 0 :(得分:1)
如数据列表手册的MIDI specficiation或this reference table或第120页所示,银行选择控制器的编号为0/32。 例如,要在第一个通道上选择“Trojan”(PRE5中的仪器74):
$layout$name == "panel"