diff --git a/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp b/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp index 9abcb11375..238d538cab 100644 --- a/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp @@ -1162,18 +1162,9 @@ namespace AAXClasses if (details.parameterInfoChanged) { - auto numParameters = juceParameters.getNumParameters(); - - for (int i = 0; i < numParameters; ++i) - { - if (auto* p = mParameterManager.GetParameterByID (getAAXParamIDFromJuceIndex (i))) - { - auto newName = juceParameters.getParamForIndex (i)->getName (31); - - if (p->Name() != newName.toRawUTF8()) - p->SetName (AAX_CString (newName.toRawUTF8())); - } - } + for (const auto* param : juceParameters) + if (auto* aaxParam = mParameterManager.GetParameterByID (getAAXParamIDFromJuceIndex (param->getParameterIndex()))) + syncParameterAttributes (aaxParam, param); } if (details.latencyChanged) @@ -2064,6 +2055,40 @@ namespace AAXClasses return defaultLayout; } + void syncParameterAttributes (AAX_IParameter* aaxParam, const AudioProcessorParameter* juceParam) + { + if (juceParam == nullptr) + return; + + { + auto newName = juceParam->getName (31); + + if (aaxParam->Name() != newName.toRawUTF8()) + aaxParam->SetName (AAX_CString (newName.toRawUTF8())); + } + + { + auto newType = juceParam->isDiscrete() ? AAX_eParameterType_Discrete : AAX_eParameterType_Continuous; + + if (aaxParam->GetType() != newType) + aaxParam->SetType (newType); + } + + { + auto newNumSteps = static_cast (juceParam->getNumSteps()); + + if (aaxParam->GetNumberOfSteps() != newNumSteps) + aaxParam->SetNumberOfSteps (newNumSteps); + } + + { + auto defaultValue = juceParam->getDefaultValue(); + + if (! approximatelyEqual (static_cast (aaxParam->GetNormalizedDefaultValue()), defaultValue)) + aaxParam->SetNormalizedDefaultValue (defaultValue); + } + } + //============================================================================== ScopedJuceInitialiser_GUI libraryInitialiser;