mirror of
https://codeberg.org/armin/wavetable.git
synced 2026-09-01 05:50:46 +02:00
Fix AU crash
This commit is contained in:
parent
ab200090d1
commit
a01455c18d
6 changed files with 35 additions and 5 deletions
|
|
@ -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/")
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 }
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue