Hey,
I’d like to get a Page Table implemented for a plugin I’m currently working on, but I struggle to understand how JUCE exposes parameter types to ProTools. I.e. I have an AudioParameterInt with range 0 to 4 on my APVTS that ProTools sees as a continuous parameter.
Not being an experienced ProTools user myself, I’d be very grateful if anybody can point me in the direction of some documentation or has any other hints how this works.
To implement a page table you’ll need to return a pointer to an instance of an AAXClientExtensions. Then that object will need to override getPageFileName(). The page file will need to be located inside the plugin bundle as detailed in the docs but you can also optionally override getPageFileSearchPath() if you want to work with a page file located elsewhere.
It’s been a while since I did anything with a page file but I’m not sure you should need to know too much about the inner workings of JUCE to use one.
1 Like
Thank you for the pointer, that should hopefully get me started.
1 Like
I’ve finally gotten around to implementing the AAXClientExtensions and that’s working fine, thanks to @anthony-nicholls again for the quick help. However the ProTools person at my customer still reports that 2 parameters of the plugin that are created from AudioParameterInt are picked up by his controller as essentially continuous.
Is this a general limitation of JUCE, perhaps stemming from AudioProcessorValueTreeState::Parameter being float under the hood or is there some way to exert finer control in how ValueTreeState Parameters are exposed to controllers in ProTools?
I think I found my mistake.
I created the AudioProcessorValueTreeState::Parameter via
std::make_unique<juce::AudioParameterInt>([...])
but that doesn’t allow overriding the isDiscrete() getter.
Using
std::make_unique<juce::AudioProcessorValueTreeState::Parameter>([...])
with AudioProcessorValueTreeStateParameterAttributes exposes the withDiscrete() method.
I still need to test it but I think I’m on a good path now.
1 Like