commit a78166a26b89bfde356ec6267af8f5e5888bfd3b
parent 46dd736d3cecd23500622ab948c38b326688b3dd
Author: Tal Aviram <me@talaviram.com>
Date: Sat, 14 Aug 2021 09:43:50 +0300
controller - parameter now also complies to JUCE parameter interface.
Diffstat:
2 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/source/jucePlugin/VirusParameter.cpp b/source/jucePlugin/VirusParameter.cpp
@@ -4,10 +4,12 @@
namespace Virus
{
- Parameter::Parameter(Controller &ctrl, const Description desc, const uint8_t partNum) :
- m_ctrl(ctrl), m_desc(desc), m_partNum(partNum)
- {
- m_value.addListener(this);
+ Parameter::Parameter(Controller &ctrl, const Description desc, const uint8_t partNum) :
+ m_ctrl(ctrl), m_desc(desc), m_partNum(partNum), juce::RangedAudioParameter(genId(), (m_desc.classFlags | Class::GLOBAL) ? "" : ("Ch " + juce::String(m_partNum + 1) + " ") + m_desc.name)
+ {
+ m_range.start = m_desc.range.getStart();
+ m_range.end = m_desc.range.getEnd();
+ m_value.addListener(this);
}
void Parameter::valueChanged(juce::Value &)
diff --git a/source/jucePlugin/VirusParameter.h b/source/jucePlugin/VirusParameter.h
@@ -7,8 +7,8 @@ namespace Virus
class Controller;
- class Parameter : private juce::Value::Listener
- {
+ class Parameter : private juce::Value::Listener, public juce::RangedAudioParameter
+ {
public:
enum Class
{
@@ -52,13 +52,25 @@ namespace Virus
const Description getDescription() const { return m_desc; };
- private:
+ const juce::NormalisableRange<float> &getNormalisableRange() const override { return m_range; }
+
+ float getValue() const override { return m_value.getValue(); }
+ void setValue(float newValue) override { return m_value.setValue(newValue); };
+ float getDefaultValue() const override { return 0; /* maybe return from ROM state? */ }
+
+ float getValueForText(const juce::String &text) const override
+ {
+ return m_desc.textToValueFunction(text, m_desc);
+ }
+
+ private:
juce::String genId();
void valueChanged(juce::Value &) override;
Controller &m_ctrl;
- Description m_desc;
- uint8_t m_paramNum, m_partNum;
+ const Description m_desc;
+ juce::NormalisableRange<float> m_range;
+ uint8_t m_paramNum, m_partNum;
juce::Value m_value;
};
} // namespace Virus