AAX SDK  2.4.1
Avid Audio Extensions Development Kit
Linked parameter update sequences

Sequence diagrams for some common linked parameter update scenarios.

On this page

Note
To enable logging for these events at run time set DTF_AUTOMATION=file@DTP_LOW in the DigiTrace configuration file.

Notes on threading for these sequences

See also
Basic parameter update sequences

User-generated update

This is the sequence of calls for a parameter update triggered by the user. For this sequence, we assume that the edit was triggered by a GUI event. Updates from control surfaces are handled in exactly the same way, except that the parameter touch, set value, and release tokens are generated by the control surface.

In this example the updated parameter is reciprocally linked to one other parameter. These are the "linker" and "linked" parameters, respectively.

This procedure is very similar to the non-linked case described here. In the diagrams below, red arcs and pink section headings are used to indicate events that are specific to the linked parameter case.

Notes:

  1. This sequence shows the linked parameter reciprocally issuing a touch on the linker parameter. The touch fails since the linker parameter is already touched at this time. If the roles were reversed (if an edit occurred on the linked parameter) then this touch would succeed.
  2. The host flags all set value tokens that are triggered by a plug-in within the scope of AAX_IEffectParameters::UpdateParameterNormalizedValue() "UpdateParameterNormalizedValue()". When those set value tokens are processed they result in additional calls to AAX_IEffectParameters::UpdateParameterNormalizedValue() "UpdateParameterNormalizedValue()". The host sets iSource to AAX_eUpdateSource_Parameter for each of these subsequent calls to indicate that the update originated from within a parameter update event.
  3. IsParameterLinkReady() returns true during the linker parameter update because the update source is unknown and the parameter is touched. Both conditions must be true in order for the linking logic to proceed with setting linked parameters' values.
  4. IsParameterLinkReady() returns false during the linked parameter update because the source is AAX_eUpdateSource_Parameter. This prevents update cycles for reciprocally linked parameters, as demonstrated here.

High-level interface calls and events

msc_AAX_LinkedParameterUpdate_GUI_HighLevel
High-level sequence of interface calls and events for a reciprocally linked parameter update following a user-generated edit

Detailed interface calls and events

Note that this diagram assumes a GUI implementation that uses SetParameterNormalizedValue(). The implementation could also use other parameter set methods, either in AAX_IEffectParameters or directly on an AAX_IParameter. The overall sequence would remain the same.

msc_AAX_LinkedParameterUpdate_GUI
Detailed sequence of method calls and events for a reciprocally linked parameter update following a user-generated edit on the plug-in GUI

Update from automation playback

Since all parameter linking occurs while recording automation, automation playback is very simple. The automation lanes may contain any arbitrary values, so, in order to avoid fighting between incompatible values, the plug-in should respect all automation values during playback.

Notes:

  1. IsParameterLinkReady() returns false during automation playback because the updated parameter is not touched. This ensures that automation playback will proceed with the written values and also guarantees that the user will always be able to override the automation using a control surface encoder or GUI editor.

msc_AAX_LinkedParameterUpdate_Automation
Sequence of method calls and events during automation playback with linked parameters

Collaboration diagram for Linked parameter update sequences: