Working on some linked parameter logic for a JUCE-based AAX plugin, and it seems it is not currently possible to implement linked parameters the way that Avid specifies in their documentation. Their linked parameter docs indicate that parameter notifications should be sent when a parameter is “touched”, either from the plugin’s GUI or from an external client such as a control surface. The latter requires that the plugin be notified when UpdateParameterTouch is called outside of the plugin, but the juce_AAX_Wrapper does not currently inform the plugin of these touch changes, so my plugin cannot respond properly to touch messages/parameter updates from control surfaces (to the plugin, it incorrectly appears that control surface messages are just automation, so we can’t do the special logic for control surfaces).
This line from the AAX docs confirms that touch tokens can originate outside of the plugin, but JUCE is currently ignoring these:
Other clients besides the plug-in may touch a parameter. Since the TOUCH token can come from a control surface the touch state will actually come back to the plug-in via:...
The key point from the AAX docs that we can’t implement for linked parameters with the current JUCE AAX wrapper without external touch notifications is this:
the key rule for linked parameters is to link during real-time user edits only (where user edits are either from-gui or from-control-surface; any param change surrounded in touch)
Would it be possible to plumb these external touch tokens through to the JUCE audio processor parameters? Maybe calling beginUserGesture and endUserGesture on the param when UpdateParameterTouch is called in the AAX wrapper, so it can implement linked parameter properly? Or maybe some internal state in the AudioProcessorParameter like “isTouched” that the AAX wrapper can set without invoking the current side effects of begin/endUserGesture?
Let me know if more info is required.