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

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

This commit is contained in:
Tom Poole 2019-01-15 17:16:57 +00:00
parent c9a7b41864
commit 3687710c58

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