I’m encountering a very strange issue currently in our under-development plugins.
We’ve migrated to JUCE 5.4.3, and we’re using the
AudioProcessorValueTreeState but with custom parameter subclasses and custom parameter attachment classes.
Our method has been to lump automation gestures together, so when a user begins interacting with controls we grab any parameter that’s about to change and call
beginChangeGesture(). When the user is done interacting (drag or scroll, etc.) we go through the collected parameters and call
endChangeGesture() and clear out the collection array.
Testing the system out in AU on Logic, or VST in hosts like Reaper, it works fine. A drag begins the gesture for the “target” parameter, and other parameter changes (for example, EQ bands “bumping” each other around for bandwidth constraints) correctly start and stop as well.
On AAX, none of this works at all. I can actually breakpoint and see the calls to
ReleaseParameter() being made in the AAX wrapper, and the parameters update via
SetParameterNormalizedValue() in that wrapper.
The resulting behaviour on AAX is that the automation lane doesn’t add new points, but the original point at the timeline start jumps up to the parameter’s current value at the time of releasing the control.
I have encountered issues in Pro Tools if you “start” multiple gestures on the same parameter without ending them, but in my debugging I haven’t encountered multiple “starts” or “ends” for a given parameter. All parameters start and end only once per interaction, and the times those occur are correct.
Has anyone encountered this kind of issue? I don’t immediately see any differences in the AAX wrapper between v5.3.2 and v5.4.3 that would be related to this, the changes are mostly around AudioSuite plugin instantiations.