AudioProcessor::releaseResources breaks VST3 synths

I don’t see how this is a new issue, scanning the code there hasn’t been that many changes to VST3 lately. But my users are complaining about it a lot recently.

If you call releaseResources() on a VST3 it loses it’s MIDI input buses and there is no way to get them back. You should be able to call releaseResources() when you aren’t using a plugin and then call prepareToPlay() when you need it again.

However, releaseResources() calls setStateForAllMidiBuses (false); and the only thing that ever calls setStateForAllMidiBuses (true); is setupIO() which is called when the plugin is constructed.

Steps to reproduce:

  1. Run audio plugin host
  2. Add VST3 synth plugin
  3. Change sample rate
  4. MIDI input is gone

Oh yeah, I noticed this as well when I switched from juce 5.4.4 to juce 5.4.7, something must have broken up between those two versions…

Yes, I have noticed this as well. I wonder if it happens to be fixed in JUCE 6?

@ed95 Hi Ed, I hope that a fix for this will be included in JUCE 5. I mean, this is something that used to work just fine throughout the whole lifespan of JUCE 5 and shouldn’t be left broken.

1 Like

There’s a fix for this now on the develop branch. I can’t see a specific recent commit which broke this though, I went back to JUCE 5.4.4 and the behaviour was still present.