यहां एक बेहद सरल CoreMIDI ओएस एक्स एप्लिकेशन है जो MIDI डेटा भेजता है। समस्या यह है कि यह काम नहीं करता है। यह ठीक संकलित करता है, और चलता है। यह कोई त्रुटि रिपोर्ट नहीं करता है, और क्रैश नहीं होता है। निर्मित स्रोत 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 को बता रहा है। वर्चुअल एमआईडीआई स्रोत बाद में जोड़े गए थे। –
+1 आप देवता हैं, कर्ट। –