From 7d8c5b845d62e906c85eb9a0dc60e83263bd1f19 Mon Sep 17 00:00:00 2001 From: reuk Date: Wed, 24 Nov 2021 11:43:00 +0000 Subject: [PATCH] AU: Cache MIDI output block --- modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm index 0a330c6ff1..de1ff74dff 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AUv3_Wrapper.mm @@ -867,6 +867,9 @@ public: hostMusicalContextCallback = [getAudioUnit() musicalContextBlock]; hostTransportStateCallback = [getAudioUnit() transportStateBlock]; + if (@available (macOS 10.13, iOS 11.0, *)) + midiOutputEventBlock = [au MIDIOutputEventBlock]; + reset(); return true; @@ -874,6 +877,8 @@ public: void deallocateRenderResources() override { + midiOutputEventBlock = nullptr; + hostMusicalContextCallback = nullptr; hostTransportStateCallback = nullptr; @@ -1602,7 +1607,7 @@ private: #if JucePlugin_ProducesMidiOutput && JUCE_AUV3_MIDI_OUTPUT_SUPPORTED if (@available (macOS 10.13, iOS 11.0, *)) { - if (auto midiOut = [au MIDIOutputEventBlock]) + if (auto midiOut = midiOutputEventBlock) for (const auto metadata : midiMessages) midiOut (metadata.samplePosition, 0, metadata.numBytes, metadata.data); } @@ -1772,6 +1777,7 @@ private: OwnedArray inBusBuffers, outBusBuffers; MidiBuffer midiMessages; + AUMIDIOutputEventBlock midiOutputEventBlock = nullptr; #if JUCE_AUV3_MIDI_EVENT_LIST_SUPPORTED ump::ToBytestreamDispatcher converter { 2048 };