iPlug 2: IPlugPluginBase.h Source File

1

2

3

4

5

6

7

8

9

10

11#pragma once

12

20#include "IPlugStructs.h"

22

23BEGIN_IPLUG_NAMESPACE

24

27{

28public:

31

34

35#pragma mark - Plug-in properties

37 const char* GetPluginName() const { return mPluginName.Get(); }

38

43

50

52 const char* GetMfrName() const { return mMfrName.Get(); }

53

55 const char* GetProductName() const { return mProductName.Get(); }

56

59

61 int GetMfrID() const { return mMfrID; }

62

65

69

72 void GetRawHostStr(WDL_String& str) const { str.Set(mRawHostNameStr.Get()); }

73

78

82

84 EAPI GetAPI() const { return mAPI; }

85

88

91

96 void GetBuildInfoStr(WDL_String& str, const char* date, const char* time) const;

97

99 bool HasUI() const { return mHasUI; }

100

103

104

105 const char* GetBundleID() const { return mBundleID.Get(); }

106

107

108 const char* GetAppGroupID() const { return mAppGroupID.Get(); }

109

110#pragma mark - Parameters

111

113 int NParamGroups() const { return mParamGroups.GetSize(); }

114

119

123 const char* GetParamGroupName(int idx) const { return mParamGroups.Get(idx); }

124

127

128#pragma mark - State Serialization

131

136

142

147

154

159

164

168

172

175

176#pragma mark - Preset Manipulation

177

181

186

189 int NPresets() const { return mPresets.GetSize(); }

190

195

200

205

210 {

211 IPreset* pDst = mPresets.Get(destIdx);

212

213 pDst->mChunk.Clear();

214 pDst->mChunk.PutChunk(&pSrc->mChunk);

215 pDst->mInitialized = true;

216 strncpy(pDst->mName, pSrc->mName, MAX_PRESET_NAME_LEN - 1);

217 }

218

226

232 void MakePreset(const char* name, ...);

233

242

247

254 void MakePresetFromBlob(const char* name, const char* blob, int sizeOfChunk);

255

258

261

264

269

275

279

284

288

293

298

303

308

309

310#pragma mark - Parameter manipulation

311

327 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);

328

336 void CloneParamRange(int cloneStartIdx, int cloneEndIdx, int startIdx, const char* searchStr = "", const char* replaceStr = "", const char* newGroup = "");

337

342 void ForParamInRange(int startIdx, int endIdx, std::function<void(int paramIdx, IParam& param)> func);

343

347 void ForParamInGroup(const char* paramGroup, std::function<void(int paramIdx, IParam& param)> func);

348

353 void CopyParamValues(int startIdx, int destIdx, int nParams);

354

358 void CopyParamValues(const char* inGroup, const char* outGroup);

359

362

367

371

374

379

383

386

395 friend class IPlugWEB;

398

399private:

400 int mCurrentPresetIdx = 0;

402 bool mStateChunks = false;

404 WDL_String mPluginName;

406 WDL_String mProductName;

408 WDL_String mMfrName;

410 int mUniqueID;

412 int mMfrID;

414 int mVersion;

416 int mHostVersion = 0;

418 EHost mHost = kHostUninit;

420 WDL_String mRawHostNameStr;

422 EAPI mAPI;

424 WDL_String mBundleID;

426 WDL_String mAppGroupID;

428 bool mHasUI = false;

430 bool mHostResize = false;

432 WDL_PtrList<const char> mParamGroups;

434 WDL_PtrList<IPreset> mPresets;

435

436#ifdef PARAMS_MUTEX

438protected:

440 WDL_Mutex mParams_mutex;

441#endif

442};

443

444END_IPLUG_NAMESPACE

Used for choosing an editor delegate.

IPlug logging a.k.a tracing functionality.

Manages a block of memory, for plug-in settings store/recall.

void Clear()

Clears the chunk (resizes to 0)

int PutChunk(const IByteChunk *pRHS)

Put another IByteChunk into this one.

std::function< void(double, WDL_String &)> DisplayFunc

DisplayFunc allows custom parameter display functions, defined by a lambda matching this signature.

EParamUnit

Used by AudioUnit plugins to determine the appearance of parameters, based on the kind of data they r...

AAX API base class for an IPlug plug-in.

The base class of an IPlug plug-in, which interacts with the different plug-in APIs.

Standalone application base class for an IPlug plug-in.

AudioUnit v2 API base class for an IPlug plug-in.

AudioUnit v3 API base class for an IPlug plug-in.

VST2.4 API base class for an IPlug plug-in.

VST3 Controller API-base class for a distributed IPlug VST3 plug-in.

VST3 base class for a non-distributed IPlug VST3 plug-in.

Shared VST3 processor code.

VST3 Processor API-base class for a distributed IPlug VST3 plug-in.

WebAudioModule (WAM) API base class.

Base class that contains plug-in info and state manipulation methods.

void ForParamInRange(int startIdx, int endIdx, std::function< void(int paramIdx, IParam &param)> func)

Modify a range of parameters with a lamda function.

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.

virtual int UnserializeState(const IByteChunk &chunk, int startPos)

Override this method to unserialize custom state data, if your plugin does state chunks.

IPreset * GetPreset(int idx)

Get a ptr to a factory preset @ param idx The index number of the preset you are referring to.

void DefaultParamValues()

Set all parameters to their default values.

const char * GetPluginName() const

void DumpMakePresetFromNamedParamsSrc(const char *file, const char *paramEnumNames[]) const

Writes a call to MakePresetFromNamedParams() for the current preset to a new text file.

bool SerializeParams(IByteChunk &chunk) const

Serializes the current double precision floating point, non-normalised values (IParam::mValue) of all...

void GetHostStr(WDL_String &str) const

Get the host name (name is normalized)

int GetPluginVersion(bool decimal) const

Get the plug-in version number.

const char * GetArchStr() const

void RandomiseParamValues()

Randomise all parameters.

void MakePresetFromBlob(const char *name, const char *blob, int sizeOfChunk)

Creates a preset from a base64 encoded CString.

int UnserializePresets(const IByteChunk &chunk, int startPos)

[VST2 only] Called when the VST2 host calls effSetChunk for a bank *

bool LoadPresetFromFXP(const char *file)

Load VST2 format preset.

virtual void InformHostOfParameterDetailsChange()

Implemented by the API class, call this if you update parameter labels and hopefully the host should ...

virtual bool SerializeState(IByteChunk &chunk) const

Override this method to serialize custom state data, if your plugin does state chunks.

int AddParamGroup(const char *name)

Called to add a parameter group name, when a unique group name is discovered.

bool DoesStateChunks() const

void ModifyCurrentPreset(const char *name=0)

This method should update the current preset with current values NOTE: This is only relevant for VST2...

int GetCurrentPresetIdx() const

Get the index of the current, active preset.

int UnserializeParams(const IByteChunk &chunk, int startPos)

Unserializes double precision floating point, non-normalised values from a byte chunk into mParams.

void EnsureDefaultPreset()

[VST2 only] Called to fill uninitialzed presets

int GetHostVersion(bool decimal) const

Get the host version number as an integer.

void CopyParamValues(int startIdx, int destIdx, int nParams)

Copy a range of parameter values.

virtual void InformHostOfPresetChange()

Implemented by the API class, called by the UI (etc) when the plug-in initiates a program/preset chan...

void GetPluginVersionStr(WDL_String &str) const

Gets the plug-in version as a string.

void MakePresetFromNamedParams(const char *name, int nParamsNamed,...)

Create a baked-in factory preset, specifiying parameter values with a list of parameter index and val...

const char * GetMfrName() const

Get the manufacturer name as a CString.

void DumpPresetBlob(const char *file) const

Writes a call to MakePresetFromBlob() for the current preset to a new text file.

bool RestorePreset(int idx)

Restore a preset by index.

const char * GetParamGroupName(int idx) const

Get the parameter group name as a particular index.

void SetCurrentPresetIdx(int idx)

Set the index of the current, active preset.

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.

void GetHostVersionStr(WDL_String &str) const

Get the host version number as a string.

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.

const char * GetAPIStr() const

virtual bool SerializeVST3CtrlrState(IByteChunk &chunk) const

VST3 ONLY! - THIS IS ONLY INCLUDED FOR COMPATIBILITY - NOONE ELSE SHOULD NEED IT!

bool SerializePresets(IByteChunk &chunk) const

[VST2 only] Called when the VST2 host calls effGetChunk for a bank *

void ForParamInGroup(const char *paramGroup, std::function< void(int paramIdx, IParam &param)> func)

Modify a parameter group simulataneously.

void CopyPreset(IPreset *pSrc, int destIdx, bool copyname=false)

Copy source preset to preset at index.

const char * GetPresetName(int idx) const

Get the name a preset.

bool LoadBankFromFXB(const char *file)

Load VST2 format bank [VST2 only].

bool GetHostResizeEnabled() const

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.

virtual int UnserializeVST3CtrlrState(const IByteChunk &chunk, int startPos)

VST3 ONLY! - THIS IS ONLY INCLUDED FOR COMPATIBILITY - NOONE ELSE SHOULD NEED IT!

void DumpMakePresetSrc(const char *file) const

Writes a call to MakePreset() for the current preset to a new text file.

bool SavePresetAsFXP(const char *file) const

Save current state as a VST2 format preset.

void PruneUninitializedPresets()

[AUV2 only] Removes any presets that weren't initialized

void PrintParamValues()

Default parameter values for a parameter group

virtual void OnPresetsModified()

[VST2 only] Called when the preset name is changed by the host

void MakePresetFromChunk(const char *name, IByteChunk &chunk)

Creates a preset from an IByteChunk containing serialized data.

void GetRawHostStr(WDL_String &str) const

Get raw host name (as it is reported from the host)

int NPresets() const

Gets the number of factory presets.

bool SaveBankAsFXB(const char *file) const

Save current bank as a VST2 format bank [VST2 only].

const char * GetProductName() const

Get the product name as a CString.

void MakePreset(const char *name,...)

Create a baked-in factory preset, specifiying parameter values sequentially usage: MakePreset(name,...

static void GetHostNameStr(EHost host, WDL_String &str)

Gets a human-readable name from host identifier.

Base struct for parameter shaping.

Linear parameter shaping.

A struct used for specifying baked-in factory presets.