Fix AU crash

This commit is contained in:
Roland Rabien 2023-09-30 07:42:15 -07:00
commit a01455c18d
6 changed files with 35 additions and 5 deletions

View file

@ -533,14 +533,28 @@ public:
addControl (new gin::Knob (proc.globalParams.level));
addControl (new gin::Select (proc.globalParams.glideMode));
addControl (new gin::Knob (proc.globalParams.glideRate));
addControl (rate = new gin::Knob (proc.globalParams.glideRate));
addControl (new gin::Knob (proc.globalParams.voices));
addControl (new gin::Switch (proc.globalParams.legato));
addControl (legato = new gin::Switch (proc.globalParams.legato));
addControl (new gin::Switch (proc.globalParams.mono));
addControl (new gin::Knob (proc.globalParams.pitchBend));
watchParam (proc.globalParams.glideMode);
paramChanged();
}
void paramChanged() override
{
gin::ParamBox::paramChanged();
rate->setEnabled (proc.globalParams.glideMode->getUserValueInt() > 0);
legato->setEnabled (proc.globalParams.glideMode->getUserValueInt() > 0);
}
WavetableAudioProcessor& proc;
gin::Knob* rate;
gin::Switch* legato;
};
//==============================================================================

View file

@ -747,6 +747,14 @@ void WavetableAudioProcessor::releaseResources()
{
}
bool WavetableAudioProcessor::isBusesLayoutSupported (const BusesLayout& layout) const
{
if (layout.inputBuses.size() != 0 || layout.outputBuses.size() != 1)
return false;
return layout.outputBuses[0].size() == 2;
}
void WavetableAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midi)
{
juce::ScopedNoDenormals noDenormals;
@ -755,6 +763,9 @@ void WavetableAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, ju
blockMissed = true;
return;
}
if (buffer.getNumChannels() != 2)
return;
if (blockMissed || presetLoaded || lastMono != globalParams.mono->isOn())
{
@ -802,7 +813,7 @@ void WavetableAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, ju
playHead = nullptr;
if (buffer.getNumSamples() <= scopeFifo.getFreeSpace())
if (buffer.getNumSamples() <= scopeFifo.getFreeSpace() && buffer.getNumChannels() == scopeFifo.getNumChannels())
scopeFifo.write (buffer);
endBlock (buffer.getNumSamples());

View file

@ -22,6 +22,7 @@ public:
void reset() override;
void prepareToPlay (double sampleRate, int samplesPerBlock) override;
void releaseResources() override;
bool isBusesLayoutSupported (const BusesLayout&) const override;
void processBlock (juce::AudioBuffer<float>&, juce::MidiBuffer&) override;