| @@ -2306,6 +2306,8 @@ public: | |||||
| return extractResult (userProvidedInterface, juceProvidedInterface, obj); | return extractResult (userProvidedInterface, juceProvidedInterface, obj); | ||||
| } | } | ||||
| enum class CallPrepareToPlay { no, yes }; | |||||
| //============================================================================== | //============================================================================== | ||||
| tresult PLUGIN_API initialize (FUnknown* hostContext) override | tresult PLUGIN_API initialize (FUnknown* hostContext) override | ||||
| { | { | ||||
| @@ -2313,7 +2315,7 @@ public: | |||||
| host.loadFrom (hostContext); | host.loadFrom (hostContext); | ||||
| processContext.sampleRate = processSetup.sampleRate; | processContext.sampleRate = processSetup.sampleRate; | ||||
| preparePlugin (processSetup.sampleRate, (int) processSetup.maxSamplesPerBlock); | |||||
| preparePlugin (processSetup.sampleRate, (int) processSetup.maxSamplesPerBlock, CallPrepareToPlay::no); | |||||
| return kResultTrue; | return kResultTrue; | ||||
| } | } | ||||
| @@ -2390,7 +2392,7 @@ public: | |||||
| ? (int) processSetup.maxSamplesPerBlock | ? (int) processSetup.maxSamplesPerBlock | ||||
| : bufferSize; | : bufferSize; | ||||
| preparePlugin (sampleRate, bufferSize); | |||||
| preparePlugin (sampleRate, bufferSize, CallPrepareToPlay::yes); | |||||
| } | } | ||||
| return kResultOk; | return kResultOk; | ||||
| @@ -3091,7 +3093,7 @@ public: | |||||
| : AudioProcessor::singlePrecision); | : AudioProcessor::singlePrecision); | ||||
| getPluginInstance().setNonRealtime (newSetup.processMode == Vst::kOffline); | getPluginInstance().setNonRealtime (newSetup.processMode == Vst::kOffline); | ||||
| preparePlugin (processSetup.sampleRate, processSetup.maxSamplesPerBlock); | |||||
| preparePlugin (processSetup.sampleRate, processSetup.maxSamplesPerBlock, CallPrepareToPlay::no); | |||||
| return kResultTrue; | return kResultTrue; | ||||
| } | } | ||||
| @@ -3368,12 +3370,14 @@ private: | |||||
| | kNeedTransportState; | | kNeedTransportState; | ||||
| } | } | ||||
| void preparePlugin (double sampleRate, int bufferSize) | |||||
| void preparePlugin (double sampleRate, int bufferSize, CallPrepareToPlay callPrepareToPlay) | |||||
| { | { | ||||
| auto& p = getPluginInstance(); | auto& p = getPluginInstance(); | ||||
| p.setRateAndBufferSizeDetails (sampleRate, bufferSize); | p.setRateAndBufferSizeDetails (sampleRate, bufferSize); | ||||
| p.prepareToPlay (sampleRate, bufferSize); | |||||
| if (callPrepareToPlay == CallPrepareToPlay::yes) | |||||
| p.prepareToPlay (sampleRate, bufferSize); | |||||
| midiBuffer.ensureSize (2048); | midiBuffer.ensureSize (2048); | ||||
| midiBuffer.clear(); | midiBuffer.clear(); | ||||