From 39fb65be68f3a6827dad0a539e74342f435d72d4 Mon Sep 17 00:00:00 2001 From: George Reales Date: Thu, 16 Jul 2020 10:14:56 +0200 Subject: [PATCH] MIDI learn and clear --- Source/PluginEditor.cpp | 12 +++++++++++- Source/PluginProcessor.cpp | 26 +++++++++++++------------- Source/PluginProcessor.h | 3 ++- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index 8a95275..1d76014 100755 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -284,7 +284,7 @@ TooglableButton* ObxdAudioProcessorEditor::addButton (int x, int y, int w, int h button->setButtonText (name); button->setValue (filter.getPluginState().getParameter (filter.getEngineParameterId (parameter))->getValue(), dontSendNotification); - + button->addListener(this); addAndMakeVisible (button); return button; @@ -429,6 +429,16 @@ void ObxdAudioProcessorEditor::buttonClicked (Button* b) resultFromMenu (pos); } + + + auto toggleButton = dynamic_cast (b); + if (toggleButton == midiUnlearnButton){ + if (midiUnlearnButton->toogled){ + processor.getMidiMap().reset(); + processor.getMidiMap().set_default(); + } + } + } //============================================================================== diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp index 0b4c91a..7351322 100755 --- a/Source/PluginProcessor.cpp +++ b/Source/PluginProcessor.cpp @@ -229,18 +229,14 @@ inline void ObxdAudioProcessor::processMidiPerSample (MidiBuffer::Iterator* iter { lastMovedController = midiMsg->getControllerNumber(); - if (programs.currentProgramPtr->values[MIDILEARN] > 0.5f) + if (programs.currentProgramPtr->values[MIDILEARN] > 0.5f){ + midiControlledParamSet = true; bindings[lastMovedController] = lastUsedParameter; - - if (programs.currentProgramPtr->values[UNLEARN] > 0.5f) - { - midiControlledParamSet = true; - bindings[lastMovedController] = 0; - setEngineParameterValue (UNLEARN, 0); - lastMovedController = 0; - lastUsedParameter = 0; - midiControlledParamSet = false; - } + setEngineParameterValue (MIDILEARN, 0, true); + lastMovedController = 0; + lastUsedParameter = 0; + midiControlledParamSet = false; + } if (bindings[lastMovedController] > 0) { @@ -760,7 +756,7 @@ int ObxdAudioProcessor::getParameterIndexFromId (String paramId) return -1; } -void ObxdAudioProcessor::setEngineParameterValue (int index, float newValue) +void ObxdAudioProcessor::setEngineParameterValue (int index, float newValue, bool notifyToHost) { if (! midiControlledParamSet || index == MIDILEARN || index == UNLEARN) { @@ -768,8 +764,12 @@ void ObxdAudioProcessor::setEngineParameterValue (int index, float newValue) } programs.currentProgramPtr->values[index] = newValue; - apvtState.getParameter(getEngineParameterId(index))->setValue(newValue); + if (notifyToHost){ + apvtState.getParameter(getEngineParameterId(index))->setValueNotifyingHost(newValue); + } else { + apvtState.getParameter(getEngineParameterId(index))->setValue(newValue); + } switch (index) { diff --git a/Source/PluginProcessor.h b/Source/PluginProcessor.h index 81a18a8..104ab81 100755 --- a/Source/PluginProcessor.h +++ b/Source/PluginProcessor.h @@ -171,6 +171,7 @@ public: bool restoreProgramSettings(const fxProgram* const prog); File getCurrentBankFile() const; + MidiMap &getMidiMap(){ return bindings; } //============================================================================== const ObxdBank& getPrograms() const { return programs; } @@ -185,7 +186,7 @@ public: //============================================================================== static String getEngineParameterId (size_t); int getParameterIndexFromId (String); - void setEngineParameterValue (int, float); + void setEngineParameterValue (int, float, bool notifyToHost= false); void parameterChanged (const String&, float) override; AudioProcessorValueTreeState& getPluginState();