MIDI 2 (UMP) equivalent for AUScheduleMIDIEventBlock?

We have an audio app that utilises a custom internal audio unit attached to AVAudioEngine to do DSP processing.

Currently:

  • MIDI arrives at the input port for the app (created with MIDIDestinationCreateWithProtocol).

  • For MIDI 1 we use AUScheduleMIDIEventBlock to pass the events from the midi input to the audio unit. All works well for MIDI 1.

So while we ponder on it ourselves we have some questions to throw into the ether...

a) For MIDI 2 there appears to be no equivalent method to AUScheduleMIDIEventBlock to send UMP to an audio unit?

b) We initially chose the audio unit approach because MIDI and audio processing is all handled neatly, but is this approach essentially redundant? Would it be better to put a tap somewhere on the AVAudioEngine and pass MIDI 2 events directly from the input to the tap? I fear in that case synchronising MIDI to audio nicely would be a pain?

c) perhaps we should wait until apple implement a UMP version of AUScheduleMIDIEventBlock?

Answered by ParanoidAndroid in 708762022

Answering my own question with RTFM!

Yes is it possible:
AUMIDIEventListBlock,
AUScheduleMIDIEventBlock scheduleMIDIEventBlock kMIDIProtocol_2_0 etc .

appendum: It could be possible to send the UMP as byte stream in the AUScheduleMIDIEventBlock, but the docs explicitly mention:

"One or more valid MIDI 1.0 events, except sysex which must always be sent as the only event in the chunk."

Accepted Answer

Answering my own question with RTFM!

Yes is it possible:
AUMIDIEventListBlock,
AUScheduleMIDIEventBlock scheduleMIDIEventBlock kMIDIProtocol_2_0 etc .

MIDI 2 (UMP) equivalent for AUScheduleMIDIEventBlock?
 
 
Q