Well, the comment explains it pretty clearly. Basically, you need to add the versionHint to your parameter declarations.
I have something like this in my projects:
#define SC_PARAMETER_V1 1
// ... and then in my AudioProcessor constructor, where I initialize the params struct:
std::make_unique<juce::AudioParameterInt>(ParameterID {"stereoMode", SC_PARAMETER_V1}, "Stereo Mode", 1, 5, 1, "", [](int value, int) { return juce::String(value); }, nullptr),
std::make_unique<AudioParameterFloat> (ParameterID {"msMidGain", SC_PARAMETER_V1}, "MS Mid Gain", NormalisableRange<float>( - 18.0f, 3.0f, 0.1f), -6.0f, "dB", AudioProcessorParameter::genericParameter, [](float value, int maximumStringLength) { return String(value, 1); }, nullptr),
// .. etc
Here, you can see that I instantiate a ParameterID object within the declaration for each parameter, and one of the fields in that object is “versionHint”, which is initialized with the value of “1” (SC_PARAMETER_V1) .. at some point, if I ever add another parameter, I will add an “SC_PARAMETER_V2” and use that, so that ‘version 1’ of the parameter set and ‘version 2’ of the parameter set can be easily identified, as per the comment in the code snippet you posted…
Its a relatively easy fix - be sure you understand the nature of ParameterID. Its necessary for various DAW’s in differentiating between one version of a plugin, and a newer version of the same plugin, with additional parameters ..
When you hit a jassert in JUCE’s codebase you will generally find a comment around that explains why you hit it and how to address it.
Thank You so much it was really helpfull
You’re welcome. This help was brought to you by a non-AI/ML entity. ![]()

