AAX SDK  2.1.1
Avid Audio Extensions Development Kit
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Plug-in type conversion

Specification for valid conversions between plug-in types.

About this specification

The specification on this page defines the valid AAX plug-in type conversions. An AAX host may use this specification to perform automatic type conversions. For example:

Terminology

In this specification the term "Type" refers to a specific configuration of an AAX plug-in.

Each Type is uniquely identified by a combination of five values:

Each Type is defined by a particular call to AAX_IComponentDescriptor::AddProcessProc_Native or AAX_IComponentDescriptor::AddProcessProc_TI in the plug-in's description method.

The Plug-In ID is defined as one of AAX_eProperty_PlugInID_Native or AAX_eProperty_PlugInID_TI.

In this specification, the format for describing an ID is:

[ ID triad + sample rate + architecture ]

Where the ID triad may be expanded to [ [Manufacturer ID] [Product ID] [Plug-In ID] ]

For example:

Scope of this specification

For the purposes of this specification we are not concerned with AudioSuite Types. Currently these Types are never type-converted.

In theory, an AAX host may apply a "partial" type conversion by swapping between different ProcessProcs without destroying and re-building any of the plug-in's objects (data model, GUI). For the purposes of this specification we are not concerned about whether a given conversion is "partial" or "total"; all conversions are treated the same.

Plug-in conversions are also required between Types of different stem formats. In fact, the supported stem format is an integral part of a Type's unique identifier. This specification ignores the question of stem formats entirely; we assume that each Type supports all necessary stem formats for legal conversion with other Types.

For now, this specification does not consider any differences between AAX_eProperty_Deprecated_Plugin_List and AAX_eProperty_Related_DSP_Plugin_List / AAX_eProperty_Related_Native_Plugin_List. Deprecated and Related types are treated equivalently.

Topological constraints

Implicit conversions

The AAX host should automatically convert between Types within the following IDs:

These conversions occur only if both Types are included in the plug-in when the conversion is made. Consider the following scenario:

  1. A session is saved including an plug-in instance with the following Type identifier: [ My ID triad + 48 kHz + TI ]
  2. The plug-in is updated to a version that does not include this Type identifier, but that does include [ My ID triad + 48 kHz + Native ]
  3. The session is opened on a Native system

In this scenario, if the plug-in had not been updated then an automatic conversion would occur. However, since the plug-in no longer includes the saved Type identifier, no automatic conversion occurs.

A plug-in can work around this situation by including the "old" Type identifier as a Related (or Deprecated) Type (see Explicit conversions.)

When a plug-in instance is saved after making an implicit conversion, plug-ins may be saved with the session using their new Type identifier. This is not required. For example, Pro Tools will prefer to save plug-in instances that were converted from DSP types as DSP, even if they were converted to corresponding Native types when the session was loaded onto and saved from a native Pro Tools system.

Explicit conversions

AAX includes properties that allow a plug-in to define explicit relationships between different Types. These properties only operate on ID triads. Each property can be associated with an array of ID triads to define a one-to-one or a many-to-one association between the given ID triads and the specific Type to which the property is attached.

The AAX host should convert between related Types within the following constraints:

These conversions will occur regardless of whether the related ID triad is used for any of the Types in the plug-in.

When a plug-in instance is saved after making an explicit conversion, all plug-ins are saved with the session using their new Type identifier.

Collaboration diagram for Plug-in type conversion: