iPlug2 - C++ Audio Plug-in Framework
|
The base class of an IPlug plug-in, which interacts with the different plug-in APIs. More...
#include <IPlugAPIBase.h>
Public Member Functions | |
IPlugAPIBase (Config config, EAPI plugAPI) | |
IPlugAPIBase (const IPlugAPIBase &)=delete | |
IPlugAPIBase & | operator= (const IPlugAPIBase &)=delete |
virtual bool | CompareState (const uint8_t *pIncomingState, int startPos) const |
Override this method to implement a custom comparison of incoming state data with your plug-ins state data, in order to support the ProTools compare light when using custom state chunks. More... | |
virtual bool | OnHostRequestingAboutBox () |
virtual bool | OnHostRequestingProductHelp () |
virtual void | OnHostIdentified () |
Implement this to do something specific when IPlug becomes aware of the particular host that is hosting the plug-in. More... | |
virtual void | OnHostRequestingImportantParameters (int count, WDL_TypedBuf< int > &results) |
Called by AUv3 plug-ins to get the "overview parameters". More... | |
virtual bool | OnHostRequestingSupportedViewConfiguration (int width, int height) |
Called by AUv3 plug-in hosts to query support for multiple UI sizes. More... | |
virtual void | OnHostSelectedViewConfiguration (int width, int height) |
Called by some AUv3 plug-in hosts when a particular UI size is selected. More... | |
virtual bool | GetMidiNoteText (int noteNumber, char *str) const |
Override this method to provide custom text linked to MIDI note numbers in API classes that support that (VST2) Typically this might be used for a drum machine plug-in, in order to label a certainty "kick drum" etc. More... | |
virtual void * | GetAAXViewInterface () |
You need to implement this method if you are not using IGraphics and you want to support AAX's view interface functionality (special shortcuts to add automation for a parameter etc.) More... | |
virtual void | OnIdle () |
Override this method to get an "idle"" call on the main thread. | |
void | SetParameterValue (int paramIdx, double normalizedValue) |
SetParameterValue is called from the UI in the middle of a parameter change gesture (possibly via delegate) in order to update a parameter's value. More... | |
virtual void | GetTrackColor (int &r, int &g, int &b) |
Get the color of the track that the plug-in is inserted on. | |
virtual void | GetTrackName (WDL_String &str) |
Get the name of the track that the plug-in is inserted on. | |
virtual int | GetTrackIndex () |
Get the index of the track that the plug-in is inserted on. | |
virtual void | GetTrackNamespace (WDL_String &str) |
Get the namespace of the track that the plug-in is inserted on. | |
virtual int | GetTrackNamespaceIndex () |
Get the namespace index of the track that the plug-in is inserted on. | |
virtual void | DirtyParametersFromUI () override |
In a distributed VST3 or WAM plugin, if you modify the parameters on the UI side (e.g. More... | |
virtual void | SendParameterValueFromAPI (int paramIdx, double value, bool normalized) |
This is called from the plug-in API class in order to update UI controls linked to plug-in parameters, prior to calling OnParamChange() NOTE: It may be called on the high priority audio thread. More... | |
void | SetHost (const char *host, int version) |
Called to set the name of the current host, if known (calls on to HostSpecificInit() and OnHostIdentified()). More... | |
virtual void | HostSpecificInit () |
This method is implemented in some API classes, in order to do specific initialisation for particular problematic hosts. More... | |
void | BeginInformHostOfParamChangeFromUI (int paramIdx) override |
void | EndInformHostOfParamChangeFromUI (int paramIdx) override |
bool | EditorResizeFromUI (int viewWidth, int viewHeight, bool needsPlatformResize) override |
void | SendParameterValueFromUI (int paramIdx, double normalisedValue) override |
void | SendMidiMsgFromUI (const IMidiMsg &msg) override |
void | SendSysexMsgFromUI (const ISysEx &msg) override |
void | SendArbitraryMsgFromUI (int msgTag, int ctrlTag=kNoTag, int dataSize=0, const void *pData=nullptr) override |
void | DeferMidiMsg (const IMidiMsg &msg) override |
void | DeferSysexMsg (const ISysEx &msg) override |
void | CreateTimer () |
Called by the API class to create the timer that pumps the parameter/message queues. | |
![]() | |
IPluginBase (int nParams, int nPresets) | |
IPluginBase (const IPluginBase &)=delete | |
IPluginBase & | operator= (const IPluginBase &)=delete |
const char * | GetPluginName () const |
int | GetPluginVersion (bool decimal) const |
Get the plug-in version number. More... | |
void | GetPluginVersionStr (WDL_String &str) const |
Gets the plug-in version as a string. More... | |
const char * | GetMfrName () const |
Get the manufacturer name as a CString. | |
const char * | GetProductName () const |
Get the product name as a CString. More... | |
int | GetUniqueID () const |
int | GetMfrID () const |
EHost | GetHost () const |
void | GetHostStr (WDL_String &str) const |
Get the host name as a CString. More... | |
int | GetHostVersion (bool decimal) const |
Get the host version number as an integer. More... | |
void | GetHostVersionStr (WDL_String &str) const |
Get the host version number as a string. More... | |
EAPI | GetAPI () const |
const char * | GetAPIStr () const |
const char * | GetArchStr () const |
void | GetBuildInfoStr (WDL_String &str, const char *date, const char *time) const |
Get the build date of the plug-in and architecture/api details in one string. More... | |
bool | HasUI () const |
bool | GetHostResizeEnabled () const |
const char * | GetBundleID () const |
int | NParamGroups () const |
int | AddParamGroup (const char *name) |
Called to add a parameter group name, when a unique group name is discovered. More... | |
const char * | GetParamGroupName (int idx) const |
Get the parameter group name as a particular index. More... | |
virtual void | InformHostOfParameterDetailsChange () |
Implemented by the API class, call this if you update parameter labels and hopefully the host should update it's displays (not applicable to all APIs) | |
bool | DoesStateChunks () const |
bool | SerializeParams (IByteChunk &chunk) const |
Serializes the current double precision floating point, non-normalised values (IParam::mValue) of all parameters, into a binary byte chunk. More... | |
int | UnserializeParams (const IByteChunk &chunk, int startPos) |
Unserializes double precision floating point, non-normalised values from a byte chunk into mParams. More... | |
virtual bool | SerializeState (IByteChunk &chunk) const |
Override this method to serialize custom state data, if your plugin does state chunks. More... | |
virtual int | UnserializeState (const IByteChunk &chunk, int startPos) |
Override this method to unserialize custom state data, if your plugin does state chunks. More... | |
virtual bool | SerializeVST3CtrlrState (IByteChunk &chunk) const |
VST3 ONLY! - THIS IS ONLY INCLUDED FOR COMPATIBILITY - NOONE ELSE SHOULD NEED IT! More... | |
virtual int | UnserializeVST3CtrlrState (const IByteChunk &chunk, int startPos) |
VST3 ONLY! - THIS IS ONLY INCLUDED FOR COMPATIBILITY - NOONE ELSE SHOULD NEED IT! More... | |
int | GetCurrentPresetIdx () const |
Get the index of the current, active preset. More... | |
void | SetCurrentPresetIdx (int idx) |
Set the index of the current, active preset. More... | |
virtual void | InformHostOfPresetChange () |
Implemented by the API class, called by the UI (etc) when the plug-in initiates a program/preset change (not applicable to all APIs) | |
IPreset * | GetPreset (int idx) |
Get a ptr to a factory preset @ param idx The index number of the preset you are referring to. | |
void | ModifyCurrentPreset (const char *name=0) |
This method should update the current preset with current values NOTE: This is only relevant for VST2 plug-ins, which is the only format to have the notion of banks? More... | |
int | NPresets () const |
Gets the number of factory presets. More... | |
bool | RestorePreset (int idx) |
Restore a preset by index. More... | |
bool | RestorePreset (const char *name) |
Restore a preset by name. More... | |
const char * | GetPresetName (int idx) const |
Get the name a preset. More... | |
void | CopyPreset (IPreset *pSrc, int destIdx, bool copyname=false) |
Copy source preset to preset at index. More... | |
void | MakeDefaultPreset (const char *name=0, int nPresets=1) |
This method can be used to initialize baked-in factory presets with the default parameter values. More... | |
void | MakePreset (const char *name,...) |
Create a baked-in factory preset, specifiying parameter values sequentially usage: MakePreset(name, param1, param2, ..., paramN) See DumpMakePresetSrc() which is a utility that can be used to create the code for MakePreset() calls. More... | |
void | MakePresetFromNamedParams (const char *name, int nParamsNamed,...) |
Create a baked-in factory preset, specifiying parameter values with a list of parameter index and value pairs usage: MakePresetFromNamedParams(name, nParamsNamed, paramEnum1, paramVal1, paramEnum2, paramVal2, ..., paramEnumN, paramVal2) See DumpMakePresetFromNamedParamsSrc() which is a utility that can be used to create the code for MakePreset() calls nParamsNamed may be less than the total number of params. More... | |
void | MakePresetFromChunk (const char *name, IByteChunk &chunk) |
Creates a preset from an IByteChunk containging serialized data. More... | |
void | MakePresetFromBlob (const char *name, const char *blob, int sizeOfChunk) |
Creates a preset from a base64 encoded CString. More... | |
void | PruneUninitializedPresets () |
[AUV2 only] Removes any presets that weren't initialized | |
virtual void | OnPresetsModified () |
[VST2 only] Called when the preset name is changed by the host | |
void | EnsureDefaultPreset () |
[VST2 only] Called to fill uninitialzed presets | |
bool | SerializePresets (IByteChunk &chunk) const |
[VST2 only] Called when the VST2 host calls effGetChunk for a bank * More... | |
int | UnserializePresets (const IByteChunk &chunk, int startPos) |
[VST2 only] Called when the VST2 host calls effSetChunk for a bank * More... | |
void | DumpMakePresetSrc (const char *file) const |
Writes a call to MakePreset() for the current preset to a new text file. More... | |
void | DumpMakePresetFromNamedParamsSrc (const char *file, const char *paramEnumNames[]) const |
Writes a call to MakePresetFromNamedParams() for the current preset to a new text file. More... | |
void | DumpPresetBlob (const char *file) const |
Writes a call to MakePresetFromBlob() for the current preset to a new text file. More... | |
bool | SavePresetAsFXP (const char *file) const |
Save current state as a VST2 format preset. More... | |
bool | SaveBankAsFXB (const char *file) const |
Save current bank as a VST2 format bank [VST2 only]. More... | |
bool | LoadPresetFromFXP (const char *file) |
Load VST2 format preset. More... | |
bool | LoadBankFromFXB (const char *file) |
Load VST2 format bank [VST2 only]. More... | |
void | InitParamRange (int startIdx, int endIdx, int countStart, const char *nameFmtStr, double defaultVal, double minVal, double maxVal, double step, const char *label="", int flags=0, const char *group="", const IParam::Shape &shape=IParam::ShapeLinear(), IParam::EParamUnit unit=IParam::kUnitCustom, IParam::DisplayFunc displayFunc=nullptr) |
Initialise a range of parameters simultaneously. More... | |
void | CloneParamRange (int cloneStartIdx, int cloneEndIdx, int startIdx, const char *searchStr="", const char *replaceStr="", const char *newGroup="") |
Clone a range of parameters, optionally doing a string substitution on the parameter name. More... | |
void | ForParamInRange (int startIdx, int endIdx, std::function< void(int paramIdx, IParam ¶m)> func) |
Modify a range of parameters with a lamda function. More... | |
void | ForParamInGroup (const char *paramGroup, std::function< void(int paramIdx, IParam ¶m)> func) |
Modify a parameter group simulataneously. More... | |
void | CopyParamValues (int startIdx, int destIdx, int nParams) |
Copy a range of parameter values. More... | |
void | CopyParamValues (const char *inGroup, const char *outGroup) |
Copy a range of parameter values for a parameter group. More... | |
void | RandomiseParamValues () |
Randomise all parameters. | |
void | RandomiseParamValues (int startIdx, int endIdx) |
Randomise parameter values within a range. More... | |
void | RandomiseParamValues (const char *paramGroup) |
Randomise parameter values for a parameter group. More... | |
void | DefaultParamValues () |
Set all parameters to their default values. | |
void | DefaultParamValues (int startIdx, int endIdx) |
Default parameter values within a range. More... | |
void | DefaultParamValues (const char *paramGroup) |
Default parameter values for a parameter group. More... | |
void | PrintParamValues () |
Default parameter values for a parameter group. | |
Friends | |
class | IPlugAPP |
class | IPlugAAX |
class | IPlugVST2 |
class | IPlugVST3 |
class | IPlugVST3Controller |
class | IPlugVST3Processor |
class | IPlugAU |
class | IPlugAUv3 |
class | IPlugWEB |
class | IPlugWAM |
The base class of an IPlug plug-in, which interacts with the different plug-in APIs.
This interface does not handle audio processing, see
Definition at line 42 of file IPlugAPIBase.h.
|
virtual |
Override this method to implement a custom comparison of incoming state data with your plug-ins state data, in order to support the ProTools compare light when using custom state chunks.
The default implementation will compare the serialized parameters.
pIncomingState | The incoming state data |
startPos | The position to start in the incoming data in bytes |
true
in order to indicate that the states are equal. Definition at line 71 of file IPlugAPIBase.cpp.
References IPlugAAX::EditorResize().
|
overridevirtual |
In a distributed VST3 or WAM plugin, if you modify the parameters on the UI side (e.g.
recall preset in custom preset browser), you can call this to update the parameters on the DSP side
Reimplemented in IPlugVST3Controller, and IPlugVST3.
Definition at line 123 of file IPlugAPIBase.cpp.
References IPlugAAX::InformHostOfParamChange().
Referenced by IPlugVST3::DirtyParametersFromUI(), IPlugVST3Controller::DirtyParametersFromUI(), and GetTrackNamespaceIndex().
|
inlinevirtual |
You need to implement this method if you are not using IGraphics and you want to support AAX's view interface functionality (special shortcuts to add automation for a parameter etc.)
Definition at line 97 of file IPlugAPIBase.h.
|
inlinevirtual |
Override this method to provide custom text linked to MIDI note numbers in API classes that support that (VST2) Typically this might be used for a drum machine plug-in, in order to label a certainty "kick drum" etc.
noteNumber | MIDI note to get the textual description for |
str | char array to set the text for the note. Should be less thatn kVstMaxNameLen (64) characters |
true
if you specified a custom textual description for this note Definition at line 92 of file IPlugAPIBase.h.
Referenced by IPlugVST2::HostSpecificInit().
|
inlinevirtual |
This method is implemented in some API classes, in order to do specific initialisation for particular problematic hosts.
This is not the same as OnHostIdentified(), which you may implement in your plug-in class to do your own specific initialisation after a host has been identified
Reimplemented in IPlugVST2.
Definition at line 151 of file IPlugAPIBase.h.
References CreateTimer(), IPlugQueue< T >::Push(), and SetParameterValue().
Referenced by SetHost().
|
inlinevirtual |
Implement this to do something specific when IPlug becomes aware of the particular host that is hosting the plug-in.
The method may get called multiple times.
Definition at line 69 of file IPlugAPIBase.h.
References OnHostRequestingImportantParameters().
Referenced by SetHost().
|
virtual |
Called by AUv3 plug-ins to get the "overview parameters".
count | How many overview parameters |
results | You should populate this typed buf with the indexes of the overview parameters if the host wants to show count number of controls |
Definition at line 57 of file IPlugAPIBase.cpp.
Referenced by OnHostIdentified().
|
inlinevirtual |
Called by AUv3 plug-in hosts to query support for multiple UI sizes.
width | The width the host offers |
height | The height the host offers |
true
if your plug-in supports these dimensions Definition at line 80 of file IPlugAPIBase.h.
|
inlinevirtual |
Called by some AUv3 plug-in hosts when a particular UI size is selected.
width | The selected width |
height | The selected height |
Definition at line 85 of file IPlugAPIBase.h.
|
virtual |
This is called from the plug-in API class in order to update UI controls linked to plug-in parameters, prior to calling OnParamChange() NOTE: It may be called on the high priority audio thread.
Its purpose is to place parameter changes in a queue to defer to main thread for the UI
paramIdx | The index of the parameter that changed |
value | The new value |
normalized | /true if value is normalised |
Definition at line 132 of file IPlugAPIBase.cpp.
References IPluginBase::HasUI(), and OnIdle().
Referenced by GetTrackNamespaceIndex(), and IPlugVST2::HostSpecificInit().
void IPlugAPIBase::SetHost | ( | const char * | host, |
int | version | ||
) |
Called to set the name of the current host, if known (calls on to HostSpecificInit() and OnHostIdentified()).
host | The name of the plug-in host |
version | The version of the plug-in host where version in hex = 0xVVVVRRMM |
Definition at line 100 of file IPlugAPIBase.cpp.
References GetVersionStr(), HostSpecificInit(), LookUpHost(), and OnHostIdentified().
Referenced by GetTrackNamespaceIndex(), IPlugVST2::HostSpecificInit(), and IPlugAU::SendSysEx().
void IPlugAPIBase::SetParameterValue | ( | int | paramIdx, |
double | normalizedValue | ||
) |
SetParameterValue is called from the UI in the middle of a parameter change gesture (possibly via delegate) in order to update a parameter's value.
It will update mParams[paramIdx], call InformHostOfParamChange and IPlugAPIBase::OnParamChange();
paramIdx | The index of the parameter that changed |
normalizedValue | The new (normalised) value |
Definition at line 115 of file IPlugAPIBase.cpp.
References IPlugAAX::InformHostOfParamChange().
Referenced by HostSpecificInit(), and OnIdle().