AAX DSP support in JUCE 8

Does JUCE 8 offer support for AAX DSP aswell?
Marketing material states: “JUCE has teamed up with Avid to lower the barrier to entry for developing AAX plugins. Starting with JUCE 8, the AAX SDK source is now distributed with JUCE. It’s never been easier to get started developing audio plugins for Avid’s platforms such as ProTools, Media Composer and VENUE consoles.” VENUE is AAX DSP only. If so, what are the equivalents of AAX DSP realtime algorithm and communication ports etc in JUCE audio processors? Or is it “just compile with TI compiler and you’re good to go”?

1 Like

AFAIK there’s no direct “support” within JUCE8. So it’s not like you’ll just flip a compiler switch and you’re done (there would be no way for the build system to know which part of the code is supposed to go on the DSP anyway). It’s just that the SDK is now shipped with JUCE, which you had to add yourself previously.

The bundled SDK doesn’t come with the documentation though. You can get that with the original SDK by signing up with the Avid Developer program (which you need to do anyway). IIRC it also contains tutorials on building a JUCE plugin with AAX DSP.

Edit: I just had a quick look and it seems I did not recall correctly. Also I think you need tooling from TI (CodeComposer Studio) as well. :thinking:

1 Like

AAX documentation is clear on this, but how is this ‘translated’ into Juce? What is the ‘AAX realtime algorithm’ in Juce and so on? Surely ‘anything that runs on audio thread’ should correspond to ‘AAX realtime algorithm’ but how would the communcation between the realtime algorithm (“processBlock”?) and GUI/data model be handled in Juce? AAX docs describes use of ‘algorithm’s context’ as the algorithm’s interface to the outside world, but how should this be implemented in Juce?

You can get some idea with the Juce v5 era example that Rob Majors put together (link), I don’t know if this has been maintained throughout the v6-8 eras.

Isn’t that about patching Juce AAX Wrapper to be DSP compatible, but isn’t this now part of Juce 8? Or at least there are several defines for TI in Juce 8 AAX SDK.

As far as I understand it, you’d need to do some extra manual work to integrate AAX DSP with any version of Juce.

Sure, but what exactly should be done? E.g. Juce AAX plugin client has struct JUCEAlgorithmContext, which to understanding would be the algorithm context for AAX plugin, but should this be used in ‘user code’ and if so, how?

I think your best bet is to diff the Avid sample vs the tag it was built on, then you can see what changed when this was done in v5. From there, work forwards in a v8 tree.

1 Like

I’m just not sure how relevant that example is anymore if the AAX wrapper patch is now part of Juce.

I don’t believe AAX DSP support has been added. There is no mention of it in the commit history, and I think it gets more and more incompatible as JUCE develops since the DSP chips do not run modern C++.

I did the diff Verbonaut suggested with JUCE 7 a while ago and got it building. The example is still relevant, I believe, and it’s commented with ‘AVID PATCH’ notes to help.

I think there is some confusion here, the AAX wrapper and AAX SDK are two different things. The AAX wrapper hasn’t changed (or any changes are minor), the AAX SDK is what has now been included with JUCE. Previously you had to download and link this manually and keep it up to date yourself. AAX DSP support has not been added to the default JUCE AAX wrapper.

1 Like

Thank you for clarification!

@anthony-nicholls Could you please point out where to get this “JUCE AAX wrapper” in JUCE SDK ?
Could you also point out on the documentation about AAX DSP ?

You don’t need to get the “JUCE AAX wrapper”, when I say “JUCE AAX wrapper” I just mean the code that allows you to export an AAX plugin using JUCE. if you want to take a look at this code you can find it here JUCE/modules/juce_audio_plugin_client/juce_audio_plugin_client_AAX.cpp at master · juce-framework/JUCE · GitHub.

There is nothing in the JUCE documentation regarding “AAX DSP” because it isn’t supported by JUCE.

1 Like

The tricky thing is, we’re not supposed to talk about AAX DSP.

So that might explain things a bit.

1 Like

Does anybody know at all what is “AAX DSP” ?
Like I need to build JUCE AAX plugin which supposed to work with TI DSP chips,
but this JUCE AAX plugin is supposed to run on special hardware controlled by Windows OS, so essentially it’s regular JUCE AAX win plugin.

What then makes it “DSPish” ?

I see some “signs” of DSP inside AAX SDK
AAX/SDK/Interfaces/AAX_Properties.h

AAX DSP is an AAX plugin with DSP that can run on Avid’s TI DSP-based products. JUCE doesn’t support this directly out of the box, but if you login to your AVID account, I think you should be able to access an example of a JUCE plugin with AAX DSP support. This will include a modified version of the JUCE AAX wrapper. Customers will generally maintain their own internal modified version of JUCE in order to support AAX DSP while using JUCE.

The code in the AAX SDK included with JUCE is the same one as if downloaded from AVID, therefore it shouldn’t be a surprise that it has some mention of TI/DSP. It would just be the JUCE AAX wrapper that needs modifying to support AAX DSP.

For more information I suggest accessing the AAX SDK and all the additional resources at this link AAX SDK. As well as the example I mentioned earlier there is also the documentation included in the SDK which we strip out before adding it to the JUCE repo. There is more information in there about developing for AAX DSP. For any more info you can also direct questions to audiosdk@avid.com.

3 Likes