| @@ -849,7 +849,7 @@ namespace AAXClasses | |||||
| AAX_Result GetParameterNumberofSteps (AAX_CParamID paramID, int32_t* result) const | AAX_Result GetParameterNumberofSteps (AAX_CParamID paramID, int32_t* result) const | ||||
| { | { | ||||
| if (auto* param = getParameterFromID (paramID)) | if (auto* param = getParameterFromID (paramID)) | ||||
| *result = param->getNumSteps(); | |||||
| *result = getSafeNumberOfParameterSteps (*param); | |||||
| return AAX_SUCCESS; | return AAX_SUCCESS; | ||||
| } | } | ||||
| @@ -1407,6 +1407,14 @@ namespace AAXClasses | |||||
| return false; | 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() | void addAudioProcessorParameters() | ||||
| { | { | ||||
| auto& audioProcessor = getPluginInstance(); | auto& audioProcessor = getPluginInstance(); | ||||
| @@ -1448,7 +1456,6 @@ namespace AAXClasses | |||||
| aaxParamIDs.add (paramID); | aaxParamIDs.add (paramID); | ||||
| auto aaxParamID = aaxParamIDs.getReference (parameterIndex++).getCharPointer(); | auto aaxParamID = aaxParamIDs.getReference (parameterIndex++).getCharPointer(); | ||||
| paramMap.set (AAXClasses::getAAXParamHash (aaxParamID), juceParam); | paramMap.set (AAXClasses::getAAXParamHash (aaxParamID), juceParam); | ||||
| // is this a meter? | // is this a meter? | ||||
| @@ -1467,7 +1474,7 @@ namespace AAXClasses | |||||
| parameter->AddShortenedName (juceParam->getName (4).toRawUTF8()); | parameter->AddShortenedName (juceParam->getName (4).toRawUTF8()); | ||||
| auto parameterNumSteps = juceParam->getNumSteps(); | |||||
| auto parameterNumSteps = getSafeNumberOfParameterSteps (*juceParam); | |||||
| parameter->SetNumberOfSteps ((uint32_t) parameterNumSteps); | parameter->SetNumberOfSteps ((uint32_t) parameterNumSteps); | ||||
| #if JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE | #if JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE | ||||