gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit 8142a031467d09fb529c781f750577160c0b834f
parent 543c8de24248856afc0ec3a2320513d4398cf6d1
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Fri, 31 May 2024 17:43:56 +0200

make parameter listener a separate class to reduce amount of code needed when using them

Diffstat:
Msource/jucePluginEditorLib/focusedParameter.cpp | 2+-
Msource/jucePluginEditorLib/focusedParameter.h | 4++--
Msource/jucePluginLib/CMakeLists.txt | 1+
Msource/jucePluginLib/parameter.h | 2--
Msource/jucePluginLib/parameterbinding.cpp | 4++--
Msource/jucePluginLib/parameterbinding.h | 4++--
Asource/jucePluginLib/parameterlistener.cpp | 17+++++++++++++++++
Asource/jucePluginLib/parameterlistener.h | 24++++++++++++++++++++++++
Msource/jucePluginLib/softknob.cpp | 6+++---
Msource/jucePluginLib/softknob.h | 8++++----
Msource/virusJucePlugin/ArpUserPattern.cpp | 2+-
Msource/virusJucePlugin/ArpUserPattern.h | 5+++--
12 files changed, 60 insertions(+), 19 deletions(-)

diff --git a/source/jucePluginEditorLib/focusedParameter.cpp b/source/jucePluginEditorLib/focusedParameter.cpp @@ -27,7 +27,7 @@ namespace jucePluginEditorLib { for (const auto& param : params.second) { - m_boundParameters.insert({param, pluginLib::EventListener(param->onValueChanged, [this](const pluginLib::Parameter* _param) + m_boundParameters.insert({param, pluginLib::ParameterListener(param, [this](const pluginLib::Parameter* _param) { if (_param->getChangeOrigin() == pluginLib::Parameter::ChangedBy::PresetChange || _param->getChangeOrigin() == pluginLib::Parameter::ChangedBy::Derived) diff --git a/source/jucePluginEditorLib/focusedParameter.h b/source/jucePluginEditorLib/focusedParameter.h @@ -4,7 +4,7 @@ #include "juce_events/juce_events.h" -#include "../jucePluginLib/event.h" +#include "../jucePluginLib/parameterlistener.h" namespace juce { @@ -45,6 +45,6 @@ namespace jucePluginEditorLib juce::Label* m_focusedParameterName = nullptr; juce::Label* m_focusedParameterValue = nullptr; std::unique_ptr<FocusedParameterTooltip> m_tooltip; - std::map<pluginLib::Parameter*, pluginLib::EventListener<pluginLib::Parameter*>> m_boundParameters; + std::map<pluginLib::Parameter*, pluginLib::ParameterListener> m_boundParameters; }; } diff --git a/source/jucePluginLib/CMakeLists.txt b/source/jucePluginLib/CMakeLists.txt @@ -15,6 +15,7 @@ set(SOURCES parameterdescription.cpp parameterdescription.h parameterdescriptions.cpp parameterdescriptions.h parameterlink.cpp parameterlink.h + parameterlistener.cpp parameterlistener.h parameterlocking.cpp parameterlocking.h parameterregion.cpp parameterregion.h parametervaluelist.cpp parametervaluelist.h diff --git a/source/jucePluginLib/parameter.h b/source/jucePluginLib/parameter.h @@ -110,6 +110,4 @@ namespace pluginLib uint32_t m_uniqueDelayCallbackId = 0; bool m_isLocked = false; }; - - using ParameterValueChangeListener = EventListener<Parameter*>; } diff --git a/source/jucePluginLib/parameterbinding.cpp b/source/jucePluginLib/parameterbinding.cpp @@ -289,10 +289,10 @@ namespace pluginLib if(button != nullptr) button->getToggleStateValue().referTo(juce::Value()); - if(_b.onChangeListenerId != ParameterValueChangeListener::InvalidListenerId) + if(_b.onChangeListenerId != ParameterListener::InvalidListenerId) { _b.parameter->onValueChanged.removeListener(_b.onChangeListenerId); - _b.onChangeListenerId = ParameterValueChangeListener::InvalidListenerId; + _b.onChangeListenerId = ParameterListener::InvalidListenerId; } } diff --git a/source/jucePluginLib/parameterbinding.h b/source/jucePluginLib/parameterbinding.h @@ -3,7 +3,7 @@ #include "juce_gui_basics/juce_gui_basics.h" #include "event.h" -#include "parameter.h" +#include "parameterlistener.h" namespace juce { @@ -44,7 +44,7 @@ namespace pluginLib juce::Component* component = nullptr; uint32_t type = 0xffffffff; uint8_t part = CurrentPart; - size_t onChangeListenerId = ParameterValueChangeListener::InvalidListenerId; + size_t onChangeListenerId = ParameterListener::InvalidListenerId; }; Event<BoundParameter> onBind; diff --git a/source/jucePluginLib/parameterlistener.cpp b/source/jucePluginLib/parameterlistener.cpp @@ -0,0 +1,17 @@ +#include "parameterlistener.h" + +#include "parameter.h" + +pluginLib::ParameterListener::ParameterListener(Parameter* _p, const Callback& _callback): EventListener(_p->onValueChanged, _callback) +{ +} + +void pluginLib::ParameterListener::set(Parameter* _parameter, const Callback& _callback) +{ + Base::set(_parameter->onValueChanged, _callback); +} + +void pluginLib::ParameterListener::set(Parameter* _parameter) +{ + Base::set(_parameter->onValueChanged); +} diff --git a/source/jucePluginLib/parameterlistener.h b/source/jucePluginLib/parameterlistener.h @@ -0,0 +1,24 @@ +#pragma once + +#include "event.h" + +namespace pluginLib +{ + class Parameter; + + class ParameterListener : public EventListener<Parameter*> + { + public: + using Base = EventListener<Parameter*>; + using Base::set; + using Base::operator=; + + using Callback = Base::MyCallback; + + ParameterListener() = default; + ParameterListener(Parameter* _p, const Callback& _callback); + + void set(Parameter* _parameter, const Callback& _callback); + void set(Parameter* _parameter); + }; +} diff --git a/source/jucePluginLib/softknob.cpp b/source/jucePluginLib/softknob.cpp @@ -27,12 +27,12 @@ namespace pluginLib m_targetSelect = _controller.getParameter(idxTargetSelect, _part); assert(m_targetSelect); - m_targetSelectListener.set(m_targetSelect->onValueChanged, [this](auto*) + m_targetSelectListener.set(m_targetSelect, [this](auto*) { onTargetChanged(); }); - m_sourceParamListener.set(m_sourceParam->onValueChanged,[this](auto*) + m_sourceParamListener.set(m_sourceParam, [this](auto*) { onSourceValueChanged(); }); @@ -95,7 +95,7 @@ namespace pluginLib if(!m_targetParam) return; - m_targetParamListener.set(m_targetParam->onValueChanged, [this](pluginLib::Parameter*) + m_targetParamListener.set(m_targetParam, [this](pluginLib::Parameter*) { onTargetValueChanged(); }); diff --git a/source/jucePluginLib/softknob.h b/source/jucePluginLib/softknob.h @@ -2,7 +2,7 @@ #include <cstdint> -#include "parameter.h" +#include "parameterlistener.h" namespace pluginLib { @@ -41,8 +41,8 @@ namespace pluginLib Parameter* m_targetSelect = nullptr; Parameter* m_targetParam = nullptr; - ParameterValueChangeListener m_sourceParamListener; - ParameterValueChangeListener m_targetSelectListener; - ParameterValueChangeListener m_targetParamListener; + ParameterListener m_sourceParamListener; + ParameterListener m_targetSelectListener; + ParameterListener m_targetParamListener; }; } diff --git a/source/virusJucePlugin/ArpUserPattern.cpp b/source/virusJucePlugin/ArpUserPattern.cpp @@ -107,7 +107,7 @@ namespace genericVirusUI auto* p = m_controller.getParameter(idx, m_controller.getCurrentPart()); assert(p); - return std::make_pair(p, pluginLib::ParameterValueChangeListener(p->onValueChanged, [this](pluginLib::Parameter*) + return std::make_pair(p, pluginLib::ParameterListener(p, [this](pluginLib::Parameter*) { onParameterChanged(); })); diff --git a/source/virusJucePlugin/ArpUserPattern.h b/source/virusJucePlugin/ArpUserPattern.h @@ -2,10 +2,11 @@ #include "juce_gui_basics/juce_gui_basics.h" -#include "../jucePluginLib/parameter.h" +#include "../jucePluginLib/parameterlistener.h" namespace pluginLib { + class Parameter; class Controller; } @@ -16,7 +17,7 @@ namespace genericVirusUI class ArpUserPattern : public juce::Component { public: - using BoundParam = std::pair<pluginLib::Parameter*, pluginLib::ParameterValueChangeListener>; + using BoundParam = std::pair<pluginLib::Parameter*, pluginLib::ParameterListener>; ArpUserPattern(const VirusEditor& _editor);