diff --git a/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp b/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp index e86be890d5..5e837f5bae 100644 --- a/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp +++ b/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp @@ -128,6 +128,11 @@ void MidiMessageCollector::removeNextBlockOfMessages (MidiBuffer& destBuffer, } } +void MidiMessageCollector::ensureStorageAllocated (size_t bytes) +{ + incomingMessages.ensureSize (bytes); +} + //============================================================================== void MidiMessageCollector::handleNoteOn (MidiKeyboardState*, int midiChannel, int midiNoteNumber, float velocity) { diff --git a/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h b/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h index d7e4df5a2a..953a42d38c 100644 --- a/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h +++ b/modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h @@ -80,6 +80,14 @@ public: */ void removeNextBlockOfMessages (MidiBuffer& destBuffer, int numSamples); + /** Preallocates storage for collected messages. + + This can be called before audio processing begins to ensure that there + is sufficient space for the expected MIDI messages, in order to avoid + allocations within the audio callback. + */ + void ensureStorageAllocated (size_t bytes); + //============================================================================== /** @internal */