Browse Source

AAX: Fixed potential issues with older PT control surfaces not handling large numbers of parameter steps

tags/2021-05-28
Tom Poole 6 years ago
parent
commit
3687710c58
1 changed files with 10 additions and 3 deletions
  1. +10
    -3
      modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp

+ 10
- 3
modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp View File

@@ -849,7 +849,7 @@ namespace AAXClasses
AAX_Result GetParameterNumberofSteps (AAX_CParamID paramID, int32_t* result) const
{
if (auto* param = getParameterFromID (paramID))
*result = param->getNumSteps();
*result = getSafeNumberOfParameterSteps (*param);
return AAX_SUCCESS;
}
@@ -1407,6 +1407,14 @@ namespace AAXClasses
return false;
}
// Some older Pro Tools control surfaces (EUCON [PT version 12.4] and
// Avid S6 before version 2.1) cannot cope with a large number of
// parameter steps.
static int32_t getSafeNumberOfParameterSteps (const AudioProcessorParameter& param)
{
return jmax (param.getNumSteps(), 2048);
}
void addAudioProcessorParameters()
{
auto& audioProcessor = getPluginInstance();
@@ -1448,7 +1456,6 @@ namespace AAXClasses
aaxParamIDs.add (paramID);
auto aaxParamID = aaxParamIDs.getReference (parameterIndex++).getCharPointer();
paramMap.set (AAXClasses::getAAXParamHash (aaxParamID), juceParam);
// is this a meter?
@@ -1467,7 +1474,7 @@ namespace AAXClasses
parameter->AddShortenedName (juceParam->getName (4).toRawUTF8());
auto parameterNumSteps = juceParam->getNumSteps();
auto parameterNumSteps = getSafeNumberOfParameterSteps (*juceParam);
parameter->SetNumberOfSteps ((uint32_t) parameterNumSteps);
#if JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE


Loading…
Cancel
Save