\hypertarget{a00944}{}\doxysection{Example Plug-\/\+Ins}
\label{a00944}\index{Example Plug-\/Ins@{Example Plug-\/Ins}}
Descriptions of the SDK\textquotesingle{}s example plug-\/ins. 

\hypertarget{a00944_examples}{}\doxysubsection{SDK Example plug-\/ins}\label{a00944_examples}
This SDK includes the following example plug-\/ins. These plug-\/ins are designed to demonstrate good AAX plug-\/in design with varying levels of complexity.

In general, the SDK includes one basic version of each example plug-\/in, as well as multiple variations on this basic version. Each of these variations demonstrates a particular feature or design approach. To see the specific changes that were made to implement a feature, compare the example plug-\/in variant that demonstrates the feature to the basic version of the plug-\/in.

Aside from the GUI Extension examples, which are designed to work with third-\/party GUI frameworks, each sample plug-\/in should successfully compile \char`\"{}out of the box\char`\"{}. However, you may receive compilation errors during the plug-\/ins\textquotesingle{} post-\/build copy step due to the fact that compiled TI DLLs are not included with this SDK.\hypertarget{a00944_basic_examples}{}\doxysubsubsection{Basic examples}\label{a00944_basic_examples}
These plug-\/ins provide complete working examples of AAX plug-\/ins without a lot of extra features. Use these plug-\/ins as a starting point for understanding \mbox{\hyperlink{a00948}{AAX}}.\hypertarget{a00944_DemoGain}{}\doxyparagraph{Demo\+Gain}\label{a00944_DemoGain}
Demo\+Gain is the simplest example plug-\/in, incorporating a mono algorithm with gain and bypass parameters.\hypertarget{a00944_DemoDist}{}\doxyparagraph{Demo\+Dist}\label{a00944_DemoDist}
Demo\+Dist demonstrates some more sophisticated techniques such as coefficient calculation and packaging, private data allocation, and multiple stem format support. Demo\+Dist also demonstrates some basic optimization strategies for improving real-\/time algorithmic performance.\hypertarget{a00944_DemoDelay}{}\doxyparagraph{Demo\+Delay}\label{a00944_DemoDelay}
Demo\+Delay implements a basic delay algorithm. The variants of this example demonstrate a variety of alternative processing features provided by \mbox{\hyperlink{a00948}{AAX}}.\hypertarget{a00944_DemoMIDI_NoteOn}{}\doxyparagraph{Demo\+MIDI\+\_\+\+Note\+On}\label{a00944_DemoMIDI_NoteOn}
Demo\+MIDI\+\_\+\+Note\+On implements basic MIDI input and output functionality. The example demonstrates a simple MIDI processing loop that either copies MIDI input to MIDI output or holds Note On events depending on a Hold parameter. The example also detects Note On events. To visually indicate these events, the plugin will output DC offset while a note is held. This offset is not audible but will appear in the Pro Tools track and can be used to verify the timing of the Note On and Note Off events. The example also shows how to handle MIDI packages in the Data Model by overriding the \mbox{\hyperlink{a01850_aac6fa72278c0f46aa430cd79bdb2d767}{AAX\+\_\+\+CEffect\+Parameters\+::\+Update\+MIDINodes()}} method.\hypertarget{a00944_RectiFi}{}\doxyparagraph{Recti\+Fi}\label{a00944_RectiFi}
This is a fully ported version of the Recti-\/\+Fi plug-\/in from Avid\textquotesingle{}s D-\/\+Fi suite. For more information about Recti-\/\+Fi, see \href{http://www.avid.com/plugins/d-fi}{\texttt{ http\+://www.\+avid.\+com/plugins/d-\/fi}}

\begin{DoxyNote}{Note}
The SDK\textquotesingle{}s Recti-\/\+Fi example plug-\/in is currently out of date and does not accurately represent Avid\textquotesingle{}s shipping Recti-\/\+Fi plug-\/in.
\end{DoxyNote}
\hypertarget{a00944_feature_examples}{}\doxysubsubsection{Feature examples}\label{a00944_feature_examples}
Each of these plug-\/ins is a slight variation on one of the \mbox{\hyperlink{a00944_basic_examples}{Basic examples}}. Each feature example plug-\/in demonstrates a specific feature or a possible alternative design approach for the plug-\/in. Compare these plug-\/ins with the corresponding basic example plug-\/in when you want to understand how a feature or design should be applied to your own AAX plug-\/ins.\hypertarget{a00944_DemoGain_GUIExtensions}{}\doxyparagraph{Demo\+Gain\+\_\+\+GUIExtensions}\label{a00944_DemoGain_GUIExtensions}
These examples demonstrate the use of various native and third-\/party GUI frameworks with \mbox{\hyperlink{a00948}{AAX}}. The examples that use third-\/party frameworks are configured to link to static libraries that combine the SDK\textquotesingle{}s \mbox{\hyperlink{a00934}{GUI Extensions}} (located in /\+Extensions/\+GUI) and the applicable third-\/party GUI framework. These libraries are not included in the SDK, and you will need to install the applicable framework SDK before it will be possible to compile these example plug-\/ins.

\begin{DoxyNote}{Note}
See bug \mbox{\hyperlink{a00942_AAXSDK-599}{AAXSDK-\/599}}
\end{DoxyNote}
\hypertarget{a00944_DemoGain_LinkedParameters}{}\doxyparagraph{Demo\+Gain\+\_\+\+Linked\+Parameters}\label{a00944_DemoGain_LinkedParameters}
This example demonstrates parameter linking. The plug-\/in is a stereo version of Demo\+Gain, with options to link the left and right channels in two different modes.\hypertarget{a00944_DemoGain_Smoothed}{}\doxyparagraph{Demo\+Gain\+\_\+\+Smoothed}\label{a00944_DemoGain_Smoothed}
This example demonstrates efficient algorithmic coefficient smoothing using a slight variation on the basic Demo\+Gain plug-\/in algorithm.\hypertarget{a00944_DemoGain_Background}{}\doxyparagraph{Demo\+Gain\+\_\+\+Background}\label{a00944_DemoGain_Background}
This example demonstrates a background routine for algorithm processing. This example also uses the AAX \mbox{\hyperlink{a00899}{direct data interface}} for communicating algorithmic delay to the plug-\/in\textquotesingle{}s controller.\hypertarget{a00944_DemoGain_DMA}{}\doxyparagraph{Demo\+Gain\+\_\+\+DMA}\label{a00944_DemoGain_DMA}
This example includes two Effects that demonstrate use of the Scatter/\+Gather and Burst DMA facilities in \mbox{\hyperlink{a00948}{AAX}}.\hypertarget{a00944_DemoGain_Multichannel}{}\doxyparagraph{Demo\+Gain\+\_\+\+Multichannel}\label{a00944_DemoGain_Multichannel}
This example demonstrates a multichannel plug-\/in configuration supporting all available point source stem formats.

This plug-\/in also includes a simple example of gain-\/reduction metering, which can be used to test host features which use this data such as the \mbox{\hyperlink{a00926_subsubsection__external_metering_and_internal_clip_}{gain reduction meters}} in Pro Tools.\hypertarget{a00944_DemoGain_UpMixer}{}\doxyparagraph{Demo\+Gain\+\_\+\+Up\+Mixer}\label{a00944_DemoGain_UpMixer}
This example demonstrates conversion between different stem formats\hypertarget{a00944_DemoGain_ParamValueInfo}{}\doxyparagraph{Demo\+Gain\+\_\+\+Param\+Value\+Info}\label{a00944_DemoGain_ParamValueInfo}
This example demonstrates an implementation of the \mbox{\hyperlink{a02066_a1702de6d62b5b41b6a8b2f510300392b}{Get\+Parameter\+Value\+Info()}} method, which is used to properly display certain parameter details on attached control surfaces. See \mbox{\hyperlink{a00929_aax_page_table_guide_04_avid_center_section_page_tables}{Avid Center Section Page Tables}} in the \mbox{\hyperlink{a00929}{Page Table Guide}}.\hypertarget{a00944_DemoDist_GenCoef}{}\doxyparagraph{Demo\+Dist\+\_\+\+Gen\+Coef}\label{a00944_DemoDist_GenCoef}
This example demonstrates an alternative approach to parameter update handling. It bypasses the packet dispatcher helper class and directly overrides \mbox{\hyperlink{a02066_a685858711efb8634ce66c327f2865c71}{Update\+Parameter\+Normalized\+Value()}} and \mbox{\hyperlink{a02066_a083265b008921b6114ede387711694b7}{Generate\+Coefficients()}}. This approach may be appropriate for plug-\/ins that involve complex mapping between parameter updates, coefficient generation algorithms, and coefficient data packets.\hypertarget{a00944_DemoDelay_HostProcessor}{}\doxyparagraph{Demo\+Delay\+\_\+\+Host\+Processor}\label{a00944_DemoDelay_HostProcessor}
This example includes two Effects that demonstrate the optional \mbox{\hyperlink{a00904}{Offline processing interface}} for advanced offline processing features. One Effect implements a simple offline delay line, while the other Effect implements the same delay line but compensates for its delay when rendering to the timeline. This demonstrates how to manually compensate for inherent algorithmic delay in an offline processor.

\begin{DoxyNote}{Note}
The output of offline plug-\/ins that do not use the \mbox{\hyperlink{a00904}{Offline processing interface}} will be automatically adjusted by the host host to account for any declared latency. The manual compensation technique demonstrated by Demo\+Delay\+\_\+\+Host\+Processor is {\bfseries{only}} necessary in plug-\/ins that implement the \mbox{\hyperlink{a00904}{Offline processing interface}}, e.\+g. plug-\/ins that require nonlinear offline processing features.
\end{DoxyNote}
\hypertarget{a00944_DemoDelay_Hybrid}{}\doxyparagraph{Demo\+Delay\+\_\+\+Hybrid}\label{a00944_DemoDelay_Hybrid}
This example demonstrates the optional \mbox{\hyperlink{a00901}{Hybrid Processing architecture}} architecture for AAX plug-\/ins. This plug-\/in implements a short delay line that is rendered in the high-\/latency hybrid context. It can be built and run for either AAX Native or AAX DSP.\hypertarget{a00944_DemoDelay_DynamicLatencyComp}{}\doxyparagraph{Demo\+Delay\+\_\+\+Dynamic\+Latency\+Comp}\label{a00944_DemoDelay_DynamicLatencyComp}
This example demonstrates how to properly handle algorithmic latency changes at run-\/time. It uses a delay line to emulate a latency-\/inducing algorithm with varying latency based on the delay parameter setting. When the plug-\/in\textquotesingle{}s latency compensation feature is enabled it declares this latency to the host.

\begin{DoxyRefDesc}{Host Compatibility Notes}
\item[\mbox{\hyperlink{a00879__compatibility_notes000015}{Host Compatibility Notes}}]The Demo\+Delay\+\_\+\+Dynamic\+Latency\+Comp example is compatible with Pro Tools 11.\+1 and higher.\end{DoxyRefDesc}
\hypertarget{a00944_DemoMIDI_Synth}{}\doxyparagraph{Demo\+MIDI\+\_\+\+Synth}\label{a00944_DemoMIDI_Synth}
A basic synthesizer plug-\/in demonstrating use of an external object to manage the plug-\/in\textquotesingle{}s state. AAX Native plug-\/ins that are designed to work with a cross-\/format framework may use a similar design. This plug-\/in uses \mbox{\hyperlink{a02462}{AAX\+\_\+\+CMonolithic\+Parameters}} and therefore is AAX Native only.\hypertarget{a00944_DemoMIDI_Synth_AuxOutput}{}\doxyparagraph{Demo\+MIDI\+\_\+\+Synth\+\_\+\+Aux\+Output}\label{a00944_DemoMIDI_Synth_AuxOutput}
A variation on \mbox{\hyperlink{a00944_DemoMIDI_Synth}{Demo\+MIDI\+\_\+\+Synth}} demonstrating the \mbox{\hyperlink{a00896}{Auxiliary Output Stems}} feature. This instrument plug-\/in supports four independently-\/routable synthesizer objects.\hypertarget{a00944_DemoMIDI_Sampler}{}\doxyparagraph{Demo\+MIDI\+\_\+\+Sampler}\label{a00944_DemoMIDI_Sampler}
This simple \char`\"{}drum machine\char`\"{} style sampler plug-\/in demonstrates sample-\/accurate global and local MIDI input and the MIDI Transport interface. This plug-\/in uses \mbox{\hyperlink{a02462}{AAX\+\_\+\+CMonolithic\+Parameters}} and therefore is AAX Native only.\hypertarget{a00944_DemoMIDI_Transpose}{}\doxyparagraph{Demo\+MIDI\+\_\+\+Transpose}\label{a00944_DemoMIDI_Transpose}
A basic MIDI effect that transposes incoming notes. The example implements audio passthrough, switchable MIDI passthrough and MIDI bypass. Moreover, the plugin overrides \mbox{\hyperlink{a02066_a083265b008921b6114ede387711694b7}{Generate\+Coefficients()}} to generate coefficients as a single data structure and it also overrides \mbox{\hyperlink{a02066_a6e87e40d42c7431e52ae5ebd4f631964}{Reset\+Field\+Data()}} to customise the inital values of private data fields.\hypertarget{a00944_deprecated_examples}{}\doxysubsubsection{Deprecated Examples}\label{a00944_deprecated_examples}
\hypertarget{a00944_DemoGain_Delay}{}\doxyparagraph{Demo\+Gain\+\_\+\+Delay}\label{a00944_DemoGain_Delay}
\begin{DoxyRefDesc}{Deprecated}
\item[\mbox{\hyperlink{a00881__deprecated000001}{Deprecated}}]The Demo\+Gain\+\_\+\+Delay example is deprecated. See Demo\+Delay\+\_\+\+Host\+Processor\end{DoxyRefDesc}
Collaboration diagram for Example Plug-\/\+Ins\+:
% FIG 0
