Background : I have currently built a spatial-reverb VST that is rendered using a convolution-structure using JUCE, and one of our third-party 3d frameworks.

I have designed the plugin in a conventional PluginProcessor and PluginEditor format using the AudioProcessorValueTreeState across both classes, and register sliders through the createAndAddParameter(…) . This all works fine.

However…

With convolving signals and interpolating through values, there appears to be some audio glitches that occur (quite natural for convolution) when audio is on playback. Therefore, the normal procedure I have seen from other convolution-based reverb VSTs is to ‘hold’ or ‘freeze’ the rendering. Thus, I need the AudioProcessorValueTree to behave according to these requirements:

When the user begins dragging the slider, render only the previous state of the slider. ie. the position the user had before he clicked the slider.

When the user has finished dragging, then render and send the newest value.

I have used juce::Slider::Listener in the context of the AudioProcessorValueTree the following functions I found from a bit of looking around on this forum to begin with: