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 c4cf8200fd9551b8a63c25fe0614f2f495c830ae
parent 4b7e6cc5dff6da8a748862c2b386c35826ca6d6b
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Tue, 27 Aug 2024 19:39:40 +0200

add ability to use custom part name formatting when creating parameters

Diffstat:
Msource/jucePluginLib/controller.cpp | 17++++++++++++-----
Msource/jucePluginLib/controller.h | 4++--
Msource/jucePluginLib/parameter.cpp | 4++--
Msource/jucePluginLib/parameter.h | 4+++-
4 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/source/jucePluginLib/controller.cpp b/source/jucePluginLib/controller.cpp @@ -42,10 +42,17 @@ namespace pluginLib m_softKnobs.clear(); } - void Controller::registerParams(juce::AudioProcessor& _processor) + void Controller::registerParams(juce::AudioProcessor& _processor, Parameter::PartFormatter _partFormatter/* = nullptr*/) { auto globalParams = std::make_unique<juce::AudioProcessorParameterGroup>("global", "Global", "|"); + if(!_partFormatter) + { + _partFormatter = [](const uint8_t& _part, bool) + { + return juce::String("Ch ") + juce::String(_part + 1); + }; + } std::map<ParamIndex, int> knownParameterIndices; for (uint8_t part = 0; part < getPartCount(); part++) @@ -53,7 +60,7 @@ namespace pluginLib m_paramsByParamType[part].reserve(m_descriptions.getDescriptions().size()); const auto partNumber = juce::String(part + 1); - auto group = std::make_unique<juce::AudioProcessorParameterGroup>("ch" + partNumber, "Ch " + partNumber, "|"); + auto group = std::make_unique<juce::AudioProcessorParameterGroup>("ch" + partNumber, _partFormatter(part, false), "|"); for (const auto& desc : m_descriptions.getDescriptions()) { @@ -69,7 +76,7 @@ namespace pluginLib uid = ++itKnownParamIdx->second; std::unique_ptr<Parameter> p; - p.reset(createParameter(*this, desc, part, uid)); + p.reset(createParameter(*this, desc, part, uid, _partFormatter)); if(uid > 0) { @@ -608,8 +615,8 @@ namespace pluginLib return result; } - Parameter* Controller::createParameter(Controller& _controller, const Description& _desc, uint8_t _part, int _uid) + Parameter* Controller::createParameter(Controller& _controller, const Description& _desc, const uint8_t _part, const int _uid, const Parameter::PartFormatter& _partFormatter) { - return new Parameter(_controller, _desc, _part, _uid); + return new Parameter(_controller, _desc, _part, _uid, _partFormatter); } } diff --git a/source/jucePluginLib/controller.h b/source/jucePluginLib/controller.h @@ -110,8 +110,8 @@ namespace pluginLib Processor& getProcessor() const { return m_processor; } protected: - virtual Parameter* createParameter(Controller& _controller, const Description& _desc, uint8_t _part, int _uid); - void registerParams(juce::AudioProcessor& _processor); + virtual Parameter* createParameter(Controller& _controller, const Description& _desc, uint8_t _part, int _uid, const Parameter::PartFormatter& _partFormatter); + void registerParams(juce::AudioProcessor& _processor, Parameter::PartFormatter _partFormatter = nullptr); void sendSysEx(const pluginLib::SysEx &) const; bool sendSysEx(const std::string& _packetName) const; diff --git a/source/jucePluginLib/parameter.cpp b/source/jucePluginLib/parameter.cpp @@ -4,8 +4,8 @@ namespace pluginLib { - Parameter::Parameter(Controller& _controller, const Description& _desc, const uint8_t _partNum, const int _uniqueId) - : juce::RangedAudioParameter(genId(_desc, _partNum, _uniqueId), "Ch " + juce::String(_partNum + 1) + " " + _desc.displayName) + Parameter::Parameter(Controller& _controller, const Description& _desc, const uint8_t _partNum, const int _uniqueId, const PartFormatter& _partFormatter) + : juce::RangedAudioParameter(genId(_desc, _partNum, _uniqueId), _partFormatter(_partNum, _desc.isNonPartSensitive()) + " " + _desc.displayName) , m_controller(_controller) , m_desc(_desc) , m_part(_partNum) diff --git a/source/jucePluginLib/parameter.h b/source/jucePluginLib/parameter.h @@ -16,6 +16,8 @@ namespace pluginLib class Parameter : juce::Value::Listener, public juce::RangedAudioParameter { public: + using PartFormatter = std::function<juce::String(uint8_t, bool)>; // part, non-part-exclusive + enum class Origin { Unknown, @@ -30,7 +32,7 @@ namespace pluginLib Event<Parameter*, ParameterLinkType> onLinkStateChanged; Event<Parameter*> onValueChanged; - Parameter(Controller& _controller, const Description& _desc, uint8_t _partNum, int _uniqueId); + Parameter(Controller& _controller, const Description& _desc, uint8_t _partNum, int _uniqueId, const PartFormatter& _partFormatter); juce::Value& getValueObject() { return m_value; }