AAX SDK  2.1.1
Avid Audio Extensions Development Kit
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AAX_CEffectParameters.h
Go to the documentation of this file.
1 /*================================================================================================*/
2 /*
3  *
4  * Copyright 2013 by 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_CEFFECTPARAMETERS_H
26 #define AAX_CEFFECTPARAMETERS_H
27 
28 #include "AAX_IEffectParameters.h"
29 #include "AAX_CString.h"
30 #include "AAX_CChunkDataParser.h"
31 #include "AAX_CParameterManager.h"
32 #include "AAX_CPacketDispatcher.h"
33 
34 #include <set>
35 #include <string>
36 #include <vector>
37 
38 class AAX_IController;
43 
44 extern "C" AAX_CParamID cPreviewID;
46 
65 {
66 public:
67  AAX_CEffectParameters (void);
68  virtual ~AAX_CEffectParameters (void);
70 
71 public:
72 
81  virtual AAX_Result Initialize(IACFUnknown* iController);
82  virtual AAX_Result Uninitialize (void);
84 
88  virtual AAX_Result NotificationReceived( /* AAX_ENotificationEvent */ AAX_CTypeID iNotificationType, const void * iNotificationData, uint32_t iNotificationDataSize);
90 
99  virtual AAX_Result GetNumberOfParameters (int32_t * oNumControls) const ;
100  virtual AAX_Result GetMasterBypassParameter (AAX_IString * oIDString) const ;
101  virtual AAX_Result GetParameterIsAutomatable (AAX_CParamID iParameterID, AAX_CBoolean * oAutomatable) const ;
102  virtual AAX_Result GetParameterNumberOfSteps (AAX_CParamID iParameterID, int32_t * oNumSteps ) const ;
103  virtual AAX_Result GetParameterName (AAX_CParamID iParameterID, AAX_IString * oName ) const ;
104  virtual AAX_Result GetParameterNameOfLength (AAX_CParamID iParameterID, AAX_IString * oName, int32_t iNameLength ) const ;
105  virtual AAX_Result GetParameterDefaultNormalizedValue (AAX_CParamID iParameterID, double * oValue ) const ;
106  virtual AAX_Result SetParameterDefaultNormalizedValue (AAX_CParamID iParameterID, double iValue );
107  virtual AAX_Result GetParameterType (AAX_CParamID iParameterID, AAX_EParameterType * oParameterType ) const ;
108  virtual AAX_Result GetParameterOrientation (AAX_CParamID iParameterID, AAX_EParameterOrientation * oParameterOrientation ) const ;
109  virtual AAX_Result GetParameter (AAX_CParamID iParameterID, AAX_IParameter ** oParameter ) ;
110  virtual AAX_Result GetParameterIndex (AAX_CParamID iParameterID, int32_t * oControlIndex ) const ;
111  virtual AAX_Result GetParameterIDFromIndex (int32_t iControlIndex, AAX_IString * oParameterIDString ) const ;
112  virtual AAX_Result GetParameterValueInfo ( AAX_CParamID iParameterID, int32_t iSelector, int32_t* oValue) const;
114 
123  virtual AAX_Result GetParameterValueFromString (AAX_CParamID iParameterID, double * oValue, const AAX_IString & iValueString ) const ;
124  virtual AAX_Result GetParameterStringFromValue (AAX_CParamID iParameterID, double iValue, AAX_IString * oValueString, int32_t iMaxLength ) const ;
125  virtual AAX_Result GetParameterValueString (AAX_CParamID iParameterID, AAX_IString * oValueString, int32_t iMaxLength) const ;
126  virtual AAX_Result GetParameterNormalizedValue (AAX_CParamID iParameterID, double * oValuePtr ) const ;
127  virtual AAX_Result SetParameterNormalizedValue (AAX_CParamID iParameterID, double iValue );
128  virtual AAX_Result SetParameterNormalizedRelative (AAX_CParamID iParameterID, double iValue );
130 
144  virtual AAX_Result TouchParameter ( AAX_CParamID iParameterID );
145  virtual AAX_Result ReleaseParameter ( AAX_CParamID iParameterID );
146  virtual AAX_Result UpdateParameterTouch ( AAX_CParamID iParameterID, AAX_CBoolean iTouchState );
148 
166  virtual AAX_Result UpdateParameterNormalizedValue (AAX_CParamID iParameterID, double iValue, AAX_EUpdateSource iSource );
167  virtual AAX_Result UpdateParameterNormalizedRelative (AAX_CParamID iParameterID, double iValue );
168  virtual AAX_Result GenerateCoefficients(void);
170 
174  virtual AAX_Result ResetFieldData (AAX_CFieldIndex iFieldIndex, void * oData, uint32_t iDataSize) const;
176 
194  virtual AAX_Result GetNumberOfChunks (int32_t * oNumChunks ) const ;
195  virtual AAX_Result GetChunkIDFromIndex (int32_t iIndex, AAX_CTypeID * oChunkID ) const ;
196  virtual AAX_Result GetChunkSize (AAX_CTypeID iChunkID, uint32_t * oSize ) const ;
197  virtual AAX_Result GetChunk (AAX_CTypeID iChunkID, AAX_SPlugInChunk * oChunk ) const;
198  virtual AAX_Result SetChunk (AAX_CTypeID iChunkID, const AAX_SPlugInChunk * iChunk );
199  virtual AAX_Result CompareActiveChunk (const AAX_SPlugInChunk * iChunkP, AAX_CBoolean * oIsEqual ) const ;
200  virtual AAX_Result GetNumberOfChanges (int32_t * oNumChanges ) const ;
202 
207  virtual AAX_Result TimerWakeup();
209 
214  virtual AAX_Result GetCurveData( /* AAX_ECurveType */ AAX_CTypeID iCurveType, const float * iValues, uint32_t iNumValues, float * oValues ) const;
216 
227  virtual AAX_Result GetCustomData( AAX_CTypeID iDataBlockID, uint32_t iDataSize, void* oData, uint32_t* oDataWritten) const;
228  virtual AAX_Result SetCustomData( AAX_CTypeID iDataBlockID, uint32_t iDataSize, const void* iData );
230 
235  virtual AAX_Result DoMIDITransfers() { return AAX_SUCCESS; };
236  virtual AAX_Result UpdateMIDINodes ( AAX_CFieldIndex iFieldIndex, AAX_CMidiPacket& iPacket );
237  virtual AAX_Result UpdateControlMIDINodes ( AAX_CTypeID nodeID, AAX_CMidiPacket& iPacket );
239 
244  virtual AAX_Result RenderAudio_Hybrid(AAX_SHybridRenderInfo* ioRenderInfo);
246 
247 
248 
249 public:
250 
255  const AAX_IController* Controller() const;
257  const AAX_ITransport* Transport() const;
261 
262 protected:
267  AAX_Result SetTaperDelegate ( AAX_CParamID iParameterID, AAX_ITaperDelegateBase & iTaperDelegate, bool iPreserveValue );
268  AAX_Result SetDisplayDelegate ( AAX_CParamID iParameterID, AAX_IDisplayDelegateBase & iDisplayDelegate );
269  bool IsParameterTouched ( AAX_CParamID iParameterID ) const;
270  bool IsParameterLinkReady ( AAX_CParamID inParameterID, AAX_EUpdateSource inSource ) const;
272 
292  virtual AAX_Result EffectInit(void) { return AAX_SUCCESS; };
293 
304  void FilterParameterIDOnSave(AAX_CParamID controlID);
306 
310  void BuildChunkData (void) const;
311 
312 protected:
314  mutable int32_t mChunkSize; //this old behavior isn't const friendly yet. Consider this a temp variable.
315  mutable AAX_CChunkDataParser mChunkParser; //this old behavior isn't const friendly yet. Consider this a temp variable.
320  std::set<std::string> mFilteredParameters;
321 
322 private: //There are accessor functions in this class for these Host objects. Use them instead.
323  AAX_IController* mController;
324  AAX_ITransport* mTransport;
325  AAX_IAutomationDelegate* mAutomationDelegate;
326 
327 };
328 
329 // Convenience functions since many legacy plug-ins had internal int32 value representations.
330 extern int32_t NormalizedToInt32 (double normalizedValue );
331 extern double Int32ToNormalized (int32_t value );
332 extern double BoolToNormalized (bool value );
333 
334 #endif
virtual AAX_Result GetParameterName(AAX_CParamID iParameterID, AAX_IString *oName) const
CALL: Retrieves the full name for a parameter.
virtual AAX_Result CompareActiveChunk(const AAX_SPlugInChunk *iChunkP, AAX_CBoolean *oIsEqual) const
Determine if a chunk represents settings that are equivalent to the plug-in&#39;s current state...
Parser utility for plugin chunks.
Packet structure for MIDI data.
Definition: AAX.h:295
AAX_EParameterType
FIC stuff that I can&#39;t include without DAE library dependence.
Definition: AAX_Enums.h:487
virtual AAX_Result GetCustomData(AAX_CTypeID iDataBlockID, uint32_t iDataSize, void *oData, uint32_t *oDataWritten) const
An optional interface hook for getting custom data from another module.
Defines the display behavior for a parameter.
Definition: AAX_IDisplayDelegate.h:52
virtual AAX_Result Uninitialize(void)
Main data model uninitialization.
virtual AAX_Result GetChunkSize(AAX_CTypeID iChunkID, uint32_t *oSize) const
Get the size of the data structure that can hold all of a chunk&#39;s information.
virtual AAX_Result GetParameterNameOfLength(AAX_CParamID iParameterID, AAX_IString *oName, int32_t iNameLength) const
CALL: Retrieves an abbreviated name for a parameter.
AAX_CParamID cDefaultMasterBypassID
Definition: AAX_CEffectParameters.h:45
virtual AAX_Result GetParameterDefaultNormalizedValue(AAX_CParamID iParameterID, double *oValue) const
CALL: Retrieves default value of a parameter.
AAX_EUpdateSource
Source for values passed into UpdateParameterNormalizedValue().
Definition: AAX_Enums.h:680
int32_t NormalizedToInt32(double normalizedValue)
std::set< std::string > mFilteredParameters
Definition: AAX_CEffectParameters.h:320
int32_t mNumPlugInChanges
Definition: AAX_CEffectParameters.h:313
virtual AAX_Result NotificationReceived(AAX_CTypeID iNotificationType, const void *iNotificationData, uint32_t iNotificationDataSize)
Notification Hook.
virtual AAX_Result GetCurveData(AAX_CTypeID iCurveType, const float *iValues, uint32_t iNumValues, float *oValues) const
Generate a set of output values based on a set of given input values.
AAX_ITransport * Transport()
Access to the Transport object.
virtual AAX_Result GetParameterValueFromString(AAX_CParamID iParameterID, double *oValue, const AAX_IString &iValueString) const
CALL: Converts a value string to a value.
AAX_CEffectParameters & operator=(const AAX_CEffectParameters &other)
virtual AAX_Result Initialize(IACFUnknown *iController)
Main data model initialization. Called when plug-in instance is first instantiated.
int32_t AAX_EParameterOrientation
Typedef for a bitfield of AAX_EParameterOrientationBits values.
Definition: AAX_Enums.h:519
uint8_t AAX_CBoolean
Cross-compiler boolean type used by AAX interfaces.
Definition: AAX.h:110
AAX_CParameterManager mParameterManager
Definition: AAX_CEffectParameters.h:319
virtual AAX_Result GetParameterNumberOfSteps(AAX_CParamID iParameterID, int32_t *oNumSteps) const
CALL: Retrieves the number of discrete steps for a parameter.
virtual AAX_Result TouchParameter(AAX_CParamID iParameterID)
&quot;Touches&quot; (locks) a parameter in the automation system to a particular control in preparation for upd...
void FilterParameterIDOnSave(AAX_CParamID controlID)
CALL: Indicates the indices of parameters that should not be saved in the default AAX_CEffectParamete...
AAX_IAutomationDelegate * AutomationDelegate()
Helper classes related to posting AAX packets and handling parameter update events.
bool IsParameterLinkReady(AAX_CParamID inParameterID, AAX_EUpdateSource inSource) const
virtual AAX_Result SetParameterDefaultNormalizedValue(AAX_CParamID iParameterID, double iValue)
CALL: Sets the default value of a parameter.
virtual AAX_Result GetParameterIDFromIndex(int32_t iControlIndex, AAX_IString *oParameterIDString) const
CALL: Retrieves the ID of a parameter.
virtual AAX_Result ReleaseParameter(AAX_CParamID iParameterID)
Releases a parameter from a &quot;touched&quot; state.
virtual AAX_Result GenerateCoefficients(void)
Generates and dispatches new coefficient packets.
virtual AAX_Result UpdateMIDINodes(AAX_CFieldIndex iFieldIndex, AAX_CMidiPacket &iPacket)
MIDI update callback.
uint32_t AAX_CTypeID
Matches type of OSType used in classic plugins.
Definition: AAX.h:117
AAX_CBoolean mClipped
Set by SetClipped() and returned by GetClipped().
Definition: AAX_CEffectParameters.h:317
virtual AAX_Result UpdateParameterTouch(AAX_CParamID iParameterID, AAX_CBoolean iTouchState)
Sets a &quot;touched&quot; state on a parameter.
virtual AAX_Result SetParameterNormalizedRelative(AAX_CParamID iParameterID, double iValue)
CALL: Sets the specified parameter to a new value relative to its current value.
Interface allowing an AAX plug-in to interact with the host&#39;s event system.
Definition: AAX_IAutomationDelegate.h:46
virtual AAX_Result GetParameterIndex(AAX_CParamID iParameterID, int32_t *oControlIndex) const
CALL: Retrieves the index of a parameter.
Hybrid render processing context.
Definition: AAX_IACFEffectParameters.h:836
COM compatible IUnknown C++ interface.
Definition: AAX_ACFInterface.dox:231
virtual AAX_Result UpdateParameterNormalizedRelative(AAX_CParamID iParameterID, double iValue)
Updates a single parameter&#39;s state to its current value, as a difference with the parameter&#39;s previou...
AAX_CParamID cPreviewID
Definition: AAX_CEffectParameters.h:42
virtual AAX_Result GetParameterValueInfo(AAX_CParamID iParameterID, int32_t iSelector, int32_t *oValue) const
CALL: Retrieves a property of a parameter.
virtual AAX_Result GetChunkIDFromIndex(int32_t iIndex, AAX_CTypeID *oChunkID) const
Retrieves the ID associated with a chunk index.
Parser utility for plugin chunks.
Definition: AAX_CChunkDataParser.h:117
virtual AAX_Result TimerWakeup()
Periodic wakeup callback for idle-time operations.
double BoolToNormalized(bool value)
A simple string container that can be passed across a binary boundary. This class, for simplicity, is not versioned and thus can never change.
Definition: AAX_IString.h:40
virtual AAX_Result DoMIDITransfers()
MIDI update callback.
Definition: AAX_CEffectParameters.h:235
int32_t AAX_Result
Definition: AAX.h:118
Definition: AAX_Errors.h:32
virtual AAX_Result GetParameterType(AAX_CParamID iParameterID, AAX_EParameterType *oParameterType) const
CALL: Retrieves the type of a parameter.
virtual AAX_Result SetCustomData(AAX_CTypeID iDataBlockID, uint32_t iDataSize, const void *iData)
An optional interface hook for setting custom data for use by another module.
virtual AAX_Result EffectInit(void)
Initialization helper routine. Called from AAX_CEffectParameters::Initialize.
Definition: AAX_CEffectParameters.h:292
virtual AAX_Result GetNumberOfParameters(int32_t *oNumControls) const
CALL: Retrieves the total number of plug-in parameters.
AAX_Result SetDisplayDelegate(AAX_CParamID iParameterID, AAX_IDisplayDelegateBase &iDisplayDelegate)
AAX_IController * Controller()
Access to the Effect controller.
AAX_CPacketDispatcher mPacketDispatcher
Definition: AAX_CEffectParameters.h:318
virtual AAX_Result GetChunk(AAX_CTypeID iChunkID, AAX_SPlugInChunk *oChunk) const
Fills a block of data with chunk information representing the plug-in&#39;s current state.
AAX_Result SetTaperDelegate(AAX_CParamID iParameterID, AAX_ITaperDelegateBase &iTaperDelegate, bool iPreserveValue)
Interface for the AAX host&#39;s view of a single instance of an effect. Used by both clients of the AAX ...
Definition: AAX_IController.h:39
virtual AAX_Result RenderAudio_Hybrid(AAX_SHybridRenderInfo *ioRenderInfo)
Hybrid audio render function.
virtual AAX_Result GetParameterOrientation(AAX_CParamID iParameterID, AAX_EParameterOrientation *oParameterOrientation) const
CALL: Retrieves the orientation that should be applied to a parameter&#39;s controls. ...
virtual ~AAX_CEffectParameters(void)
AAX_CChunkDataParser mChunkParser
Definition: AAX_CEffectParameters.h:315
Interface to information about the host&#39;s transport state.
Definition: AAX_ITransport.h:43
virtual AAX_Result GetParameterStringFromValue(AAX_CParamID iParameterID, double iValue, AAX_IString *oValueString, int32_t iMaxLength) const
CALL: Converts a normalized parameter value into a string representing its corresponding real value...
virtual AAX_Result UpdateControlMIDINodes(AAX_CTypeID nodeID, AAX_CMidiPacket &iPacket)
MIDI update callback for control MIDI nodes.
virtual AAX_Result GetNumberOfChanges(int32_t *oNumChanges) const
Retrieves the number of parameter changes made since the plug-in&#39;s creation.
virtual AAX_Result GetParameterValueString(AAX_CParamID iParameterID, AAX_IString *oValueString, int32_t iMaxLength) const
CALL: Retrieves the value string associated with a parameter&#39;s current value.
void BuildChunkData(void) const
Clears out the current chunk in Chunk Parser and adds all of the new values. Used by default implemen...
The interface for an AAX Plug-in&#39;s data model.
Definition: AAX_IEffectParameters.h:80
A container object for plug-in parameters.
double Int32ToNormalized(int32_t value)
A container object for plug-in parameters.
Definition: AAX_CParameterManager.h:50
virtual AAX_Result SetChunk(AAX_CTypeID iChunkID, const AAX_SPlugInChunk *iChunk)
Restores a set of plug-in parameters based on chunk information.
AAX_CIndex AAX_CFieldIndex
Not used by AAX plug-ins (except in AAX_FIELD_INDEX macro)
Definition: AAX.h:125
The interface for an AAX Plug-in&#39;s data model.
Plug-in chunk header.
Definition: AAX.h:250
virtual AAX_Result SetParameterNormalizedValue(AAX_CParamID iParameterID, double iValue)
CALL: Sets the specified parameter to a new value.
virtual AAX_Result GetParameterIsAutomatable(AAX_CParamID iParameterID, AAX_CBoolean *oAutomatable) const
CALL: Retrieves information about a parameter&#39;s automatable status.
const char * AAX_CParamID
Parameter identifier.
Definition: AAX.h:128
Helper class for managing AAX packet posting.
Definition: AAX_CPacketDispatcher.h:152
The base interface for all normalizable plug-in parameters.
Definition: AAX_IParameter.h:52
Default implementation of the AAX_IEffectParameters interface.
Definition: AAX_CEffectParameters.h:64
A generic AAX string class with similar functionality to std::string.
virtual AAX_Result UpdateParameterNormalizedValue(AAX_CParamID iParameterID, double iValue, AAX_EUpdateSource iSource)
Updates a single parameter&#39;s state to its current value.
bool IsParameterTouched(AAX_CParamID iParameterID) const
virtual AAX_Result GetMasterBypassParameter(AAX_IString *oIDString) const
CALL: Retrieves the ID of the plug-in&#39;s Master Bypass parameter.
virtual AAX_Result ResetFieldData(AAX_CFieldIndex iFieldIndex, void *oData, uint32_t iDataSize) const
Called by the host to reset a private data field in the plug-in&#39;s algorithm.
Defines the taper conversion behavior for a parameter.
Definition: AAX_ITaperDelegate.h:72
virtual AAX_Result GetParameterNormalizedValue(AAX_CParamID iParameterID, double *oValuePtr) const
CALL: Retrieves a parameter&#39;s current value.
virtual AAX_Result GetParameter(AAX_CParamID iParameterID, AAX_IParameter **oParameter)
CALL: Retrieves an arbitrary setting within a parameter.
int32_t mNumChunkedParameters
Definition: AAX_CEffectParameters.h:316
int32_t mChunkSize
Definition: AAX_CEffectParameters.h:314
virtual AAX_Result GetNumberOfChunks(int32_t *oNumChunks) const
Retrieves the number of chunks used by this plug-in.