How are plug-ins distinguished in Pro Tools?

Does anybody have any insights on how Pro Tools identifies AAX plug-ins? We’re releasing new versions some of our plug-ins and we’ve made many changes “under the hood”. Backward compatibility is a requirement and the new versions recall the last settings fine in other hosts. The AAX version, however, is said to be missing in Pro Tools when I try to reload a session with instances of the earlier versions. The AAX identifiers are the same and interestingly, I do get the settings recalled when I reload the new version in the same insert slot in Pro Tools. It would be great to get rid of the “Missing plug-in” message, though. What else could Pro Tools use to separate plug-ins apart from the AAX identifier?

There are plugin identifier but an identifier per bus flavor as well.
There has been some order changes in this in latest Juce version.

1 Like

Thank you very much, Oliver! Do you know if it is possible to override the bus order to get it working? Or are we trapped if we want to use the newest version of JUCE?


JUCE now generates the AAX plug-in bus layout configuration id independent from
the position as it appears in the Projucer’s legacy “Channel layout
configuration” field.

Possible Issues

ProTools projects generated with a < 4.3.0 JUCE versions of your plug-in, may
load the incorrect bus configuration when upgrading your plug-in to >= 4.3.0
versions of JUCE.


Implement AudioProcessor’s getAAXPluginIDForMainBusConfig callback to manually
override which AAX plug-in id is associated to a specific bus layout of your
plug-in. This workaround is only necessary if you have released your plug-in
built with a version previous to JUCE 4.3.0.


The new multi-bus API offers more features, flexibility and accuracy in
specifying bus layouts which cannot be expressed by the Projucer’s legacy
“Channel layout configuration” field. The native plug-in format backends use
the new multi-bus callback APIs to negotiate channel layouts with the host -
including the AAX plug-in ids assigned to specific bus layouts. With the
callback API, there is no notion of an order in which the channel
configurations appear - as was the case with the legacy “Channel layout
configuration” field - and therefore cannot be used to generate the AAX plug-in
id. To remain backward compatible to pre JUCE 4.0.0 plug-ins, JUCE does
transparently convert the legacy “Channel layout configuration” field to the
new callback based multi-bus API, but this does not take the order into account
in which the channel configurations appear in the legacy “Channel layout
configuration” field.

1 Like

That’s perfect – thanks again! :slight_smile:

And it works again – what a relief! :blush: