# \[SOLVED\]JUCE 5 AAX plugin not compatible with JUCE 4.3.1?

**URL:** <https://forum.juce.com/t/solved-juce-5-aax-plugin-not-compatible-with-juce-4-3-1/22499>\
**Category:** Audio Plugins\
**Created:** [May 18, 2017, 7:41pm UTC](https://forum.juce.com/t/solved-juce-5-aax-plugin-not-compatible-with-juce-4-3-1/22499 "2017-05-18T19:41:24Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![kunz](https://avatars.discourse-cdn.com/v4/letter/k/f19dbf/32.png) [@kunz](https://forum.juce.com/u/kunz)\
**Post date:** [May 18, 2017, 7:41pm UTC](https://forum.juce.com/t/solved-juce-5-aax-plugin-not-compatible-with-juce-4-3-1/22499/1 "2017-05-18T19:41:24Z")

</div>

I finally got all things to work with JUCE 5. What a scripting pain 🙂 I have updated from 4.3.1.

I have one big issue left. I’m having a pro tools 11 test project that includes some of our plugins. Pro Tools does not load and find all the JUCE 5 compiled plugins. The plugins are there and i can load them but they do not match with the juce 4.3.1 plugins anymore (with and without iLok signing):

I get following errors on windows and osx:  
`
Track “Inst 1” Insert A (“PLUGINNAME”) has been made Inactive because the plug-in is not present in the plug-ins folder.
Track “Inst 1” Insert B (“PLUGINNAME”) has been made Inactive because the plug-in is not present in the plug-ins folder.
`

I did not change a single line of code and i also see no relevant changes in the AppConfig.h file (only some new features like IAA).

Our plugins only use {1, 1} {2, 2} or {2, 2} channel configurations if that’s relevant. This is really a show stopper for me and i hope that a simple tweak fixes the problem. Any help is welcome!

---

<div class="post-metadata">

**Author:** ![kunz](https://avatars.discourse-cdn.com/v4/letter/k/f19dbf/32.png) [@kunz](https://forum.juce.com/u/kunz)\
**Post date:** [May 18, 2017, 9:47pm UTC](https://forum.juce.com/t/solved-juce-5-aax-plugin-not-compatible-with-juce-4-3-1/22499/2 "2017-05-18T21:47:24Z")

</div>

Ok, i see. It’s a breaking change. I have overseen that. thought this was a 4.3.0 issue only… i need to overwrite AudioProcessor::getAAXPluginIDForMainBusConfig().

This fixes the issue. Found the related thread. I was just wondering why this happened with the JUCE 5 update and not earlier.

Edit: i had the master of the 30. March (4.3.1) with the AAX unitialized something fix and this one didn’t contain this new bus id code. So i just didn’t expect the issues. The breaking changes log pointed to a much older JUCE release. Anyway, all good now…

---

<div class="post-metadata">

**Author:** ![ollierikkeskinen](https://avatars.discourse-cdn.com/v4/letter/o/919ad9/32.png) [@ollierikkeskinen](https://forum.juce.com/u/ollierikkeskinen)\
**Post date:** [May 20, 2017, 5:33pm UTC](https://forum.juce.com/t/solved-juce-5-aax-plugin-not-compatible-with-juce-4-3-1/22499/3 "2017-05-20T17:33:02Z")

</div>

Hi kunz,

Thank you for posting your solution, helped me a lot! 😌  
For completeness, if anyone else experiences the same problem, I’ll attach code example:

I have channel configuration defined statically as `{1, 1}, {2, 2}`.  
I overrided in following way:

```
int32 MyPluginAudioProcessor::getAAXPluginIDForMainBusConfig (const 
AudioChannelSet& mainInputLayout, const AudioChannelSet& mainOutputLayout,
const bool idForAudioSuite) const
{
    int uniqueFormatId = 0;
    for (int dir = 0; dir < 2; ++dir)
    {
        const bool isInput = (dir == 0);
        const AudioChannelSet& set = (isInput ? mainInputLayout : mainOutputLayout);
        int aaxFormatIndex = 0;

    // override and change order to set mono as 0 and stereo as 1
    // according to {1, 1}, {2, 2}
    // needed for backwards compatibility
    
        if (set == AudioChannelSet::mono()) aaxFormatIndex = 0;
        else if (set == AudioChannelSet::stereo()) aaxFormatIndex = 1;
        else if (set == AudioChannelSet::disabled()) aaxFormatIndex = 2;
        else if (set == AudioChannelSet::createLCR()) aaxFormatIndex = 3;
        else if (set == AudioChannelSet::createLCRS()) aaxFormatIndex = 4;
        ...
        etc

```

So copypaste the existing implementation and switch the order around.

Olli

---

<div class="post-metadata">

**Author:** ![ollierikkeskinen](https://avatars.discourse-cdn.com/v4/letter/o/919ad9/32.png) [@ollierikkeskinen](https://forum.juce.com/u/ollierikkeskinen)\
**Post date:** [May 20, 2017, 10:08pm UTC](https://forum.juce.com/t/solved-juce-5-aax-plugin-not-compatible-with-juce-4-3-1/22499/4 "2017-05-20T22:08:13Z")

</div>

Hmm, seems like I celebrated too early, after more extensive testing, it now works on Mac, but not on Windows.  
Any ideas which stone I forgot to turn?

---

<div class="post-metadata">

**Author:** ![kunz](https://avatars.discourse-cdn.com/v4/letter/k/f19dbf/32.png) [@kunz](https://forum.juce.com/u/kunz)\
**Post date:** [May 22, 2017, 8:29am UTC](https://forum.juce.com/t/solved-juce-5-aax-plugin-not-compatible-with-juce-4-3-1/22499/5 "2017-05-22T08:29:34Z")

</div>

Your solution is almost right. You will find some working code examples here:

> [@Transition from 4.1.0 to 4.3.1 and AAX I/O issue](https://forum.juce.com/t/transition-from-4-1-0-to-4-3-1-and-aax-i-o-issue/20879/27):
>
> OK. A lot of things to reply to: OK. This is fixed on develop now! &nbsp; 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 bu…
