JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.
According to the VST3 docs, setProcessing() should be fully sufficient to reset.
In some plug-ins (Melodyne being one example), setActive() triggers massive memory allocations, which heavily impacts performance when starting playback when using a lot of instances of such plug-ins (as is the case for example when using ARA).
This issue is even noted in comments in prepareToPlay(), which has extra code to avoid unnecessary calls to setActive().
setActive() should be removed from reset().
According to the VST3 docs, setProcessing() should be fully sufficient to reset. In some plug-ins (Melodyne being one example), setActive() triggers massive memory allocations, which heavily impacts performance when starting playback when using a lot of instances of such plug-ins (as is the case for example when using ARA). This issue is even noted in comments in prepareToPlay(), which has extra code to avoid unnecessary calls to setActive(). setActive() should be removed from reset().