AAX SDK  2.1.1
Avid Audio Extensions Development Kit
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AAX_CInstrumentParameters.h
Go to the documentation of this file.
1 /*================================================================================================*/
2 /*
3  *
4  * Copyright (c) 1993 - 2009 Avid Technology, Inc.
5  * All rights reserved.
6  *
7  * CONFIDENTIAL: This document contains confidential information. Do not
8  * read or examine this document unless you are an Avid Technology employee
9  * or have signed a non-disclosure agreement with Avid Technology which protects
10  * the confidentiality of this document. DO NOT DISCLOSE ANY INFORMATION
11  * CONTAINED IN THIS DOCUMENT TO ANY THIRD-PARTY WITHOUT THE PRIOR WRITTEN CONSENT
12  * OF Avid Technolgy, INC.
13  *
14  */
15 
22 /*================================================================================================*/
23 
24 
25 #ifndef AAX_CINSTRUMENTPARAMETERS_H
26 #define AAX_CINSTRUMENTPARAMETERS_H
27 
28 // AAX headers
29 //
30 // Parent class
31 #include "AAX_CEffectParameters.h"
32 //
33 // Describe
34 #include "AAX_IEffectDescriptor.h"
36 #include "AAX_IPropertyMap.h"
37 //
38 // Utilities
39 #include "AAX_IMIDINode.h"
40 #include "AAX_IString.h"
41 
42 // Max number of additional midi nodes is 15, for a grand total of 16 input midi nodes. We're not aware of any plug-in that uses more.
43 #define kMaxAdditionalMIDINodes 15
44 
45 // Max number of additional midi nodes is 15, for a grand total of 16 input midi nodes. We're not aware of any plug-in that uses more. You can increase this if you need, it
46 // is not a system limitation.
47 #define kMaxAuxOutputStems 32
48 
49 
56 {
57  //Global MIDI Nodes
59  const char* mGlobalMIDINodeName;
61 
62  //Input MIDI Nodes
64  const char* mInputMIDINodeName;
67 
68  //Transport
70  const char* mTransportMIDINodeName;
71 
72  //Meters
73  int32_t mNumMeters;
75 
76  //Aux Output Stems Feature.
80 
81  //General Properties
85  bool mCanBypass;
89 
90 
97  {
98  mNeedsGlobalMIDI = false;
99  mGlobalMIDINodeName = "GlobalMIDI";
100  mGlobalMIDIEventMask = 0xffff;
101  mNeedsInputMIDI = false;
102  mInputMIDINodeName = "InputMIDI";
103  mInputMIDIChannelMask = 0xffff;
105  mNeedsTransport = false;
106  mTransportMIDINodeName = "Transport";
107  mNumMeters = 0;
108  mMeterIDs = 0;
111  mUseHostGeneratedGUI = false;
112  mCanBypass = true;
113  mManufacturerID = 'none';
114  mProductID = 'none';
115  mPluginID = 'none';
116 
117  mNumAuxOutputStems = 0;
118  for (int32_t i=0; i<kMaxAuxOutputStems; i++)
119  {
120  mAuxOutputStemNames[i] = 0;
122  }
123  }
124 };
125 
126 class AAX_CInstrumentParameters; //predefined for AAX_SInstrumentPrivateData
133 {
141 
142  //<DMT> Removed mOutputStemFormat. Adding it to this structure was not intentional. Please call Controller()->GetOutputStemFormat() from your RenderAudio call if you need this info.
143  //<DMT> Please note, nothing else should be added to this struct. All host information is accessible through the AAX_IController in the RenderAudio call.
144 };
145 
146 
151 {
152  float** mAudioInputs;
153  float** mAudioOutputs;
154  int32_t* mNumSamples;
156 
161 
163 
164  float** mMeters;
165 };
166 
187 {
188 public:
189 
191  virtual ~AAX_CInstrumentParameters (void);
192 
193 public:
194 
199  virtual void RenderAudio(AAX_SInstrumentRenderInfo* ioRenderInfo);
201 
202 public:
203 
213  virtual AAX_Result ResetFieldData (AAX_CFieldIndex iFieldIndex, void * oData, uint32_t iDataSize) const;
217  static AAX_Result StaticDescribe (AAX_IEffectDescriptor * ioDescriptor, const AAX_SInstrumentSetupInfo & setupInfo);
221  static void AAX_CALLBACK StaticRenderAudio(AAX_SInstrumentRenderInfo* const inInstancesBegin [], const void* inInstancesEnd);
223 };
224 
225 
226 
227 
228 
229 #endif
AAX_CInstrumentParameters * mInstrumentParametersPtr
A pointer to the instrument&#39;s data model.
Definition: AAX_CInstrumentParameters.h:140
static AAX_Result StaticDescribe(AAX_IEffectDescriptor *ioDescriptor, const AAX_SInstrumentSetupInfo &setupInfo)
int32_t mNumMeters
Number of meter taps used by the instrument. Must match the size of mMeterIDs.
Definition: AAX_CInstrumentParameters.h:73
AAX_EStemFormat mInputStemFormat
Input stem format.
Definition: AAX_CInstrumentParameters.h:82
Information used to describe the instrument.
Definition: AAX_CInstrumentParameters.h:55
Declaration of the base MIDI Node interface.
uint32_t mInputMIDIChannelMask
MIDI input node channel mask, if used.
Definition: AAX_CInstrumentParameters.h:65
Utility struct for AAX_CInstrumentParameters.
Definition: AAX_CInstrumentParameters.h:132
AAX_CTypeID mProductID
Product ID.
Definition: AAX_CInstrumentParameters.h:87
const char * mInputMIDINodeName
Name of the MIDI input node, if used.
Definition: AAX_CInstrumentParameters.h:64
int32_t * mNumSamples
Number of samples in each buffer. Bounded as per AAE_EAudioBufferLengthNative. The exact value can va...
Definition: AAX_CInstrumentParameters.h:154
M.
Definition: AAX_Enums.h:218
#define AAX_CALLBACK
Definition: AAX.h:74
int32_t mNumAdditionalInputMIDINodes
Number of additional input MIDI Nodes. These will all share the same channelMask and base MIDINodeNam...
Definition: AAX_CInstrumentParameters.h:66
static void AAX_CALLBACK StaticRenderAudio(AAX_SInstrumentRenderInfo *const inInstancesBegin[], const void *inInstancesEnd)
int64_t AAX_CTimestamp
Time stamp value. Measured against the DAE clock (see AAX_IComponentDescriptor::AddClock() ) ...
Definition: AAX.h:112
bool mNeedsGlobalMIDI
Does the instrument use a global MIDI input node?
Definition: AAX_CInstrumentParameters.h:58
#define kMaxAuxOutputStems
Definition: AAX_CInstrumentParameters.h:47
float ** mMeters
Array of meter taps. One meter value should be entered per tap for each render call.
Definition: AAX_CInstrumentParameters.h:164
Generic plug-in description property map.
uint32_t mGlobalMIDIEventMask
Global MIDI node event mask, if used.
Definition: AAX_CInstrumentParameters.h:60
AAX_CTypeID mPluginID
Plug-In (Type) ID.
Definition: AAX_CInstrumentParameters.h:88
bool mNeedsTransport
Does the instrument use the transport interface?
Definition: AAX_CInstrumentParameters.h:69
AAX_SInstrumentSetupInfo()
Default constructor.
Definition: AAX_CInstrumentParameters.h:96
uint32_t AAX_CTypeID
Matches type of OSType used in classic plugins.
Definition: AAX.h:117
float ** mAudioInputs
Audio input buffers.
Definition: AAX_CInstrumentParameters.h:152
AAX_CTimestamp * mClock
Pointer to the global running time clock.
Definition: AAX_CInstrumentParameters.h:155
virtual void RenderAudio(AAX_SInstrumentRenderInfo *ioRenderInfo)
const char * mGlobalMIDINodeName
Name of the global MIDI node, if used.
Definition: AAX_CInstrumentParameters.h:59
An AAX string interface.
AAX_EStemFormat mOutputStemFormat
Output stem format.
Definition: AAX_CInstrumentParameters.h:83
virtual AAX_Result ResetFieldData(AAX_CFieldIndex iFieldIndex, void *oData, uint32_t iDataSize) const
int32_t AAX_Result
Definition: AAX.h:118
Description interface for an AAX plug-in algorithm.
AAX_EStemFormat mAuxOutputStemFormats[kMaxAuxOutputStems]
Stem formats for the output stems.
Definition: AAX_CInstrumentParameters.h:79
bool mUseHostGeneratedGUI
Pro Tools or other host to generate a generic GUI for your plug-in? (useful for early development) ...
Definition: AAX_CInstrumentParameters.h:84
Interface for accessing information in a MIDI node.
Definition: AAX_IMIDINode.h:35
const char * mTransportMIDINodeName
Name of the MIDI transport node, if used.
Definition: AAX_CInstrumentParameters.h:70
const char * mAuxOutputStemNames[kMaxAuxOutputStems]
Names of the aux output stems.
Definition: AAX_CInstrumentParameters.h:78
AAX_IMIDINode * mTransportNode
Transport MIDI node. Used for querying the state of the MIDI transport.
Definition: AAX_CInstrumentParameters.h:159
#define kMaxAdditionalMIDINodes
Definition: AAX_CInstrumentParameters.h:43
AAX_IMIDINode * mGlobalNode
Buffered global MIDI input node. Used for global events like beat updates in metronomes.
Definition: AAX_CInstrumentParameters.h:158
float ** mAudioOutputs
Audio output buffers, including any aux output stems.
Definition: AAX_CInstrumentParameters.h:153
Description interface for an effect&#39;s (plug-in type&#39;s) components.
AAX_IMIDINode * mAdditionalInputMIDINodes[kMaxAdditionalMIDINodes]
List of additional input MIDI nodes, if your plugin needs them.
Definition: AAX_CInstrumentParameters.h:160
AAX_SInstrumentPrivateData * mPrivateData
Struct containing private data relating to the instance. You should not need to use this data...
Definition: AAX_CInstrumentParameters.h:162
AAX_CIndex AAX_CFieldIndex
Not used by AAX plug-ins (except in AAX_FIELD_INDEX macro)
Definition: AAX.h:125
AAX_EStemFormat
Definition: AAX_Enums.h:216
AAX_CTypeID mManufacturerID
Manufacturer ID.
Definition: AAX_CInstrumentParameters.h:86
AAX_IMIDINode * mInputNode
Buffered local MIDI input node. Used for incoming MIDI messages directed to the instrument.
Definition: AAX_CInstrumentParameters.h:157
Information used to parameterize AAX_CInstrumentParameters::RenderAudio()
Definition: AAX_CInstrumentParameters.h:150
A default implementation of the AAX_IeffectParameters interface.
Default implementation of the AAX_IEffectParameters interface.
Definition: AAX_CEffectParameters.h:64
const AAX_CTypeID * mMeterIDs
Array of meter IDs.
Definition: AAX_CInstrumentParameters.h:74
int32_t mNumAuxOutputStems
Number of aux output stems for the plug-in.
Definition: AAX_CInstrumentParameters.h:77
bool mCanBypass
Can this instrument be bypassed?
Definition: AAX_CInstrumentParameters.h:85
bool mNeedsInputMIDI
Does the instrument use a local MIDI input node?
Definition: AAX_CInstrumentParameters.h:63
Virtual Instrument extension of the AAX_CEffectParameters class.
Definition: AAX_CInstrumentParameters.h:186
virtual ~AAX_CInstrumentParameters(void)
Description interface for an effect&#39;s (plug-in type&#39;s) components.
Definition: AAX_IEffectDescriptor.h:47