diff --git a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp index 7e990abee1..681d3e0f04 100644 --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp @@ -65,6 +65,15 @@ bool AudioProcessorValueTreeState::Parameter::isAutomatable() const { return bool AudioProcessorValueTreeState::Parameter::isDiscrete() const { return discrete; } bool AudioProcessorValueTreeState::Parameter::isBoolean() const { return boolean; } +void AudioProcessorValueTreeState::Parameter::valueChanged (float newValue) +{ + if (lastValue == newValue) + return; + + lastValue = newValue; + sendValueChangedMessageToListeners (newValue); +} + //============================================================================== class AudioProcessorValueTreeState::ParameterAdapter : private AudioProcessorParameter::Listener { diff --git a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h index fbaafbd771..a0cc2b0e0f 100644 --- a/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h +++ b/modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h @@ -414,8 +414,11 @@ public: bool isBoolean() const override; private: + void valueChanged (float) override; + const float unsnappedDefault; const bool metaParameter, automatable, discrete, boolean; + float lastValue = 0.0f; }; //==============================================================================