AAX plugins are silently broken

In the latest juce breaking changes:

Change
------
AudioProcessor::getAAXPluginIDForMainBusConfig() has been deprecated.

Possible Issues
---------------
Any AudioProcessor overriding this method will fail to compile.

getAAXPluginIDForMainBusConfig has been made private. However, that doesn’t cause plugins to not compile. A private virtual function can be overridden by derived classes, but can only be called from within the base class. Instead the return type should be changed, since a virtual function can not differ by return type only.

3 Likes

I did notice this commit on the develop branch so I was aware of it.
But thinking of it more,
A nicer thing would be to deprecate it first or at least resulting a compile error.

Not causing a compilation error may have been acceptable if that function, overridden in the derived classes, were still called for backwards compatibility.
Maybe that was the intention of the JUCE team? But I can confirm that with the new implementation that function is never called, silently resulting in the plug-ins to revert to the default identifiers.

Good catch @RolandMR I think this ones on me, I think I wanted a compilation error to force the change. Clearly didn’t test that though! I’ll take a look now.

I’ve pushed a change - I’ve settled for just removing the function entirely unfortunately I couldn’t get a much more helpful error message so I think people will have to just rely on the breaking changes document for this one.

So, dumb question: how can I now set my id’s (which I need to do for backwards compatibility)?
Also, was there a reason to hide/remove this call, other the ID not being enforced to be unique (which is not necessarily a problem)?

@EikeJ if you take a look at the breaking changes document it says…

Workaround

  • Create an object which inherits from AAXClientExtensions.
  • In the object override and implement getPluginIDForMainBusConfig().
  • In the AudioProcessor override getAAXClientExtensions() and return a pointer to the object.
2 Likes

Thx! This gives the rationale as well.