ここには、MIDIデータを送信する非常に簡単なCoreMIDI OS Xアプリケーションがあります。問題は、それが動作しないということです。それはうまくコンパイルされ、実行されます。それはエラーを報告せず、クラッシュしません。作成されたソースがMIDIモニターで表示されます。ただし、MIDIデータが出ていません。なぜこの単純なCoreMIDIプログラムはMIDI出力を生成しませんか?
誰かが私がここで間違っていることを教えてもらえますか?
#include <CoreMIDI/CoreMIDI.h>
int main(int argc, char *args[])
{
MIDIClientRef theMidiClient;
MIDIEndpointRef midiOut;
MIDIPortRef outPort;
char pktBuffer[1024];
MIDIPacketList* pktList = (MIDIPacketList*) pktBuffer;
MIDIPacket *pkt;
Byte midiDataToSend[] = {0x91, 0x3c, 0x40};
int i;
MIDIClientCreate(CFSTR("Magical MIDI"), NULL, NULL,
&theMidiClient);
MIDISourceCreate(theMidiClient, CFSTR("Magical MIDI Source"),
&midiOut);
MIDIOutputPortCreate(theMidiClient, CFSTR("Magical MIDI Out Port"),
&outPort);
pkt = MIDIPacketListInit(pktList);
pkt = MIDIPacketListAdd(pktList, 1024, pkt, 0, 3, midiDataToSend);
for (i = 0; i < 100; i++) {
if (pkt == NULL || MIDISend(outPort, midiOut, pktList)) {
printf("failed to send the midi.\n");
} else {
printf("sent!\n");
}
sleep(1);
}
return 0;
}
決して千年に私はMIDIを送信するためにMIDIReceivedを使用すると思います。優れた説明をありがとう。 – sixohsix
MIDIデバイスドライバのコンテキストでMIDIソースを考えると少し意味があります。その場合、ドライバはMIDIを(ワイヤで)受信し、CoreMIDIにそのことを伝えています。仮想MIDIソースは後で追加されました。 –
+1あなたは神様です、Kurt。 –