Because of the recent Avid addition of MIDI FX AAX compatibility, I’m building an AAX MIDI FX plugin using JUCE via CMake. I’m able to get through the whole AAX procedure (including the PACE code signing, which at this point I’m pretty familiar with), with the plugin working properly in the latest Pro Tools. However, I’m having troubles properly setting its category. The plugin is supposed to show up in the MIDI Plugin menu, but it keeps being detected as an Instrument, hence being listed in the wrong sub-menu. I also noticed a discrepancy in the behaviour of other developers’ MIDI Plugins (some of them fall under the correct category, others don’t). I got in touch directly with Avid with no luck, as they also couldn’t figure out a way of doing this via JUCE and suggested me to ask the JUCE team directly.
My setup consists of JUCE and CMake. I’m currently using the latest AAX SDK 2.8.0. along with JUCE 7.0.12.
Following the SDK documentation, in CMake I set the AAX_CATEGORY (defined in the JUCE CMake API documentation) to AAX_EPlugInCategory_MIDIEffect (which doesn’t currently seem to be included in the CMake API, so maybe that’s where the issue resides) - this however makes no change in the resulting plugin, which gets detected as an instrument regardless of this attribute.
I realize this is a pretty new format so I was wondering if this is at all possible with my current version of JUCE, or if I’m missing any CMake instruction for this particular case.
Ah, I see! Is your plugin showing up in the correct sub-menu?
I indeed have the IS_SYNTH attribute set to FALSE for the AAX, I’ll try change that. I have a function to set the IS_MIDI_EFFECT to TRUE only for the AU target, but I guess that’s not affecting the AAX.
Curiously, I have AU and AAX all working from a single juce_add_plugin call. If you disable IS_MIDI_EFFECT and set the AAX/AU categories, they both seem to load up as native MIDI plugins. This was tested in JUCE 7.0.12 and 8.0.1 with the latest AAX SDK 2.8.0.
I know that AU required IS_MIDI_EFFECT to work in the past, but it doesn’t seem to now. Admittedly the last time I developed a MIDI plugin was with JUCE 6 and on MacOSX 10.7 so things might have changed since then in the MacOS SDK.
The only pure #if JucePlugin_IsMidiEffect conditionals appear to be related to audio busses. As my VST version works as a synth and returns isBusesLayoutSupported it seems to be covered.
Here’s what I have set for a working config in case anyone else gets stuck here:
Nice, that’s a great find!
In our case, we deliver (in the same installer) both a MIDI FX and an Instrument for AU in the same plugin, but I’m certainly glad to know you can do that without duplicating targets.