Browse Source

VST3 Client: Only call prepareToPlay() from IComponent::setActive()

pull/22/head
attila 4 years ago
parent
commit
3b5d7898ed
1 changed files with 9 additions and 5 deletions
  1. +9
    -5
      modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp

+ 9
- 5
modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp View File

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


Loading…
Cancel
Save