AAX Arpeggiator


I’m trying to get a MIDI plugin working as AAX on Pro Tools, however processBlock() never seems to be called. This can be reproduced in the Arpeggiator example pip. the prepareToPlay and releaseResources hit breakpoints if set, however the block just never gets called.

I’m not using the latest JUCE (5.4.3) as there’s a some breaking changes through many plugins I have to sort out - I’m waiting for JUCE 6 and couldn’t see any commits that change AAX behaviour to fix this.

I’ve set a breakpoint in the process of the AAX_Wrapper.cpp file, and that doesn’t seem to be called either.

Are MIDI FX plugins available in Pro Tools?



Thanks @ttg.

I’ve done a bit more digging with the Arpeggiator demo, and to get MIDI out in Pro Tools, in Projucer you have to select Plugin Is Synth, Plugin MIDI Input / Output, but not Midi Effect Plugin.

You also need to add some input/output channels to the BusesProperties (and comment out the buffer.getNumChannels() == 0 assertion in the demo). You can then route the output to another track. This also works properly with other DAWs I’ve tried with the exception of Logic Pro X.

In Logic, the Midi Effect Plugin flag is required to create a MIDI FX plugin, but setting this for AAX means the processBlock is never called.

I’ve created my plugin using all 4 flags and added some in/out busses, and it works properly in every daw except Pro Tools. Some DAWs seem to require the is synth flag to correctly output MIDI, so I need all 4.

Is there a way to get AAX to ignore the JucePlugin_IsMidiEffect flag, as without it it works fine, but it needs it for AU MIDI FX?

You could always have separate Projucer files and just share all the code. I’ve done that for exceptionally fiddly projects in the past.

@hill_matthew - Thanks. I’ve done this in the past but would rather keep away from this approach. It starts to cause all sorts of trouble when it comes to the automated build process I have in place.

I’m not sure if I’m going the wrong way about this, but the only way I’ve been able to get a working AAX plugin that is marked as both Plugin Is Synth and Midi Effect Plugin in the Projucer seems to be changing the following line:

#if JucePlugin_IsMidiEffect
#if JucePlugin_IsMidiEffect && !JucePlugin_IsSynth

Is there a better way to go about this? I’d rather not have to keep a fork of JUCE, but it’s not the end of the world if not.


1 Like

I have added a similar hack to my juce fork as @mibix .
Could someone from the JUCE team comment on this?