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

@ -4,7 +4,7 @@ cmake_minimum_required (VERSION 3.24.0 FATAL_ERROR)
# Set for each plugin # Set for each plugin
# #
set (PLUGIN_NAME Wavetable) set (PLUGIN_NAME Wavetable)
set (PLUGIN_VERSION 1.0.4) set (PLUGIN_VERSION 1.0.5)
set (BUNDLE_ID com.socalabs.wavetable) set (BUNDLE_ID com.socalabs.wavetable)
set (AU_ID WavetableAU) set (AU_ID WavetableAU)
set (LV2_URI "https://socalabs.com/wavetable/") set (LV2_URI "https://socalabs.com/wavetable/")

View file

@ -1,3 +1,7 @@
1.0.5:
- Fix AU crash
1.0.4: 1.0.4:
- Allow mod matrix entries to be disabled - Allow mod matrix entries to be disabled

View file

@ -143,9 +143,9 @@
{ "id": "global", "x": "prevR()+1", "y": "prevY()", "w": 168, "h": 137, "children": { "id": "global", "x": "prevR()+1", "y": "prevY()", "w": 168, "h": 137, "children":
[ [
{ "id": "Mono", "x": 0, "y": 23, "w": 42, "h": 57 }, { "id": "Mono", "x": 0, "y": 23, "w": 42, "h": 57 },
{ "id": "Legato", "x": "prevR()", "y": "prevY()", "w": 42, "h": 57 },
{ "id": "Glide", "x": "prevR()", "y": "prevY()", "w": 42, "h": 57 }, { "id": "Glide", "x": "prevR()", "y": "prevY()", "w": 42, "h": 57 },
{ "id": "Time", "x": "prevR()", "y": "prevY()", "w": 42, "h": 57 }, { "id": "Time", "x": "prevR()", "y": "prevY()", "w": 42, "h": 57 },
{ "id": "Legato", "x": "prevR()", "y": "prevY()", "w": 42, "h": 57 },
{ "id": "PB Range", "x": 0, "y": "prevB()", "w": 42, "h": 57 }, { "id": "PB Range", "x": 0, "y": "prevB()", "w": 42, "h": 57 },
{ "id": "Voices", "x": "prevR()", "y": "prevY()", "w": 42, "h": 57 }, { "id": "Voices", "x": "prevR()", "y": "prevY()", "w": 42, "h": 57 },
{ "id": "Level", "x": "prevR() + 42", "y": "prevY()", "w": 42, "h": 57 } { "id": "Level", "x": "prevR() + 42", "y": "prevY()", "w": 42, "h": 57 }

View file

@ -533,14 +533,28 @@ public:
addControl (new gin::Knob (proc.globalParams.level)); addControl (new gin::Knob (proc.globalParams.level));
addControl (new gin::Select (proc.globalParams.glideMode)); 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::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::Switch (proc.globalParams.mono));
addControl (new gin::Knob (proc.globalParams.pitchBend)); 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; 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) void WavetableAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midi)
{ {
juce::ScopedNoDenormals noDenormals; juce::ScopedNoDenormals noDenormals;
@ -755,6 +763,9 @@ void WavetableAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, ju
blockMissed = true; blockMissed = true;
return; return;
} }
if (buffer.getNumChannels() != 2)
return;
if (blockMissed || presetLoaded || lastMono != globalParams.mono->isOn()) if (blockMissed || presetLoaded || lastMono != globalParams.mono->isOn())
{ {
@ -802,7 +813,7 @@ void WavetableAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, ju
playHead = nullptr; playHead = nullptr;
if (buffer.getNumSamples() <= scopeFifo.getFreeSpace()) if (buffer.getNumSamples() <= scopeFifo.getFreeSpace() && buffer.getNumChannels() == scopeFifo.getNumChannels())
scopeFifo.write (buffer); scopeFifo.write (buffer);
endBlock (buffer.getNumSamples()); endBlock (buffer.getNumSamples());

View file

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