diff --git a/Changelist.txt b/Changelist.txt index cad0eec..308917f 100644 --- a/Changelist.txt +++ b/Changelist.txt @@ -5,6 +5,7 @@ - Fix crash initializing plugin on Linux - Fix channel config on Linux - Renamed Legato rate to Legato Time +- Fix stuck notes on switch mono on/off 1.0.2: diff --git a/plugin/Source/PluginProcessor.cpp b/plugin/Source/PluginProcessor.cpp index ff3d2c0..8f19ddd 100644 --- a/plugin/Source/PluginProcessor.cpp +++ b/plugin/Source/PluginProcessor.cpp @@ -500,6 +500,8 @@ WavetableAudioProcessor::WavetableAudioProcessor() setupModMatrix(); init(); + + lastMono = globalParams.mono->isOn(); } WavetableAudioProcessor::~WavetableAudioProcessor() @@ -619,6 +621,7 @@ void WavetableAudioProcessor::stateUpdated() reloadWavetables(); presetLoaded = true; + lastMono = globalParams.mono->isOn(); } void WavetableAudioProcessor::updateState() @@ -732,9 +735,10 @@ void WavetableAudioProcessor::processBlock (juce::AudioBuffer& buffer, ju return; } - if (blockMissed || presetLoaded) + if (blockMissed || presetLoaded || lastMono != globalParams.mono->isOn()) { blockMissed = presetLoaded = false; + lastMono = ! lastMono; turnOffAllVoices (false); } @@ -748,7 +752,7 @@ void WavetableAudioProcessor::processBlock (juce::AudioBuffer& buffer, ju buffer.clear(); - setMono (globalParams.mono->isOn()); + setMono (lastMono); setLegato (globalParams.legato->isOn()); setGlissando (globalParams.glideMode->getProcValue() == 1.0f); setPortamento (globalParams.glideMode->getProcValue() == 2.0f); diff --git a/plugin/Source/PluginProcessor.h b/plugin/Source/PluginProcessor.h index 0652a5b..113a258 100644 --- a/plugin/Source/PluginProcessor.h +++ b/plugin/Source/PluginProcessor.h @@ -271,6 +271,7 @@ public: juce::AudioPlayHead* playhead = nullptr; bool blockMissed = false; bool presetLoaded = false; + bool lastMono = false; struct CurTable {