In case anyone else finds this useful:
The following is what I had to do to make Pro Tools 10 projects using an old RTAS version of my JUCE-based plugin load in Pro Tools 2018 using a recent AAX 64-bit version of the plugin. This plugin is has the old bus / audio channel combinations specification in the Projucer, namely: {1,1}, {1, 2}, {2, 2}.
int32 MyPluginAudioProcessor::getAAXPluginIDForMainBusConfig(const AudioChannelSet& mainInputLayout, const AudioChannelSet& mainOutputLayout, bool idForAudioSuite) const
{
// Back when we released the RTAS version, JUCE generated plugin IDs (starting from 'jcaa') incrementing in the order
// of the specified supported channel configurations.
// But, for newer JUCE versions, plugin IDs are generated in another way (see the default implementation of this method).
// So, in order to make Pro Tools still see the newer releases as the same plugin as before, we need to keep using the same IDs.
// In the RTAS version, we had the following (and that's what we'll be forcing here in the code):
// - for mono-mono: 'jcaa'
// - for mono-stereo: 'jcab'
// - for stereo-stereo: 'jcac'
int uniqueFormatId = 0;
if (mainInputLayout == AudioChannelSet::mono())
{
if (mainOutputLayout == AudioChannelSet::mono())
uniqueFormatId = 0;
else if (mainOutputLayout == AudioChannelSet::stereo())
uniqueFormatId = 1;
else
jassertfalse;
}
else if (mainInputLayout == AudioChannelSet::stereo())
{
if (mainOutputLayout == AudioChannelSet::stereo())
uniqueFormatId = 2;
else
jassertfalse;
}
else
{
jassertfalse;
}
return (idForAudioSuite ? 0x6a796161 /* 'jyaa' */ : 0x6a636161 /* 'jcaa' */) + uniqueFormatId;
}
Note: The old RTAS version didn’t show up under the AudioSuite menu, but the new AAX version does (which is a good thing in my case). You can disable this if you want to with the pre-processor flag JucePlugin_AAXDisableAudioSuite (more info: Was AudioSuite support quietly added to Juce?)
With thanks to @ttg for pointing me in this direction!
