OK. A lot of things to reply to:
OK. This is fixed on develop now!
They’ll know because “your customers will tell you”. Seriously, this is similar to the JUCE_FORCE_USE_LEGACY_PARAM_IDS
flag: any new JUCE user or any JUCE user developing a new plug-in will not need to override anything. Anybody who has already released an AAX plug-in is likely to test their upgrades and try loading old projects. They are likely to stumble into this problem. I know how frustrating this must be for some but any alternative is really not desirable either (we thought about this for a long time) - let’s not discuss this on this thread though (I’ve created a new forum post here) as it is likely to go completely off topic ;-).
The old numeration went through each configuration in order of the JucePlugin_PreferredChannelConfigurations
array that you specified in the channel configuration field in the Projucer. The first configuration would get the id 'jcaa'+0
, the second 'jcaa'+1
and so on. After JUCE 4.1, we go through all possible stem formats and check if the plug-in supports it. If yes, then the first configuration is assigned the 'jcaa'+0
plug-in id. The second supported configuration will be 'jcaa'+1
and so on. The order in which JUCE probes all possible formats is like this (pseudo code):
AAX_EStemFormat stemFormats[] =
{
AAX_eStemFormat_Mono,
AAX_eStemFormat_Stereo,
AAX_eStemFormat_LCR,
AAX_eStemFormat_LCRS,
AAX_eStemFormat_Quad,
AAX_eStemFormat_5_0,
AAX_eStemFormat_5_1,
AAX_eStemFormat_6_0,
AAX_eStemFormat_6_1,
AAX_eStemFormat_7_0_SDDS,
AAX_eStemFormat_7_1_SDDS,
AAX_eStemFormat_7_0_DTS,
AAX_eStemFormat_7_1_DTS
};
int pluginId = 'jcaa';
for (AAX_EStemFormat mainBusInputFormat : stemFormats)
for (AAX_EStemFormat mainBusOutputFormat : stemFormats)
if (pluginSupportsFormat (mainBusInputFormat, mainBusOutputFormat))
setAAXPluginID (pluginId++);
The getAAXPluginIDForMainBusConfig
doesn’t care and should not know about AAX stem formats. It goes through the AudioChannelSets that both JUCE and AAX supports and assigns a unique number to them which has nothing to do with the stem formats.
The plug-in id is not a param id. The plug-in id has the type AAX_CPropertyValue
which is int32
.
You’ll need to grab an old version of your code. JUCE has no way to know which order you specified your channel configurations in the Projucer.