AAX SDK  2.4.1
Avid Audio Extensions Development Kit

Supported features in each AAX host.

Host Support

These tables list AAX host support for various AAX interfaces, as well as support for general features. The tables include the version number for the earliest version of each Avid host software which supports the given interface or feature.
The earliest version of each host to support AAX plug-ins is: For more information about versioning in AAX, including how to check for host support of a particular interface, see The Avid Component Framework (ACF).

Platform Support

Pro Tools Media Composer VENUE

AAX Native 10.0 8.1 none
AAX DSP 10.0 none 4.1
AAX Hybrid 11.0* none none
Offline processing (AudioSuite) 10.0 8.1** none
ProcessProc / data model co-location 10.0 8.1 none
Monolithic topology 10.0 8.1 none
Native processor architecture 10: x86/i386
11+: x86-64
8.1+: x86-64 4.1: x86/i386
4.5+: x86-64

Note
Pro Tools 11.0 supports AAX Hybrid processing for real-time plug-ins only. Support for AudioSuite processing for AAX Hybrid is supported starting in Pro Tools 11.1.
Media Composer 8.5 and higher support both multichannel and mono AudioSuite processing. Earlier versions of Media Composer support mono only.

Describe Interfaces

Pro Tools Media Composer VENUE

AAX_IACFCollection 10.0 8.1 4.1
AAX_IACFComponentDescriptor 10.0 8.1 4.1
        V2 11.0 8.1 4.5?
        V3 12.8 none 5.6
AAX_IACFEffectDescriptor 10.0 8.1 4.1
        V2 11.0 8.1 4.5?
AAX_IACFPropertyMap 10.0 8.1 4.1
        V2 11.0 8.1 4.5?
        V3 12.9 none 5.6
AAX_IACFDescriptionHost 12.8 none none
AAX_IACFFeatureInfo 12.8 none none

Run-Time Interfaces

Pro Tools Media Composer VENUE

AAX_IACFAutomationDelegate 10.0 8.1 4.1
AAX_IACFController 10.0 8.1 4.1
        V2 11.0 8.1 none
        V3 12.4 8.6 none
AAX_IACFEffectDirectData 10.0 8.1 4.1
        V2
AAX_IACFEffectGUI 10.0 8.1 4.1
AAX_IACFEffectParameters 10.0 8.1 4.1
        V2 11.0 8.1 4.5?
        V3 11.2 8.1 none
        V4 none none 5.6
AAX_IACFHostProcessor 10.0 8.1 none
        V2 12.0 none none
AAX_IACFHostProcessorDelegate 10.0 none none
        V2 11.0 none none
        V3 12.0 none none
AAX_IACFHostServices 10.0 8.1 4.1?
        V2 12.0 8.6 none
        V3 12.8.3 none none
AAX_IACFPrivateDataAccess 10.0 8.1 4.1
AAX_IACFTransport 10.0 8.5 (partial) none
        V2 10.3.7 8.5 (partial) none
        V3 2021.3 none
AAX_IACFViewContainer 10.0 8.1 4.1
        V2 12.0.1 none none
AAX_IACFPageTable 12.8 none 5.7
        V2 12.8.2 none 5.7
AAX_IACFPageTableController none none 5.7

Features

Pro Tools Media Composer VENUE

Surround Stem Formats (3-8 channels) 10.0 8.1 none
7.1.2 Stem Format 12.8 none none
Ambisonics Stem Formats 12.8.2 none none
Plug-in type conversion 10.3.8, 11.0*, 11.1 none none
Auxiliary Output Stems 10.0 none none
Sidechain Inputs 10.0 8.5 none
MIDI 10.0 none none
Automation recording and playback 10.0 none none
Plug-in presets 10.0 8.4 4.1
External control surfaces 10.0 8.1 none

Host Compatibility Notes

See also
Compatibility Notes in the Pro Tools Guide document
Member AAX_CMidiPacket::mIsImmediate
This value is not currently set. Use mTimestamp == 0 to detect immediate packets
Member AAX_CParameter< T >::AAX_CParameter (AAX_CParamID identifier, const AAX_IString &name, T defaultValue, const AAX_ITaperDelegate< T > &taperDelegate, const AAX_IDisplayDelegate< T > &displayDelegate, bool automatable=false)

As of Pro Tools 10.2, DAE will check for a matching parameter NAME and not an ID when reading in automation data from a session saved with an AAX plug-ins RTAS/TDM counter part.

As of Pro Tools 11.1, AAE will first try to match ID. If that fails, AAE will fall back to matching by Name.

Module AAX_DigiTrace_Guide
This feature is available in Pro Tools 12.6 and higher
Member AAX_eConstraintLocationMask_FixedLatencyDomain
This constraint is not currently supported by any AAX host
Member AAX_eCurveType_Dynamics
Pro Tools requests this curve type for Dynamics plug-ins only
Member AAX_eCurveType_EQ
Pro Tools requests this curve type for EQ plug-ins only
Member AAX_eCurveType_Reduction
Pro Tools requests this curve type for Dynamics plug-ins only
Member AAX_eDataInPortType_Incremental
Supported in Pro Tools 12.5 and higher; when AAX_eDataInPortType_Incremental is not supported the port will be treated as AAX_eDataInPortType_Unbuffered
Member AAX_EHostModeBits
Supported in Venue 5.6 and higher
Member AAX_eNotificationEvent_ASPreviewState

Supported in Pro Tools 11 and higher

Not supported by Media Composer

Member AAX_eNotificationEvent_ASProcessingState

Supported in Pro Tools 11 and higher

Not supported by Media Composer

Member AAX_eNotificationEvent_DelayCompensationState
Supported in Pro Tools 12.6 and higher
Member AAX_eNotificationEvent_EnteringOfflineMode
Supported in Pro Tools 11 and higher
Member AAX_eNotificationEvent_ExitingOfflineMode
Supported in Pro Tools 11 and higher
Member AAX_eNotificationEvent_HostModeChanged
Supported in Venue 5.6 and higher
Member AAX_eNotificationEvent_LogState
Pro Tools currently only sends this notification to the Direct Data object in the plug-in
Member AAX_eNotificationEvent_MaxViewSizeChanged
Supported in Pro Tools 11.1 and higher
Member AAX_eNotificationEvent_PresetOpened
Supported in Pro Tools 11 and higher
Member AAX_eNotificationEvent_PriorSettingsInvalid
Supported in Venue 5.6 and higher
Member AAX_eNotificationEvent_SessionBeingOpened

Supported in Pro Tools 11 and higher

Not supported by Media Composer

Member AAX_eNotificationEvent_SessionPathChanged
Supported in Pro Tools 11.1 and higher
Member AAX_eNotificationEvent_SideChainBeingConnected
Supported in Pro Tools 11.1 and higher
Member AAX_eNotificationEvent_SideChainBeingDisconnected
Supported in Pro Tools 11.1 and higher
Member AAX_eNotificationEvent_SignalLatencyChanged
Supported in Pro Tools 11.1 and higher
Member AAX_eNotificationEvent_TrackNameChanged

Supported in Pro Tools 11.2 and higher

Not supported by Media Composer

Member AAX_ePlugInStrings_Progress
Not currently supported by Pro Tools
Member AAX_eProcessingState_BeginPassGroup
AudioSuite pass group notifications are supported starting in Pro Tools 12.0
Member AAX_eProcessingState_EndPassGroup
AudioSuite pass group notifications are supported starting in Pro Tools 12.0
Member AAX_eProperty_Constraint_NeverUnload
AAX_eProperty_Constraint_NeverUnload is not currently implemented in DAE or AAE
Member AAX_eProperty_DestinationTrack
This property is not supported on Media Composer
Member AAX_eProperty_DisableAudiosuiteReverse
AAX_eProperty_DisableAudiosuiteReverse is not currently implemented
Member AAX_eProperty_LatencyContribution
Maximum delay compensation limits will vary from host to host. If your plug-in exceeds the delay compensation sample limit for a given AAX host then you should note this limitation in your user documentation. Example limits:
  • Pro Tools 9 and higher: 16,383 samples at 44.1/48 kHz, 32,767 samples at 88.2/96 kHz, or 65,534 samples at 176.4/192 kHz
  • Media Composer 8.1 and higher: 16,383 samples at 44.1/48 kHz, 32,767 samples at 88.2/96 kHz
Member AAX_eProperty_OptionalAnalysis
In Media Composer, optional analysis will also be performed automatically before each channel is rendered. See MCDEV-2904
Member AAX_eProperty_SideChainStemFormat

AAX_eProperty_SideChainStemFormat is not currently implemented in DAE or AAE

Currently Pro Tools supports only AAX_eStemFormat_Mono side chain inputs

Member AAX_eProperty_UsesClientGUI
Currently supported by Pro Tools only
Member AAX_IACFEffectParameters::CompareActiveChunk (const AAX_SPlugInChunk *iChunkP, AAX_CBoolean *oIsEqual) const =0
In Pro Tools, this method will only be called if a prior call to GetNumberOfChanges() has indicated that the plug-in's state has changed. If the plug-in's current settings are different from the settings in aChunkP then the plug-in's Compare Light will be illuminated in the plug-in header, allowing users to toggle between the plug-in's custom state and its saved state.
Member AAX_IACFEffectParameters::GetCurveData (AAX_CTypeID iCurveType, const float *iValues, uint32_t iNumValues, float *oValues) const =0
Versions of S6 software which support the GetCurveDataDisplayRange() method will not display a plug-in's curve data unless both GetCurveData() and GetCurveDataDisplayRange() are supported by the plug-in.
Member AAX_IACFEffectParameters::GetParameterNameOfLength (AAX_CParamID iParameterID, AAX_IString *oName, int32_t iNameLength) const =0
In most cases, the AAX host will call GetParameterName() or GetParameterNameOfLength() to retrieve parameter names for display. However, when Pro Tools is retrieving a plug-in name for display on a control surface the XML data stored in the plug-in's page tables will be used in preference to values retrieved from these methods.
Member AAX_IComponentDescriptor::AddAuxOutputStem (AAX_CFieldIndex inFieldIndex, int32_t inStemFormat, const char inNameUTF8[])=0

There is a hard limit to the number of outputs that Pro Tools supports for a single plug-in instance. This limit is currently set at 256 channels, which includes all of the plug-in's output channels in addition to the sum total of all of its aux output stem channels.

Pro Tools supports only mono and stereo auxiliary output stem formats

Member AAX_IComponentDescriptor::AddClock (AAX_CFieldIndex inFieldIndex)=0
As of Pro Tools 11.1, this field may be used in both Native and DSP plug-ins. The DSP clock data is a 16-bit cycling counter. This field was only available for Native plug-ins in previous Pro Tools versions.
Member AAX_IComponentDescriptor::AddMIDINode (AAX_CFieldIndex inFieldIndex, AAX_EMIDINodeType inNodeType, const char inNodeName[], uint32_t channelMask)=0
Due to current restrictions MIDI data won't be delivered to DSP algorithms, only to AAX Native.
Member AAX_IController::GetHostName (AAX_IString *outHostNameString) const =0
Pro Tools versions from Pro Tools 11.0 to Pro Tools 12.3.1 will return a generic version string to this call. This issue is resolved beginning in Pro Tools 12.4.
Member AAX_IMIDINode::PostMIDIPacket (AAX_CMidiPacket *packet)=0
Pro Tools supports the following MIDI events from plug-ins:
  • NoteOn
  • NoteOff
  • Pitch bend
  • Polyphonic key pressure
  • Bank select (controller #0)
  • Program change (no bank)
  • Channel pressure
Member AAX_ITransport::GetBarBeatPosition (int32_t *Bars, int32_t *Beats, int64_t *DisplayTicks, int64_t SampleLocation) const =0
There is a minor performance cost associated with using this API in Pro Tools. It should not be used excessively without need.
Member AAX_ITransport::GetCurrentLoopPosition (bool *bLooping, int64_t *LoopStartTick, int64_t *LoopEndTick) const =0
This does not indicate anything about the status of the "Loop Record" option. Even when the host is configured to loop playback, looping may not occur if certain conditions are not met (i.e. the length of the selection is too short)
Member AAX_ITransport::GetCurrentTickPosition (int64_t *TickPosition) const =0
The tick resolution here is different than that of the tick displayed in Pro Tools. "Display ticks" (as they are called) are 1/960 of a quarter note.
Member AAX_ITransport::GetCustomTickPosition (int64_t *oTickPosition, int64_t iSampleLocation) const =0
There is a minor performance cost associated with using this API in Pro Tools. It should not be used excessively without need.
Member AAX_IViewContainer::GetModifiers (uint32_t *outModifiers)=0
Although this method allows plug-ins to acquire the current state of the Windows key (normally blocked by Pro Tools), plug-ins should not use key combinations that require this key.
Module AAX_Media_Composer_Guide
Some early versions of Media Composer 8 do not search the system plug-ins directory recursively. If your plug-ins are installed into a sub-directory beneath this main directory then they will not be loaded by the affected versions of Media Composer.
Module AAX_Page_Table_Guide
Pro Tools versions prior to Pro Tools 11.1 use plug-ins' ProControl and ICON page tables (Dynamics, EQ, Channel Strip, Custom Fader, etc.) to map plug-in parameters to EUCON-enabled surfaces, so be sure that your plug-ins also implement these page tables correctly so that users with earlier versions of Pro Tools can have the best possible experience when using your plug-ins.
Module AAX_Pro_Tools_Guide

In Pro Tools 11 and above, the Avid Audio Engine (AAE) no longer automatically generates clipping indication for plug-ins. This is because the new engine can operate properly well beyond a unity sample value of 1.0. Thus, it is up to the plug-in itself to set and clear its clip indicators as needed.

Supported in Pro Tools 12 and higher.

Supported in Pro Tools 12 and higher.

Supported in Pro Tools 12 and higher.

Pro Tools 11 requires PACE Eden digital signatures for AAX plug-ins.

Supported in Pro Tools 12.6 and higher.

Supported in Pro Tools 12.8.2 and higher.

Supported in Pro Tools 2019.XX and higher. Also supported (and enabled by default) in Pro Tools developer builds beginning with Pro Tools 2019.6.

Pro Tools 10 requires either PACE DSig or Eden digital signatures for AAX plug-ins.

As of Pro Tools 10.2, support has been added to allow binary-level encryption of AAX DSP algorithms. Please note that this is NOT a requirement of AAX DSP plug-ins, and serves only as an additional security measure to protect an algorithm's DLL.

Module AAX_TI_Guide

32 and 64-sample quantum is available in Pro Tools 10.2 and higher

Beginning with Pro Tools 10.2, the TI shell supports a "processor affinity" property, which indicates that a DSP ProcessProc should be preferentially loaded onto the same DSP as other instances from the same DLL binary. This is a requirement for some designs that must share global data between different processing configurations.

Note that this property should only be used when absolutely required, as it will constrain the DSP manager and reduce overall DSP plug-in instance counts on the system.

Beginning in Pro Tools 11, AAX DSP algorithms also support optional temporary data spaces that can be described in the Describe module and are shared among all instances on a DSP. This is an alternative to declaring large data blocks on the stack for better memory management and to prevent stack overflows. Please refer to AAX_IComponentDescriptor::AddTemporaryData() for usage instructions.

Module AdditionalFeatures_CurveDisplays
For S6 control surface displays, see PT-226228 and PT-226227 in the Known Issues page for more information about the requirements listed in this section.
Module advancedTopics_relatedTypes

Pro Tools versions prior to Pro Tools 12.3 do not allow explicit type conversion between types with different product ID values. Beginning in Pro Tools 12.3 both the product ID and the plug-in ID may differ between explicitly related types.

Module CommonInterface_Algorithm
As of Pro Tools 10.2.1 an algorithm's initialization calllback routine will have up to 5 seconds to execute.
Module CommonInterface_FormatSpecification

*_ACFGetSDKVersion is required for 64-bit AAX plug-ins only

Module ExamplePlugIns
The DemoDelay_DynamicLatencyComp example is compatible with Pro Tools 11.1 and higher.
Collaboration diagram for Host Support: