I am developing an application for sending MIDI signals. I am using xcode beta 4. I don't understand why the MIDISend function allows me to send signal while MIDISendEvent does not.
MIDISend vs MIDISendEventList
How are you creating the event list?
Same with me, I create event list like below. The Old API can work , but the new API not work. No midi signal sent out
Code Block - (int)sendShortMsg:(unsigned char)deviceIndex :(unsigned char *)pMsg :(unsigned long)size { int result = 0; OSStatus err = 0; ByteCount bufSize = 1024; Byte packetListBuf[1024]; MIDIEventList *eventList = NULL; MIDIEventPacket *event = NULL; MIDIPacketList* pPacketList = NULL; MIDIPacket* pPacket = NULL; if ((pMsg == NULL) || (size == 0)) { ErrLog(@"The msg is empty"); } if (outPortRef == 0) { ErrLog(@"the outportRef equal zero, it's invalid."); goto EXIT; } if (@available(iOS 14.0, *)) { eventList = (MIDIEventList *)packetListBuf; event = MIDIEventListInit(eventList, kMIDIProtocol_1_0); if (event == NULL) { ErrLog(@"pPacket is null"); goto EXIT; } } else { pPacketList = (MIDIPacketList*)packetListBuf; pPacket = MIDIPacketListInit(pPacketList); if (pPacket == NULL) { ErrLog(@"pPacket is null"); goto EXIT; } } if (@available(iOS 14.0, *)) { UInt32 *newMsg = [self convertMidi1ToMidi2WithData:pMsg size:size]; // convert byte array to UInt32 array event = MIDIEventListAdd(eventList, bufSize, event, 0, size, newMsg); if (event == NULL) { ErrLog(@"pPacket is null 2"); goto EXIT; } } else { pPacket = MIDIPacketListAdd( pPacketList, bufSize, pPacket, 0, size, (Byte*)pMsg ); if (pPacket == NULL) { ErrLog(@"pPacket is null 2"); goto EXIT; } } if (@available(iOS 14.0, *)) { err = MIDISendEventList(outPortRef, devInfo.m_EndpointRef, eventList); if (err != noErr) { ErrLog(@"MIDI OUT device output error."); goto EXIT; } } else { err = MIDISend(outPortRef, devInfo.m_EndpointRef,pPacketList); if (err != noErr) { ErrLog(@"MIDI OUT device output error."); goto EXIT; } } EXIT:; return result; }