6#include "public.sdk/source/vst/vstsinglecomponenteffect.h"
7#include "pluginterfaces/vst/ivstparameterchanges.h"
10#include "pluginterfaces/vst/ivstevents.h"
13#include "pluginterfaces/base/ustring.h"
20#define ENABLE_WINDOWS_H 1
23#include <CoreFoundation/CoreFoundation.h>
25#ifdef ENABLE_WINDOWS_H
28extern void* hInstance;
40class VSTParamUpdateQueue;
43class VSTMIDIEventQueue;
51const ParamID baseCCParamID = 1000;
52const ParamID baseCCParamIDEnd = 1129;
55const unsigned char CONTROL_CHANGE = 0xB0;
56const unsigned char CHANNEL_PRESSURE = 0xD0;
57const unsigned char PITCH_BEND = 0xE0;
70class VST3Plugin :
public SingleComponentEffect,
public IMidiMapping
81 tresult PLUGIN_API
initialize(FUnknown* context)
override;
84 tresult PLUGIN_API
setBusArrangements(SpeakerArrangement* inputs, int32 numIns, SpeakerArrangement* outputs, int32 numOuts)
override;
93 tresult PLUGIN_API
setActive(TBool state)
override;
97 tresult PLUGIN_API
setState(IBStream* fileStream)
override;
98 tresult PLUGIN_API
getState(IBStream* fileStream)
override;
105 tresult PLUGIN_API
process(ProcessData& data)
override;
108 virtual tresult PLUGIN_API
getMidiControllerAssignment(int32 busIndex, int16 channel, CtrlNumber midiControllerNumber, ParamID&
id)
override;
115 inline void unipolarDoubleToMIDI14_bit(
double unipolarValue, uint32_t& midiDataLSB, uint32_t& midiDataMSB)
118 unsigned short shValue = (
unsigned short)(unipolarValue * (
double)(0x4000));
119 unsigned short shd1 = shValue & 0x007F;
122 unsigned short shd2 = shValue << 1;
125 shd2 = shd2 & 0x7F00;
136 IPlugView* PLUGIN_API
createView(
const char* _name)
override;
142 virtual tresult
receiveText(
const char8* text)
override;
151 void updateMeters(ProcessData& data,
bool forceOff =
false);
159 virtual tresult PLUGIN_API
getProgramName(ProgramListID listId, int32 programIndex, String128 name )
override;
162 virtual void PLUGIN_API
update(FUnknown* changedUnknown, int32 message)
override ;
185 OBJ_METHODS(
VST3Plugin, SingleComponentEffect)
187 DEF_INTERFACE(IMidiMapping)
188 DEF_INTERFACE(IUnitInfo)
189 END_DEFINE_INTERFACES(SingleComponentEffect)
190 REFCOUNT_METHODS(SingleComponentEffect)
199 bool plugInSideBypass =
false;
200 bool hasSidechain =
false;
209 typedef std::vector<IPtr<ProgramList> > ProgramListVector;
210 typedef std::map<ProgramListID, ProgramListVector::size_type> ProgramIndexMap;
211 typedef std::vector<IPtr<Unit> > UnitVector;
213 ProgramListVector programLists;
214 ProgramIndexMap programIndexMap;
218#if defined _WINDOWS || defined _WINDLL
219#ifdef ENABLE_WINDOWS_H
220 wchar_t* convertCharArrayToLPCWSTR(
const char* charArray)
222 wchar_t* wString =
new wchar_t[4096];
223 MultiByteToWideChar(CP_ACP, 0, charArray, -1, wString, 4096);
229 char* getMyDLLDirectory(
const char* cPluginName)
231 wchar_t* piName = convertCharArrayToLPCWSTR(cPluginName);
232 if (!piName)
return nullptr;
234 HMODULE hmodule = GetModuleHandle(piName);
237 memset(&dir[0], 0, MAX_PATH*
sizeof(TCHAR));
238 dir[MAX_PATH-1] =
'\0';
241 GetModuleFileName(hmodule, &dir[0], MAX_PATH);
245 char fullPath[MAX_PATH];
246 size_t nNumCharConverted;
247 wcstombs_s(&nNumCharConverted, fullPath, MAX_PATH, dir, MAX_PATH);
248 char* pDLLRoot =
new char[MAX_PATH];
249 size_t nLenDir = strlen(fullPath);
250 size_t nLenDLL = strlen(cPluginName);
251 memcpy(pDLLRoot, fullPath, nLenDir-nLenDLL);
252 pDLLRoot[nLenDir-nLenDLL] =
'\0';
262 char* getMyComponentDirectory(CFStringRef bundleID)
264 if (bundleID !=
nullptr)
266 CFBundleRef helixBundle = CFBundleGetBundleWithIdentifier( bundleID );
267 if(helixBundle !=
nullptr)
269 CFURLRef bundleURL = CFBundleCopyBundleURL ( helixBundle );
270 if(bundleURL !=
nullptr)
272 CFURLRef componentFolderPathURL = CFURLCreateCopyDeletingLastPathComponent(
nullptr, bundleURL);
274 CFStringRef myComponentPath = CFURLCopyFileSystemPath(componentFolderPathURL, kCFURLPOSIXPathStyle);
275 CFRelease(componentFolderPathURL);
277 if(myComponentPath !=
nullptr)
279 int nSize = CFStringGetLength(myComponentPath);
280 char* path =
new char[nSize+1];
281 memset(path, 0, (nSize+1)*
sizeof(
char));
283 bool success = CFStringGetCString(myComponentPath, path, nSize+1, kCFStringEncodingASCII);
284 CFRelease(myComponentPath);
286 if(success)
return path;
289 CFRelease(bundleURL);
316 unsigned int bufferSize = 0;
317 ParamValue initialValue = 0.0;
318 ParamValue previousValue = 0.0;
319 ParamValue maxValue = 0.0;
320 ParamValue minValue = 0.0;
324 ParamValue yIntercept;
327 unsigned int* sampleAccuracy =
nullptr;
330 IParamValueQueue* parameterQueue =
nullptr;
333 bool dirtyBit =
false;
334 int sampleOffset = 0;
339 void initialize(ParamValue _initialValue, ParamValue _minValue, ParamValue _maxValue,
unsigned int* _sampleAccuracy);
340 void setParamValueQueue(IParamValueQueue* _paramValueQueue,
unsigned int _bufferSize);
342 ParamValue
interpolate(
int x1,
int x2, ParamValue y1, ParamValue y2,
int x);
347 bool getValueAtOffset(
long int _sampleOffset,
double _previousValue,
double& _nextValue);
384 switch(hostMessageInfo.hostMessage)
390 for(
unsigned int i = 0; i < guiUpdateData.
guiParameters.size(); i++)
401 for (
unsigned int i = 0; i < guiUpdateData.
guiParameters.size(); i++)
509 for (customViewControllerMap::const_iterator it = customViewMap.begin(), end = customViewMap.end(); it != end; ++it)
516 virtual void parameterChanged(int32_t controlID,
double actualValue,
double normalizedValue)
536 if(!param)
return 0.0;
538 return param->getNormalized();
547 if (!param)
return 0.0;
550 double normalizedValue = param->getNormalized();
551 return param->toPlain(normalizedValue);
573 MessageInfo info(PLUGINGUI_REGISTER_SUBCONTROLLER);
591 MessageInfo info(PLUGINGUI_DE_REGISTER_SUBCONTROLLER);
608 customViewControllerMap::const_iterator it = customViewMap.find(customViewName);
609 if (it != customViewMap.end())
617 customViewMap.insert(std::make_pair(customViewName, pCVC));
639 MessageInfo info(PLUGINGUI_DE_REGISTER_CUSTOMVIEW);
663 for (customViewControllerMap::const_iterator it = customViewMap.begin(), end = customViewMap.end(); it != end; ++it)
665 it->second->clearCustomViewPtr();
669 it->second->clearCustomViewPtr();
707 for (customViewControllerMap::const_iterator it = customViewMap.begin(), end = customViewMap.end(); it != end; ++it)
709 if (it->second->getCustomViewPtr() == customViewConnector)
723 if (it->second->getCustomViewPtr() == customViewConnector)
759 void clearMIDIProxyEvents()
761 proxyMIDIEvents.clear();
766 proxyMIDIEvents.push_back(event);
790 uint32_t count = (uint32_t)proxyMIDIEvents.size();
791 for (uint32_t i = 0; i < count; i++)
801 bool eventOccurred =
false;
802 bool haveEvents =
false;
808 const unsigned char MIDI_NOTE_OFF = 0x80;
809 const unsigned char MIDI_NOTE_ON = 0x90;
810 const unsigned char MIDI_POLY_PRESSURE = 0xA0;
816 if (e.sampleOffset != sampleOffset)
823 case Event::kNoteOnEvent:
827 event.midiChannel = (
unsigned int)e.noteOn.channel;
828 event.
midiData1 = (
unsigned int)e.noteOn.pitch;
829 event.midiData2 = (
unsigned int)(127.0*e.noteOn.velocity);
830 event.midiSampleOffset = e.sampleOffset;
831 eventOccurred =
true;
840 case Event::kNoteOffEvent:
845 event.midiChannel = (
unsigned int)e.noteOff.channel;
846 event.
midiData1 = (
unsigned int)e.noteOff.pitch;
847 event.midiData2 = (
unsigned int)(127.0*e.noteOff.velocity);
848 event.midiSampleOffset = e.sampleOffset;
849 eventOccurred =
true;
859 case Event::kPolyPressureEvent:
862 event.
midiMessage = (
unsigned int)MIDI_POLY_PRESSURE;
863 event.midiChannel = (
unsigned int)e.polyPressure.channel;
864 event.
midiData1 = (
unsigned int)e.polyPressure.pitch;
865 event.midiData2 = (
unsigned int)(127.0*e.polyPressure.pressure);
866 event.midiSampleOffset = e.sampleOffset;
867 eventOccurred =
true;
880 if (e.sampleOffset == sampleOffset)
896 return eventOccurred;
903 std::vector<midiEvent> proxyMIDIEvents;
924 virtual void PLUGIN_API update (FUnknown* changedUnknown, int32 message)
926 if(message == IDependent::kChanged && receiver && editController)
928 double normalizedValue = editController->getParamNormalized (receiver->
getControlID());
959 typedef std::map<int32_t, VST3UpdateHandler*> UpdaterHandlerMap;
960 UpdaterHandlerMap updateHandlers;
963 IPlugFrame* plugFrame;
964 const ViewRect& getRect()
const {
return rect; }
965 void setRect(
const ViewRect& r) { rect = r; }
966 bool isAttached()
const {
return systemWindow != 0; }
967 virtual void attachedToParent()
override {}
968 virtual void removedFromParent()
override {}
970 virtual tresult PLUGIN_API
attached(
void* parent, FIDString type)
override;
971 virtual tresult PLUGIN_API
removed()
override;
972 virtual tresult PLUGIN_API onWheel(
float distance)
override {
return kResultFalse; }
975 virtual tresult PLUGIN_API
onSize(ViewRect* newSize)
override;
976 virtual tresult PLUGIN_API
getSize(ViewRect* size)
override;
978 virtual tresult PLUGIN_API onFocus(TBool )
override {
return kResultFalse; }
979 virtual tresult PLUGIN_API
setFrame(IPlugFrame* frame)
override;
980 virtual tresult PLUGIN_API canResize()
override{
return kResultFalse ; }
981 virtual tresult PLUGIN_API checkSizeConstraint(ViewRect* rect)
override
987 ViewRect viewRect = getRect();
988 rect->right = viewRect.right;
989 rect->bottom = viewRect.bottom;
994 virtual bool setWindowFrameSize(
double left = 0,
double top = 0,
double right = 0,
double bottom = 0) override
996 ViewRect vr(0, 0, right, bottom);
999 plugFrame->resizeView(
this, &vr);
1005 ViewRect viewRect = getRect();
1008 right = viewRect.getWidth();
1009 bottom = viewRect.getHeight();
The GUIPluginConnector interface creates a safe message mechanism for the GUI to issue requests to th...
Definition: AAXPluginParameters.h:600
Custom View interface to allow plugin core to create safe communication channels with GUI custom view...
Definition: pluginstructures.h:1462
virtual void updateView()=0
virtual void pushDataValue(double data)
Definition: pluginstructures.h:1472
virtual void sendMessage(void *data)
Definition: pluginstructures.h:1482
Custom interface so that GUI can pass information to plugin shell in a thread-safe manner.
Definition: pluginstructures.h:1540
Custom interface to allow resizing of GUI window; this is mainly used for the GUI designer.
Definition: pluginstructures.h:1497
Double buffered queue for MIDI messages.
Definition: pluginstructures.h:1628
Interface for VST3 parameter value update queue (sample accurate automation)
Definition: pluginstructures.h:1650
Custom interface to send the plugin shell a message from plugin core.
Definition: pluginstructures.h:1610
The PluginCore object is the default PluginBase derived object for ASPiK projects....
Definition: plugincore.h:44
virtual bool guiParameterChanged(int32_t controlID, double actualValue)
has nothing to do with actual variable or updated variable (binding)
Definition: plugincore.cpp:517
virtual bool processMIDIEvent(midiEvent &event)
process a MIDI event
Definition: plugincore.cpp:606
virtual bool processMessage(MessageInfo &messageInfo)
For Custom View and Custom Sub-Controller Operations.
Definition: plugincore.cpp:546
The PluginHostConnector implements the IPluginHostConnector interface for the plugin shell object....
Definition: AAXPluginParameters.h:480
The CustomViewController is part of the safe ICustomView feature in ASPiK. The CustomViewController m...
Definition: vst3plugin.h:431
CustomViewController(ICustomView *_customViewIF)
Definition: vst3plugin.h:434
virtual void updateView()
Definition: vst3plugin.h:438
void clearCustomViewPtr()
Definition: vst3plugin.h:465
const ICustomView * getCustomViewPtr()
Definition: vst3plugin.h:462
virtual void sendMessage(void *data)
Definition: vst3plugin.h:452
virtual void pushDataValue(double data)
Definition: vst3plugin.h:445
void setCustomViewPtr(ICustomView *_customViewIF)
Definition: vst3plugin.h:459
The GUIPluginConnector interface creates a safe message mechanism for the GUI to issue requests to th...
Definition: vst3plugin.h:493
customViewControllerMap customSubControllerMap
map of custom sub-controllers
Definition: vst3plugin.h:716
virtual ~GUIPluginConnector()
Definition: vst3plugin.h:503
CustomViewController * getCustomSubController(ICustomView *customViewConnector)
Definition: vst3plugin.h:719
virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView *customViewConnector)
Definition: vst3plugin.h:556
virtual void parameterChanged(int32_t controlID, double actualValue, double normalizedValue)
Definition: vst3plugin.h:516
virtual double getActualPluginParameter(int32_t controlID)
Definition: vst3plugin.h:542
PluginCore * pluginCore
the core object
Definition: vst3plugin.h:696
virtual bool deRregisterSubcontroller(ICustomView *customViewConnector)
Definition: vst3plugin.h:584
virtual bool deRegisterCustomView(ICustomView *customViewConnector)
Definition: vst3plugin.h:631
std::map< std::string, CustomViewController * > customViewControllerMap
map of custom view controllers
Definition: vst3plugin.h:701
VST3Plugin * editController
the VST3
Definition: vst3plugin.h:697
virtual bool guiTimerPing()
Definition: vst3plugin.h:677
virtual double getNormalizedPluginParameter(int32_t controlID)
Definition: vst3plugin.h:531
CustomViewController * getCustomViewController(ICustomView *customViewConnector)
Definition: vst3plugin.h:705
GUIPluginConnector(PluginCore *_pluginCore, VST3Plugin *_editController)
Definition: vst3plugin.h:496
virtual bool guiDidOpen()
Definition: vst3plugin.h:651
virtual bool registerCustomView(std::string customViewName, ICustomView *customViewConnector)
Definition: vst3plugin.h:603
virtual bool guiWillClose()
Definition: vst3plugin.h:659
virtual bool checkNonBoundValueChange(int tag, float normalizedValue)
Definition: vst3plugin.h:685
The VST GUI for the plugin. This is needed because VST3 requires an IPlugView GUI,...
Definition: vst3plugin.h:952
virtual bool getWindowFrameSize(double &left, double &top, double &right, double &bottom) override
Definition: vst3plugin.h:1003
PluginHostConnector * pluginHostConnector
Plugin Host interface.
Definition: vst3plugin.h:1016
virtual tresult PLUGIN_API setFrame(IPlugFrame *frame) override
ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.
Definition: vst3plugin.cpp:1825
GUIPluginConnector * guiPluginConnector
GUI Plugin interface.
Definition: vst3plugin.h:1015
virtual tresult PLUGIN_API removed() override
ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.
Definition: vst3plugin.cpp:1941
virtual ~PluginEditor()
ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.
Definition: vst3plugin.cpp:1809
virtual tresult PLUGIN_API isPlatformTypeSupported(FIDString type) override
ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.
Definition: vst3plugin.cpp:1986
PluginCore * pluginCore
the core
Definition: vst3plugin.h:1014
virtual tresult PLUGIN_API attached(void *parent, FIDString type) override
ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.
Definition: vst3plugin.cpp:1842
VST3Plugin * editController
parent VST3
Definition: vst3plugin.h:1017
virtual tresult PLUGIN_API onSize(ViewRect *newSize) override
ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.
Definition: vst3plugin.cpp:2023
virtual tresult PLUGIN_API getSize(ViewRect *size) override
ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.
Definition: vst3plugin.cpp:2045
virtual bool setWindowFrameSize(double left=0, double top=0, double right=0, double bottom=0) override
Definition: vst3plugin.h:994
The PluginHostConnector implements the IPluginHostConnector interface for the plugin shell object....
Definition: vst3plugin.h:372
virtual void sendHostMessage(const HostMessageInfo &hostMessageInfo)
process a message; by default it processes sendGUIUpdate to safely send a parameter change event but ...
Definition: vst3plugin.h:382
VST3Plugin * editController
our parent plugin
Definition: vst3plugin.h:412
The VST3Plugin object is the ASPiK plugin shell for the VST3 API.
Definition: vst3plugin.h:71
tresult PLUGIN_API setupProcessing(ProcessSetup &newSetup) override
we get information about sample rate, bit-depth, etc...
Definition: vst3plugin.cpp:587
static FUnknown * createInstance(void *context)
Definition: vst3plugin.h:154
static const char * getPluginName()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1436
bool enableSAAVST3
sample accurate parameter automation
Definition: vst3plugin.h:206
tresult PLUGIN_API setState(IBStream *fileStream) override
This is the READ part of the serialization process. We get the stream interface and use it to read fr...
Definition: vst3plugin.cpp:677
tresult PLUGIN_API initialize(FUnknown *context) override
object initializer
Definition: vst3plugin.cpp:84
tresult PLUGIN_API setParamNormalizedFromFile(ParamID tag, ParamValue value)
helper function for setComponentState()
Definition: vst3plugin.cpp:1266
tresult PLUGIN_API setComponentState(IBStream *fileStream) override
This is the serialization-read function so the GUI can be updated from a preset or startup.
Definition: vst3plugin.cpp:1220
virtual void PLUGIN_API update(FUnknown *changedUnknown, int32 message) override
Toggle preset.
Definition: vst3plugin.cpp:1377
virtual tresult PLUGIN_API getProgramName(ProgramListID listId, int32 programIndex, String128 name) override
Get preset name.
Definition: vst3plugin.cpp:1348
tresult PLUGIN_API setParamNormalized(ParamID tag, ParamValue value) override
This is overridden for selecting a preset, this is also called when automating parameters.
Definition: vst3plugin.cpp:1293
static const char * getVendorName()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1452
~VST3Plugin()
object destructor: because of class factory, do NOT use this for destruction; use terminate() instead
Definition: vst3plugin.cpp:65
VSTParamUpdateQueue ** m_pParamUpdateQueueArray
sample accurate parameter automation
Definition: vst3plugin.h:204
IPlugView *PLUGIN_API createView(const char *_name) override
creates the custom GUI view
Definition: vst3plugin.cpp:1147
virtual uint32 PLUGIN_API getLatencySamples() override
Definition: vst3plugin.h:168
virtual uint32 PLUGIN_API getTailSamples() override
Returns the tail-time in samples.
Definition: vst3plugin.cpp:613
tresult PLUGIN_API setActive(TBool state) override
VST3 plugins may be turned on or off; you are supposed to dynamically delare stuff when activated the...
Definition: vst3plugin.cpp:640
tresult PLUGIN_API getState(IBStream *fileStream) override
This is the WRITE part of the serialization process. We get the stream interface and use it to write ...
Definition: vst3plugin.cpp:739
void updateHostInfo(ProcessData &data, HostInfo *hostInfo)
update the incoming host data for the plugin core
Definition: vst3plugin.cpp:917
tresult PLUGIN_API process(ProcessData &data) override
the VST3 audio processing function
Definition: vst3plugin.cpp:946
static CString getPluginType()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1500
virtual tresult PLUGIN_API getMidiControllerAssignment(int32 busIndex, int16 channel, CtrlNumber midiControllerNumber, ParamID &id) override
The client queries this 129 times for 130 possible control messages, see ivstsmidicontrollers....
Definition: vst3plugin.cpp:1110
static const char * getVendorURL()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1468
tresult PLUGIN_API canProcessSampleSize(int32 symbolicSampleSize) override
Client queries us for our supported sample lengths.
Definition: vst3plugin.cpp:566
VST3Plugin()
object constructor: because of class factory, do NOT use this for init; use initialize() instead
Definition: vst3plugin.cpp:36
tresult PLUGIN_API setBusArrangements(SpeakerArrangement *inputs, int32 numIns, SpeakerArrangement *outputs, int32 numOuts) override
Client queries us for our supported Busses; this is where you can modify to support mono,...
Definition: vst3plugin.cpp:420
static const char * getVendorEmail()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1484
tresult PLUGIN_API terminate() override
object destroyer
Definition: vst3plugin.cpp:369
bool issueMIDICCProxyMessage(ParamID proxyParamID, ParamValue proxyParamValue)
Find and issue Control Changes.
Definition: vst3plugin.cpp:783
static FUID * getFUID()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1416
bool doControlUpdate(ProcessData &data)
Find and issue Control Changes.
Definition: vst3plugin.cpp:831
unsigned int sampleAccuracy
sample accurate parameter automation
Definition: vst3plugin.h:205
void updateMeters(ProcessData &data, bool forceOff=false)
update the outbound VST3 parameters that correspond to plugin meter variables
Definition: vst3plugin.cpp:1071
uint32 m_uLatencyInSamples
set in constructor with plugin
Definition: vst3plugin.h:165
virtual tresult receiveText(const char8 *text) override
VST3 messaging system - not used in ASPiK but here if you want to play with messaging.
Definition: vst3plugin.cpp:1195
Little update handler object for VST-approved GUI updating.
Definition: vst3plugin.h:919
The VSTMIDIEventQueue interface queues incoming MIDI messages and blasts them out during the buffer p...
Definition: vst3plugin.h:748
virtual bool fireMidiEvents(unsigned int sampleOffset)
Definition: vst3plugin.h:786
PluginCore * pluginCore
the core object
Definition: vst3plugin.h:900
void setEventList(IEventList *_inputEvents)
Definition: vst3plugin.h:770
virtual unsigned int getEventCount()
Definition: vst3plugin.h:777
unsigned int currentEventIndex
index of current event
Definition: vst3plugin.h:902
IEventList * inputEvents
the current event list for this buffer cycle
Definition: vst3plugin.h:901
The VSTParamUpdateQueue object maintains a parameter update queue for one ASPiK PluginParameter objec...
Definition: vst3plugin.h:314
VSTParamUpdateQueue(void)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1521
ParamValue interpolate(int x1, int x2, ParamValue y1, ParamValue y2, int x)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1657
int needsUpdate(int x, ParamValue &value)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1678
void initialize(ParamValue _initialValue, ParamValue _minValue, ParamValue _maxValue, unsigned int *_sampleAccuracy)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1548
void setSlope()
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1589
bool getValueAtOffset(long int _sampleOffset, double _previousValue, double &_nextValue)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1739
bool getNextValue(double &_nextValue)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1764
unsigned int getParameterIndex()
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1723
void setParamValueQueue(IParamValueQueue *_paramValueQueue, unsigned int _bufferSize)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1569
The ControlUpdateReceiver object is the connection mechanism between PluginParameter objects and thei...
Definition: plugingui.h:90
int32_t getControlID()
Definition: plugingui.h:321
void updateControlsWithNormalizedValue(float normalizedValue, CControl *control=nullptr)
Definition: plugingui.h:212
The PluginGUI object that maintains the entire GUI operation and has #defines to use with AAX,...
Definition: plugingui.h:441
bool showGUIEditor
show the GUI designer
Definition: plugingui.h:540
base class interface file for ASPiK plugincore object
interface file for ASPiK GUI object
Information that defines a single GUI parameter's possible values and ID.
Definition: pluginstructures.h:332
double actualValue
actual value
Definition: pluginstructures.h:353
uint32_t controlID
ID value.
Definition: pluginstructures.h:352
Information about a GUI update message; this is for sending GUI control information from the plugin c...
Definition: pluginstructures.h:444
std::vector< GUIParameter > guiParameters
list of updates
Definition: pluginstructures.h:461
Information from the host that is updated on each buffer process cycle; includes BPM,...
Definition: pluginstructures.h:974
Definition: pluginstructures.h:486
Information that includes the message code as well as the message data.
Definition: pluginstructures.h:706
void * inMessageData
incoming message data (interpretation depends on message)
Definition: pluginstructures.h:733
std::string inMessageString
incoming message data as a std::string (interpretation depends on message)
Definition: pluginstructures.h:736
Information about a MIDI event.
Definition: pluginstructures.h:562
uint32_t midiData1
BYTE data 1 as UINT.
Definition: pluginstructures.h:643
uint32_t midiMessage
BYTE message as UINT.
Definition: pluginstructures.h:641