Krotos Modules 3
Loading...
Searching...
No Matches
KParameter.h
Go to the documentation of this file.
1namespace krotos
2{
3 //==============================================================================
16 class KParameter : public RangedAudioParameter, public AudioProcessorParameter::Listener
17 {
18 public:
29 struct AudioListenerObject : public AudioProcessorParameter::Listener
30 {
31
32 AudioListenerObject(std::shared_ptr<KParameter> parameterToListenTo,
33 std::function<void(float)> onChangeFunction);
34 ~AudioListenerObject() override;
35
36 std::weak_ptr<KParameter> const parameter;
37
47 const std::function<void(float)> onChange;
48
58 void parameterValueChanged(int, float newValue) override;
59 void parameterGestureChanged(int, bool) override {}
60 };
61
71 struct AsyncListenerObject : public AudioProcessorParameter::Listener, public AsyncUpdater
72 {
73 AsyncListenerObject(std::shared_ptr<KParameter> parameterToListenTo,
74 std::function<void(float)> onChangeFunction);
75 ~AsyncListenerObject() override;
76
77 std::weak_ptr<KParameter> const parameter;
78 const std::function<void(float)> onChange;
79
80 WeakReference<AsyncListenerObject>::Master masterReference;
81 friend class WeakReference<AsyncListenerObject>;
82
83 void parameterValueChanged(int, float newValue) override;
84 void parameterGestureChanged(int, bool) override {}
85 void handleAsyncUpdate() override;
86
87 std::atomic<float> lastValue{0.0f};
88 };
89
91 KParameter(const String& parameterID, const String& parameterName,
92 const NormalisableRange<float>& normalisableRange, float defaultValue,
93 const String& parameterLabel = String(),
94 std::function<String(float value, int maximumStringLength)> stringFromValue = nullptr,
95 std::function<float(const String& text)> valueFromString = nullptr);
96
98 float get() const;
99
101 float getValue() const override;
102
104 bool isOn() const;
105
107 void set(float newValue);
108
110 void notifyListeners();
111
118 void attach(GenericParameter* p);
119
121 void detach();
122
127
129 const NormalisableRange<float>& getNormalisableRange() const override;
130
132 void parameterValueChanged(int /*parameterIndex*/, float newValue) override;
133 void parameterGestureChanged(int /*parameterIndex*/, bool /*gestureIsStarting*/) override {}
134
135 private:
136 friend class GenericParameter;
137
138 void setValue(float newValue) override;
139 float getDefaultValue() const override;
140 String getText(float value, int length) const override;
141 float getValueForText(const String& text) const override;
142
143 NormalisableRange<float> m_range;
144 std::atomic<float> m_value;
145 std::atomic<float> m_normalisedValue;
146 const float m_defaultValue;
147
149
150 std::function<String(float, int)> m_stringFromValueFunction;
151 std::function<float(const String&)> m_valueFromStringFunction;
152
153 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(KParameter)
154 };
155} // namespace krotos
A subclass of RangedAudioParameter that can act as an alias for another audio parameter,...
Definition GenericParameter.h:15
Internal Kwidget parameter that can receive changes from a GenericParameter.
Definition KParameter.h:17
GenericParameter * m_attachedParameter
Definition KParameter.h:148
GenericParameter * getAttachedParameter()
Definition KParameter.cpp:170
void parameterGestureChanged(int, bool) override
Definition KParameter.h:133
std::atomic< float > m_value
Definition KParameter.h:144
std::function< String(float, int)> m_stringFromValueFunction
Definition KParameter.h:150
float getValueForText(const String &text) const override
Definition KParameter.cpp:198
void parameterValueChanged(int, float newValue) override
Definition KParameter.cpp:120
void setValue(float newValue) override
Definition KParameter.cpp:185
float get() const
Definition KParameter.cpp:126
KParameter(const String &parameterID, const String &parameterName, const NormalisableRange< float > &normalisableRange, float defaultValue, const String &parameterLabel=String(), std::function< String(float value, int maximumStringLength)> stringFromValue=nullptr, std::function< float(const String &text)> valueFromString=nullptr)
Definition KParameter.cpp:80
std::atomic< float > m_normalisedValue
Definition KParameter.h:145
void attach(GenericParameter *p)
Definition KParameter.cpp:146
float getDefaultValue() const override
Definition KParameter.cpp:191
void detach()
Definition KParameter.cpp:160
float getValue() const override
Definition KParameter.cpp:181
NormalisableRange< float > m_range
Definition KParameter.h:143
void notifyListeners()
Definition KParameter.cpp:144
void set(float newValue)
Definition KParameter.cpp:128
String getText(float value, int length) const override
Definition KParameter.cpp:193
bool isOn() const
Definition KParameter.cpp:183
std::function< float(const String &)> m_valueFromStringFunction
Definition KParameter.h:151
const NormalisableRange< float > & getNormalisableRange() const override
Definition KParameter.cpp:179
const float m_defaultValue
Definition KParameter.h:146
Definition AirAbsorptionFilter.cpp:2
Used to create a KParameter listener for GUI or non time critical updates.
Definition KParameter.h:72
~AsyncListenerObject() override
Definition KParameter.cpp:44
AsyncListenerObject(std::shared_ptr< KParameter > parameterToListenTo, std::function< void(float)> onChangeFunction)
Definition KParameter.cpp:33
const std::function< void(float)> onChange
Definition KParameter.h:78
std::weak_ptr< KParameter > const parameter
Definition KParameter.h:77
void parameterGestureChanged(int, bool) override
Definition KParameter.h:84
WeakReference< AsyncListenerObject >::Master masterReference
Definition KParameter.h:80
void parameterValueChanged(int, float newValue) override
Definition KParameter.cpp:53
void handleAsyncUpdate() override
Definition KParameter.cpp:68
std::atomic< float > lastValue
Definition KParameter.h:87
A KParameter Listener which can be used to trigger a callback syncrhonously.
Definition KParameter.h:30
std::weak_ptr< KParameter > const parameter
Definition KParameter.h:36
void parameterGestureChanged(int, bool) override
Definition KParameter.h:59
const std::function< void(float)> onChange
Definition KParameter.h:47
void parameterValueChanged(int, float newValue) override
Definition KParameter.cpp:22
~AudioListenerObject() override
Definition KParameter.cpp:14
AudioListenerObject(std::shared_ptr< KParameter > parameterToListenTo, std::function< void(float)> onChangeFunction)
Definition KParameter.cpp:3