so I was finishing up the AAX version of my plugin today and thought “let’s run it through the AAX validator tests as a last check”. The plugin has been working just fine for me and my beta-testers, in the latest Pro Tools versions (and even in Pro Tools 10 on Windows using the 32-bit version), but apparently the AAX validator tools gave me a failure on 1 test where it complains about all of my parameters, saying something like this:
parameter: - number_of_steps: 2147483647 parameter_name: InGain parameter_result: "ERROR: Number of parameter steps exceeds limit"
That number of steps is 2^31 - 1 (so the max. value of a signed 32-bit integer).
This is for a 64-bit AAX plugin.
I am not using the new AudioProcessorParameter / APVTS classes and am using setParameter/getParameter. (I’m wondering if it is even be possible to switch to these while still keeping backwards compatibility with old versions from several years ago)
I already had to set various JUCE flags to make sure the plugin remains compatible with older versions (VST and AU, but also with Pro Tools 10 projects that still had the old RTAS version of my plugin for which I wanted to have the AAX automatically replace the RTAS version while keeping all plugin state and automation correct):
JucePlugin_AAXDisableAudioSuite=0 JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE=1 JUCE_FORCE_USE_LEGACY_PARAM_IDS=1 JucePlugin_VSTChunkStructureVersion=0x0000006f
(and I overrode getAAXPluginIDForMainBusConfig to return IDs compatible with older RTAS version)
What is the exact reason the AAX version of my plugin fails the AAX validator? Is there anything I could/should do to change/limit these “number_of_steps”? And if I do so, will this also affect the VST2 / AU version of the plugin (or mess up old RTAS settings which were saved with a plugin version built with Juce back in 2013)?
Any help/advice appreciated.
Of maybe I should just ignore this issue (as Pro Tools seems to run the plugin just fine)?
[this is with the Juce 5.4.1 tagged version of 12 Nov. 2018]
When stepping into the code while running in Pro Tools, I can verify that the parameters are being set as AAX_eParameterType_Continuous (because parameterNumSteps > 1000), and the reported number of steps is indeed obtained via LegacyAudioParameter which calls AudioProcessor::getDefaultNumParameterSteps, which is indeed 0x7fffffff (the number reported by the AAX validator). So, I think the code seems to do the expected thing, but there must be a reason the AAX validator reports an error…