diff --git a/modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp b/modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp index 5d65694d24..23c6b0e3e6 100644 --- a/modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp +++ b/modules/juce_audio_utils/players/juce_AudioProcessorPlayer.cpp @@ -135,6 +135,9 @@ AudioProcessorPlayer::~AudioProcessorPlayer() //============================================================================== AudioProcessorPlayer::NumChannels AudioProcessorPlayer::findMostSuitableLayout (const AudioProcessor& proc) const { + if (proc.isMidiEffect()) + return {}; + std::vector layouts { deviceChannels }; if (deviceChannels.ins == 0 || deviceChannels.ins == 1) @@ -173,10 +176,13 @@ void AudioProcessorPlayer::setProcessor (AudioProcessor* const processorToPlay) defaultProcessorChannels = NumChannels { processorToPlay->getBusesLayout() }; actualProcessorChannels = findMostSuitableLayout (*processorToPlay); - processorToPlay->setPlayConfigDetails (actualProcessorChannels.ins, - actualProcessorChannels.outs, - sampleRate, - blockSize); + if (processorToPlay->isMidiEffect()) + processorToPlay->setRateAndBufferSizeDetails (sampleRate, blockSize); + else + processorToPlay->setPlayConfigDetails (actualProcessorChannels.ins, + actualProcessorChannels.outs, + sampleRate, + blockSize); auto supportsDouble = processorToPlay->supportsDoublePrecisionProcessing() && isDoublePrecision; @@ -256,7 +262,7 @@ void AudioProcessorPlayer::audioDeviceIOCallback (const float** const inputChann { // The processor should be prepared to deal with the same number of output channels // as our output device. - jassert (numOutputChannels == actualProcessorChannels.outs); + jassert (processor->isMidiEffect() || numOutputChannels == actualProcessorChannels.outs); const ScopedLock sl2 (processor->getCallbackLock());