1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

VST3 Client: Update ParameterInfo default value and numSteps when AudioProcessor changes

This commit is contained in:
reuk 2024-05-29 19:36:27 +01:00
parent bf384427d1
commit 1d90ea72e7
No known key found for this signature in database
GPG key ID: FCB43929F012EE5C

View file

@ -810,19 +810,6 @@ public:
updateParameterInfo();
info.stepCount = (Steinberg::int32) 0;
#if ! JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE
if (param.isDiscrete())
#endif
{
const int numSteps = param.getNumSteps();
info.stepCount = (Steinberg::int32) (numSteps > 0 && numSteps < 0x7fffffff ? numSteps - 1 : 0);
}
info.defaultNormalizedValue = param.getDefaultValue();
jassert (info.defaultNormalizedValue >= 0 && info.defaultNormalizedValue <= 1.0f);
// Is this a meter?
if ((((unsigned int) param.getCategory() & 0xffff0000) >> 16) == 2)
info.flags = Vst::ParameterInfo::kIsReadOnly;
@ -846,9 +833,29 @@ public:
return true;
};
auto anyUpdated = updateParamIfChanged (info.title, param.getName (128));
anyUpdated |= updateParamIfChanged (info.shortTitle, param.getName (8));
anyUpdated |= updateParamIfChanged (info.units, param.getLabel());
const auto updateParamIfScalarChanged = [] (auto& toChange, const auto newValue)
{
return ! exactlyEqual (std::exchange (toChange, newValue), newValue);
};
const auto newStepCount = [&]
{
#if ! JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE
if (! param.isDiscrete())
return 0;
#endif
const auto numSteps = param.getNumSteps();
return (Steinberg::int32) (0 < numSteps && numSteps < 0x7fffffff ? numSteps - 1 : 0);
}();
auto anyUpdated = updateParamIfChanged (info.title, param.getName (128));
anyUpdated |= updateParamIfChanged (info.shortTitle, param.getName (8));
anyUpdated |= updateParamIfChanged (info.units, param.getLabel());
anyUpdated |= updateParamIfScalarChanged (info.stepCount, newStepCount);
anyUpdated |= updateParamIfScalarChanged (info.defaultNormalizedValue, (double) param.getDefaultValue());
jassert (0 <= info.defaultNormalizedValue && info.defaultNormalizedValue <= 1.0);
return anyUpdated;
}
@ -1333,7 +1340,7 @@ public:
{
for (int32 i = 0; i < parameters.getParameterCount(); ++i)
if (auto* param = dynamic_cast<Param*> (parameters.getParameterByIndex (i)))
if (param->updateParameterInfo() && (flags & Vst::kParamTitlesChanged) == 0)
if (param->updateParameterInfo())
flags |= Vst::kParamTitlesChanged;
}