I want to use AAX_CHostProcessor interface for AAX plugins. I know JUCE doesn’t support it. I wonder if someone uses it and guides me to add that to my project?
Basically, I need to use PreRender, PostRender and RenderAudio member functions in it for an Audio Suite plugin (offline).
The original poster is probably looking to do something AudioSuite specific like access all the samples to be processed before the actual processing happens. (Consider processings like normalization or reversing of the audio, which AudioSuite allows to do.)
Remember! CHostProcessor behaves different than Native AAX running with AudioSuite property (for example: input number will be your maximum supported if in multi-input mode or mono).
It was tested on Pro Tools 10.3.10 (32-bit) and Pro Tools 2018 (64-bit).
(it doesn’t support older Pro Tools < 10.3.5 as this is based on AAX API).
AudioProcessor::wrapperType got wrapperType_AudioSuite (to allow code branching for CHostProcessor version…).
AudioProcessor now has analyseBlock to allow analysis stage prior to processBlock.
AudioProcessorEditor has getCustomLabel to allow customized naming on AudioSuite UI.
We have random audio access encapsulated to juce::AudioFormatReader.
Note: If ROLI wants to merge it into their branch they’re always welcome And everyone’s welcome to use our changes with no extra limitations on top of the JUCE license etc
Hey!
I’m using sound radix modules and are great. Is there a way to build only the AudioSuite AAX version of the plugin or make impossible for the user to insert it on a track?
@yairadix is there a way to know when the user selects a track with a different channel number (and layout)? Something like a callback or some sort of workaround that I could try to update the channel-configuration of my audiosuite plug-in before pressing render.
IIUC no. Only when the user clicks analyze/render you can know the layout. The UI can also be opened without any selection and the selection can also include several regions with different layouts.
@ttg@yairadix Very grateful for your AudioSuite support! I think I am missing something though.
I have defined the preprocessor definitions JucePlugin_EnhancedAudioSuite and JucePlugin_EnhancedAudioSuite_RequiresAnalysis since I always want an offline analysis pass prior to the rendering pass. I have overridden the:
AudioProcessor::prepareToAnalyse()
AudioProcessor::analyzeBlock()
AudioProcessor::analysisFinished()
AudioProcessor::isAuthorized()
methods but, the plug-in seems to receive no callbacks to the above methods.
Am I missing something?
At which point are the above methods going to receive a callback?
as soon as I have my AudioSuite plug-in open and select a region from an audio clip?
do I have to create a button which will call the AudioProcessor::EnhancedAudioSuiteInterface->requestAnalysis()
do I have to define a preprocessor definition which will enable a native AAX Analyze button (like the Render one) and then be able to get a callback at the AudioProcessor::analyzeBlock() method?
OK, I just figured out that Ι have to define the JucePlugin_EnhancedAudioSuite_OptionalAnalysis preprocessor definitions to enable the Analyze button.
I used the JucePlugin_EnhancedAudioSuite_RequiresAnalysis which does not enable the Analyze button but triggers a callback to the analyzeBlock() method before the processBlock() method when the Render button is pressed.
Yeah. it’s worth noting that those flags (wrapping Avid’s flags) are quite tricky as they have dependencies . It’s worth reading/asking on Avid’s about those since CHostProcessor is behaving different than AAX in many ways.
Hey there,
I was wondering about calling the AnalyzeAudio callback clicking on a custom GUI Element, How can I achieve this feature? I saw someone already achieved this.
Thanks!
The reason it is partial is due to cyclic/construction order.
I don’t remember the exact reason but the processor is created only once a render/analysis been made. so current ForceAnalysis / ForceRender would ‘link’ only after first time it was initiated by the host (Pro Tools) itself.
Feel free to send a PR if you have a better solution
AFAIK only selected areas can be processed by your side. There is no way to change that behavior. A user should select whole clip(s) to process it at ones.