xy スタイルのコントローラーに関連するコントローラー位置変更メッセージを記述する 2 つのパケットを含む MIDIPacketList を送信しようとしています。
実装しようとしている関数は、x と y の位置を取り、パケットを作成して、次のように選択したターゲット デバイスに送信します。
- (void)matrixCtrlSetPosX:(int)posX PosY:()posY {
MIDIPacketList packetList;
packetList.numPackets = 2;
packetList.packet[0].length = 3;
packetList.packet[0].data[0] = 0xB0; // status: controller change
packetList.packet[0].data[1] = 0x32; // controller number 50
packetList.packet[0].data[2] = (Byte)posX; // value (x position)
packetList.packet[0].timeStamp = 0;
packetList.packet[1].length = 3;
packetList.packet[1].data[0] = 0xB0; // status: controller change
packetList.packet[1].data[1] = 0x33; // controller number 51
packetList.packet[1].data[2] = (Byte)posY; // value (y position)
packetList.packet[1].timeStamp = 0;
CheckError(MIDISend(_outputPort, _destinationEndpoint, &packetList), "Couldn't send MIDI packet list");
}
私が抱えている問題は、プログラムが最初のパケットしか送信していないように見えることです。
出力を 2 つの別々の MIDIPacketLists に分割し、2 つの MIDISend() を 2 回呼び出してみました。 MIDISend() への 1 回の呼び出しで送信されます。ここで何が問題なのか理解できないようです!ここの誰もがこれを行った経験がありますか、それとも私はこれを完全に間違った方法で行っていますか?