AAX SDK  2.4.1
Avid Audio Extensions Development Kit
Classes | Documents

Optional (but recommended) system for managing AAX plug-in parameters.

The Parameter Manager is a generic container for a plug-in's parameters, which constitute the complete externally-facing state of a plug-in's data model. Additional internal state data may be stored via settings chunks. The Parameter Manager is owned and operated by the plug-in's Data model interface.

The Parameter Manager provides a convenient and consistent interface by which a plug-in's data model implementation may access its parameters. Other plug-in components that require access to the data model may also use this interface, or a proxy of it, to view the current state of the plug-in.

In the Parameter Manager, implementation-specific parameter behaviors such as taper and display formatting are modular and are applied through delegation. Because of this model, it is possible to easily create a wide variety of behavior combinations without additional subclassing; any display behavior may be combined with any taper behavior, and a newly written behavior can be quickly "mixed in" to many parameters.

Parameter concepts

Parameter value domains

In AAX, parameter values can be represented in one of two "domains". Developers work with parameters in the real domain, while the host handles parameters in a scaled, normalized format.

Real (or "logical") domain
AAX plug-ins and parameter controllers work with typed parameter values that represent the real (logical) state of the parameter. The type, form, and meaning of this value is dependent on the parameter's implementation and is unknown to the host.
Normalized domain
The AAX host works with parameter values that have been scaled (normalized) to a type-agnostic format. Although normalized values make little logical sense, they provide the host with a consistent means of handling, storing, and communicating parameters' values without having to worry about the actual implementation or meaning of the parameters. Normalized parameter values are 64-bit floating point and are scaled to a range of [0, 1].

For more information about conversion between parameter domains, see AAX_IParameter.

Note
The AAX_IEffectParameters interface currently utilizes a secondary normalization to full-scale int32_t values. In the future, this will be unified with the double precision floating point normalization documented above.

Taper

A taper is the conversion function that translates a parameter's value between its real and normalized forms.

For example, a taper could be created that converts between a normalized value ([0, 1]) and a real frequency value ranging from [20 2000]. The conversion between these two ranges could be linear or logarithmic, or could use any other desired mapping. This mapping, as well as the specific range of the possible logical values, is defined by the taper.

For more information about tapers in AAX, see AAX_ITaperDelegate.

Delegates

In AAX, individual parameters achieve their own unique behavior by being associated with behavioral delegates.

For example, when AAX_CParameter::SetNormalizedValue() is called on a particular parameter through its AAX_IParameter interface, the AAX_CParameter calls into a AAX_ITaperDelegate that it owns in order to convert the normalized value to its real equivalent. This real value is then set as the parameter's new state.

For more information about how delegates are used to create a parameter's behavior see AAX_CParameter

Model-View-Controller

AAX adheres roughly to a Model-View-Controller pattern. The Parameter Manager functions within the context of AAX_IEffectParameters, which in turn acts as an AAX plug-in's Data Model in an MVC sense. Views, such as the plug-in's GUI, attached control surfaces, or the automation facilities in the AAX host, are given access to the Data Model via a central Controller, which is represented by the AAX_IController interface.

For more information about how MVC applies to AAX, see the Data model interface documentation page.

Classes

class  AAX_CParameter< T >
 Generic implementation of an AAX_IParameter. More...
 
class  AAX_CParameterManager
 A container object for plug-in parameters. More...
 
class  AAX_IParameter
 The base interface for all normalizable plug-in parameters. More...
 

Documents

 Taper delegates
 Classes for conversion to and from normalized parameter values.
 
 Display delegates
 Classes for parameter value string conversion.
 
Collaboration diagram for Parameter Manager: