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 28 extern void* hInstance;
40 class VSTParamUpdateQueue;
43 class VSTMIDIEventQueue;
51 const ParamID baseCCParamID = 1000;
52 const ParamID baseCCParamIDEnd = 1129;
55 const unsigned char CONTROL_CHANGE = 0xB0;
56 const unsigned char CHANNEL_PRESSURE = 0xD0;
57 const unsigned char PITCH_BEND = 0xE0;
70 class 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 222 char* getMyDLLDirectory(UString cPluginName)
224 HMODULE hmodule = GetModuleHandle(cPluginName);
227 memset(&dir[0], 0, MAX_PATH*
sizeof(TCHAR));
228 dir[MAX_PATH-1] =
'\0';
231 GetModuleFileName(hmodule, &dir[0], MAX_PATH);
236 UString DLLPath(&dir[0], MAX_PATH);
238 char* pFullPath =
new char[MAX_PATH];
239 char* pDLLRoot =
new char[MAX_PATH];
241 DLLPath.toAscii(pFullPath, MAX_PATH);
243 size_t nLenDir = strlen(pFullPath);
244 size_t nLenDLL = wcslen(cPluginName) + 1;
245 memcpy(pDLLRoot, pFullPath, nLenDir-nLenDLL);
246 pDLLRoot[nLenDir-nLenDLL] =
'\0';
258 char* getMyComponentDirectory(CFStringRef bundleID)
260 if (bundleID !=
nullptr)
262 CFBundleRef helixBundle = CFBundleGetBundleWithIdentifier( bundleID );
263 if(helixBundle !=
nullptr)
265 CFURLRef bundleURL = CFBundleCopyBundleURL ( helixBundle );
266 if(bundleURL !=
nullptr)
268 CFURLRef componentFolderPathURL = CFURLCreateCopyDeletingLastPathComponent(
nullptr, bundleURL);
270 CFStringRef myComponentPath = CFURLCopyFileSystemPath(componentFolderPathURL, kCFURLPOSIXPathStyle);
271 CFRelease(componentFolderPathURL);
273 if(myComponentPath !=
nullptr)
275 int nSize = CFStringGetLength(myComponentPath);
276 char* path =
new char[nSize+1];
277 memset(path, 0, (nSize+1)*
sizeof(
char));
279 bool success = CFStringGetCString(myComponentPath, path, nSize+1, kCFStringEncodingASCII);
280 CFRelease(myComponentPath);
282 if(success)
return path;
285 CFRelease(bundleURL);
312 unsigned int bufferSize = 0;
313 ParamValue initialValue = 0.0;
314 ParamValue previousValue = 0.0;
315 ParamValue maxValue = 0.0;
316 ParamValue minValue = 0.0;
320 ParamValue yIntercept;
323 unsigned int* sampleAccuracy =
nullptr;
326 IParamValueQueue* parameterQueue =
nullptr;
329 bool dirtyBit =
false;
330 int sampleOffset = 0;
335 void initialize(ParamValue _initialValue, ParamValue _minValue, ParamValue _maxValue,
unsigned int* _sampleAccuracy);
336 void setParamValueQueue(IParamValueQueue* _paramValueQueue,
unsigned int _bufferSize);
338 ParamValue
interpolate(
int x1,
int x2, ParamValue y1, ParamValue y2,
int x);
343 bool getValueAtOffset(
long int _sampleOffset,
double _previousValue,
double& _nextValue);
380 switch(hostMessageInfo.hostMessage)
386 for(
unsigned int i = 0; i < guiUpdateData.
guiParameters.size(); i++)
397 for (
unsigned int i = 0; i < guiUpdateData.
guiParameters.size(); i++)
505 for (customViewControllerMap::const_iterator it = customViewMap.begin(), end = customViewMap.end(); it != end; ++it)
512 virtual void parameterChanged(int32_t controlID,
double actualValue,
double normalizedValue)
532 if(!param)
return 0.0;
534 return param->getNormalized();
543 if (!param)
return 0.0;
546 double normalizedValue = param->getNormalized();
547 return param->toPlain(normalizedValue);
569 MessageInfo info(PLUGINGUI_REGISTER_SUBCONTROLLER);
587 MessageInfo info(PLUGINGUI_DE_REGISTER_SUBCONTROLLER);
604 customViewControllerMap::const_iterator it = customViewMap.find(customViewName);
605 if (it != customViewMap.end())
613 customViewMap.insert(std::make_pair(customViewName, pCVC));
635 MessageInfo info(PLUGINGUI_DE_REGISTER_CUSTOMVIEW);
659 for (customViewControllerMap::const_iterator it = customViewMap.begin(), end = customViewMap.end(); it != end; ++it)
661 it->second->clearCustomViewPtr();
665 it->second->clearCustomViewPtr();
703 for (customViewControllerMap::const_iterator it = customViewMap.begin(), end = customViewMap.end(); it != end; ++it)
705 if (it->second->getCustomViewPtr() == customViewConnector)
719 if (it->second->getCustomViewPtr() == customViewConnector)
755 void clearMIDIProxyEvents()
757 proxyMIDIEvents.clear();
762 proxyMIDIEvents.push_back(event);
786 uint32_t count = proxyMIDIEvents.size();
787 for (uint32_t i = 0; i < count; i++)
797 bool eventOccurred =
false;
798 bool haveEvents =
false;
804 const unsigned char MIDI_NOTE_OFF = 0x80;
805 const unsigned char MIDI_NOTE_ON = 0x90;
806 const unsigned char MIDI_POLY_PRESSURE = 0xA0;
812 if (e.sampleOffset != sampleOffset)
819 case Event::kNoteOnEvent:
823 event.midiChannel = (
unsigned int)e.noteOn.channel;
824 event.
midiData1 = (
unsigned int)e.noteOn.pitch;
825 event.midiData2 = (
unsigned int)(127.0*e.noteOn.velocity);
826 event.midiSampleOffset = e.sampleOffset;
827 eventOccurred =
true;
836 case Event::kNoteOffEvent:
841 event.midiChannel = (
unsigned int)e.noteOff.channel;
842 event.
midiData1 = (
unsigned int)e.noteOff.pitch;
843 event.midiData2 = (
unsigned int)(127.0*e.noteOff.velocity);
844 event.midiSampleOffset = e.sampleOffset;
845 eventOccurred =
true;
855 case Event::kPolyPressureEvent:
858 event.
midiMessage = (
unsigned int)MIDI_POLY_PRESSURE;
859 event.midiChannel = (
unsigned int)e.polyPressure.channel;
860 event.
midiData1 = (
unsigned int)e.polyPressure.pitch;
861 event.midiData2 = (
unsigned int)(127.0*e.polyPressure.pressure);
862 event.midiSampleOffset = e.sampleOffset;
863 eventOccurred =
true;
876 if (e.sampleOffset == sampleOffset)
892 return eventOccurred;
899 std::vector<midiEvent> proxyMIDIEvents;
920 virtual void PLUGIN_API update (FUnknown* changedUnknown, int32 message)
922 if(message == IDependent::kChanged && receiver && editController)
924 double normalizedValue = editController->getParamNormalized (receiver->
getControlID());
955 typedef std::map<int32_t, VST3UpdateHandler*> UpdaterHandlerMap;
956 UpdaterHandlerMap updateHandlers;
959 IPlugFrame* plugFrame;
960 const ViewRect& getRect()
const {
return rect; }
961 void setRect(
const ViewRect& r) { rect = r; }
962 bool isAttached()
const {
return systemWindow != 0; }
963 virtual void attachedToParent()
override {}
964 virtual void removedFromParent()
override {}
966 virtual tresult PLUGIN_API
attached(
void* parent, FIDString type)
override;
967 virtual tresult PLUGIN_API
removed()
override;
968 virtual tresult PLUGIN_API onWheel(
float distance)
override {
return kResultFalse; }
971 virtual tresult PLUGIN_API
onSize(ViewRect* newSize)
override;
972 virtual tresult PLUGIN_API
getSize(ViewRect* size)
override;
974 virtual tresult PLUGIN_API onFocus(TBool )
override {
return kResultFalse; }
975 virtual tresult PLUGIN_API
setFrame(IPlugFrame* frame)
override;
976 virtual tresult PLUGIN_API canResize()
override{
return kResultFalse ; }
977 virtual tresult PLUGIN_API checkSizeConstraint(ViewRect* rect)
override 983 ViewRect viewRect = getRect();
984 rect->right = viewRect.right;
985 rect->bottom = viewRect.bottom;
990 virtual bool setWindowFrameSize(
double left = 0,
double top = 0,
double right = 0,
double bottom = 0) override
992 ViewRect vr(0, 0, right, bottom);
995 plugFrame->resizeView(
this, &vr);
1001 ViewRect viewRect = getRect();
1004 right = viewRect.getWidth();
1005 bottom = viewRect.getHeight();
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:654
Information that includes the message code as well as the message data.
Definition: pluginstructures.h:705
static const char * getPluginName()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1343
unsigned int sampleAccuracy
sample accurate parameter automation
Definition: vst3plugin.h:205
bool doControlUpdate(ProcessData &data)
Find and issue Control Changes.
Definition: vst3plugin.cpp:746
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:378
void setEventList(IEventList *_inputEvents)
Definition: vst3plugin.h:766
tresult PLUGIN_API canProcessSampleSize(int32 symbolicSampleSize) override
Client queries us for our supported sample lengths.
Definition: vst3plugin.cpp:481
The PluginGUI object that maintains the entire GUI operation and has #defines to use with AAX...
Definition: plugingui.h:434
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:555
bool getValueAtOffset(long int _sampleOffset, double _previousValue, double &_nextValue)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1645
Interface for VST3 parameter value update queue (sample accurate automation)
Definition: pluginstructures.h:1649
The GUIPluginConnector interface creates a safe message mechanism for the GUI to issue requests to th...
Definition: vst3plugin.h:488
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:1892
CustomViewController(ICustomView *_customViewIF)
Definition: vst3plugin.h:430
The VSTMIDIEventQueue interface queues incoming MIDI messages and blasts them out during the buffer p...
Definition: vst3plugin.h:743
virtual bool processMIDIEvent(midiEvent &event)
process a MIDI event
Definition: plugincore.cpp:606
uint32_t midiData1
BYTE data 1 as UINT.
Definition: pluginstructures.h:643
IPlugView *PLUGIN_API createView(const char *_name) override
creates the custom GUI view
Definition: vst3plugin.cpp:1054
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:1127
interface file for ASPiK GUI object
void updateHostInfo(ProcessData &data, HostInfo *hostInfo)
update the incoming host data for the plugin core
Definition: vst3plugin.cpp:832
VST3Plugin * editController
parent VST3
Definition: vst3plugin.h:1013
virtual bool guiTimerPing()
Definition: vst3plugin.h:673
uint32_t controlID
ID value.
Definition: pluginstructures.h:352
PluginCore * pluginCore
the core
Definition: vst3plugin.h:1010
The VST3Plugin object is the ASPiK plugin shell for the VST3 API.
Definition: vst3plugin.h:70
bool showGUIEditor
show the GUI designer
Definition: plugingui.h:534
virtual bool processMessage(MessageInfo &messageInfo)
For Custom View and Custom Sub-Controller Operations.
Definition: plugincore.cpp:546
tresult PLUGIN_API terminate() override
object destroyer
Definition: vst3plugin.cpp:362
virtual double getNormalizedPluginParameter(int32_t controlID)
Definition: vst3plugin.h:527
VST3Plugin * editController
our parent plugin
Definition: vst3plugin.h:408
GUIPluginConnector * guiPluginConnector
GUI Plugin interface.
Definition: vst3plugin.h:1011
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:592
void updateControlsWithNormalizedValue(float normalizedValue, CControl *control=nullptr)
Definition: plugingui.h:212
virtual ~PluginEditor()
ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface...
Definition: vst3plugin.cpp:1715
uint32 m_uLatencyInSamples
set in constructor with plugin
Definition: vst3plugin.h:165
virtual uint32 PLUGIN_API getTailSamples() override
Returns the tail-time in samples.
Definition: vst3plugin.cpp:528
int needsUpdate(int x, ParamValue &value)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1584
const ICustomView * getCustomViewPtr()
Definition: vst3plugin.h:458
uint32_t midiMessage
BYTE message as UINT.
Definition: pluginstructures.h:641
virtual void updateView()
Definition: vst3plugin.h:434
unsigned int currentEventIndex
index of current event
Definition: vst3plugin.h:898
IEventList * inputEvents
the current event list for this buffer cycle
Definition: vst3plugin.h:897
virtual bool registerCustomView(std::string customViewName, ICustomView *customViewConnector)
Definition: vst3plugin.h:599
CustomViewController * getCustomSubController(ICustomView *customViewConnector)
Definition: vst3plugin.h:715
CustomViewController * getCustomViewController(ICustomView *customViewConnector)
Definition: vst3plugin.h:701
Information about a GUI update message; this is for sending GUI control information from the plugin c...
Definition: pluginstructures.h:443
PluginHostConnector * pluginHostConnector
Plugin Host interface.
Definition: vst3plugin.h:1012
std::map< std::string, CustomViewController * > customViewControllerMap
map of custom view controllers
Definition: vst3plugin.h:697
Custom interface so that GUI can pass information to plugin shell in a thread-safe manner...
Definition: pluginstructures.h:1539
The CustomViewController is part of the safe ICustomView feature in ASPiK. The CustomViewController m...
Definition: vst3plugin.h:426
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:1102
static const char * getVendorURL()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1375
GUIPluginConnector(PluginCore *_pluginCore, VST3Plugin *_editController)
Definition: vst3plugin.h:492
VSTParamUpdateQueue(void)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1428
virtual bool fireMidiEvents(unsigned int sampleOffset)
Definition: vst3plugin.h:782
virtual bool deRegisterCustomView(ICustomView *customViewConnector)
Definition: vst3plugin.h:627
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:1929
Custom View interface to allow plugin core to create safe communication channels with GUI custom view...
Definition: pluginstructures.h:1461
VST3Plugin()
object constructor: because of class factory, do NOT use this for init; use initialize() instead ...
Definition: vst3plugin.cpp:36
virtual bool guiWillClose()
Definition: vst3plugin.h:655
virtual void pushDataValue(double data)
Definition: vst3plugin.h:441
Definition: pluginstructures.h:485
virtual ~GUIPluginConnector()
Definition: vst3plugin.h:499
Double buffered queue for MIDI messages.
Definition: pluginstructures.h:1627
virtual bool guiParameterChanged(int32_t controlID, double actualValue)
has nothing to do with actual variable or updated variable (binding)
Definition: plugincore.cpp:517
virtual void parameterChanged(int32_t controlID, double actualValue, double normalizedValue)
Definition: vst3plugin.h:512
The GUIPluginConnector interface creates a safe message mechanism for the GUI to issue requests to th...
Definition: AAXPluginParameters.h:599
virtual double getActualPluginParameter(int32_t controlID)
Definition: vst3plugin.h:538
The VST GUI for the plugin. This is needed because VST3 requires an IPlugView GUI, which is VST3 specific (involves VST3 SDK files)
Definition: vst3plugin.h:947
VST3Plugin * editController
the VST3
Definition: vst3plugin.h:693
virtual uint32 PLUGIN_API getLatencySamples() override
Definition: vst3plugin.h:168
void initialize(ParamValue _initialValue, ParamValue _minValue, ParamValue _maxValue, unsigned int *_sampleAccuracy)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1454
virtual tresult PLUGIN_API getProgramName(ProgramListID listId, int32 programIndex, String128 name) override
Get preset name.
Definition: vst3plugin.cpp:1255
bool issueMIDICCProxyMessage(ParamID proxyParamID, ParamValue proxyParamValue)
Find and issue Control Changes.
Definition: vst3plugin.cpp:698
void setParamValueQueue(IParamValueQueue *_paramValueQueue, unsigned int _bufferSize)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1475
virtual bool setWindowFrameSize(double left=0, double top=0, double right=0, double bottom=0) override
Definition: vst3plugin.h:990
virtual bool deRregisterSubcontroller(ICustomView *customViewConnector)
Definition: vst3plugin.h:580
virtual void sendMessage(void *data)
Definition: vst3plugin.h:448
static FUID * getFUID()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1323
The ControlUpdateReceiver object is the connection mechanism between PluginParameter objects and thei...
Definition: plugingui.h:89
void * inMessageData
incoming message data (interpretation depends on message)
Definition: pluginstructures.h:733
tresult PLUGIN_API setParamNormalizedFromFile(ParamID tag, ParamValue value)
helper function for setComponentState()
Definition: vst3plugin.cpp:1173
PluginCore * pluginCore
the core object
Definition: vst3plugin.h:692
std::vector< GUIParameter > guiParameters
list of updates
Definition: pluginstructures.h:461
tresult PLUGIN_API setupProcessing(ProcessSetup &newSetup) override
we get information about sample rate, bit-depth, etc...
Definition: vst3plugin.cpp:502
static CString getPluginType()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1407
static const char * getVendorEmail()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1391
PluginEditor(VSTGUI::UTF8StringPtr _xmlFile, PluginCore *_pluginCore, GUIPluginConnector *_guiPluginConnector, PluginHostConnector *_pluginHostConnector, VST3Plugin *editController)
ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface...
Definition: vst3plugin.cpp:1694
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:1951
tresult PLUGIN_API initialize(FUnknown *context) override
object initializer
Definition: vst3plugin.cpp:82
virtual unsigned int getEventCount()
Definition: vst3plugin.h:773
Definition: channelformats.h:32
The PluginHostConnector implements the IPluginHostConnector interface for the plugin shell object...
Definition: vst3plugin.h:367
void setCustomViewPtr(ICustomView *_customViewIF)
Definition: vst3plugin.h:455
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.h for the VST defines for kPitchBend, kCtrlModWheel, etc... for each MIDI Channel in our Event Bus.
Definition: vst3plugin.cpp:1017
The PluginCore object is the default PluginBase derived object for ASPiK projects. Note that you are fre to change the name of this object (as long as you change it in the compiler settings, etc...)
Definition: plugincore.h:43
void setSlope()
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1495
virtual bool getWindowFrameSize(double &left, double &top, double &right, double &bottom) override
Definition: vst3plugin.h:999
virtual void sendMessage(void *data)
Definition: pluginstructures.h:1482
void clearCustomViewPtr()
Definition: vst3plugin.h:461
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:1847
Information that defines a single GUI parameter's possible values and ID.
Definition: pluginstructures.h:331
virtual bool registerSubcontroller(std::string subcontrollerName, ICustomView *customViewConnector)
Definition: vst3plugin.h:552
~VST3Plugin()
object destructor: because of class factory, do NOT use this for destruction; use terminate() instead...
Definition: vst3plugin.cpp:63
tresult PLUGIN_API process(ProcessData &data) override
the VST3 audio processing function
Definition: vst3plugin.cpp:861
Custom interface to allow resizing of GUI window; this is mainly used for the GUI designer...
Definition: pluginstructures.h:1496
base class interface file for ASPiK plugincore object
double actualValue
actual value
Definition: pluginstructures.h:353
Information from the host that is updated on each buffer process cycle; includes BPM, time signature, SMPTE and other data. The values in the stock structure are consistent across most APIs, however others may be added (commnted out here)
Definition: pluginstructures.h:973
ParamValue interpolate(int x1, int x2, ParamValue y1, ParamValue y2, int x)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1563
customViewControllerMap customSubControllerMap
map of custom sub-controllers
Definition: vst3plugin.h:712
virtual bool checkNonBoundValueChange(int tag, float normalizedValue)
Definition: vst3plugin.h:681
virtual void updateView()=0
static FUnknown * createInstance(void *context)
Definition: vst3plugin.h:154
std::string inMessageString
incoming message data as a std::string (interpretation depends on message)
Definition: pluginstructures.h:736
Custom interface to send the plugin shell a message from plugin core.
Definition: pluginstructures.h:1609
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:1200
The PluginHostConnector implements the IPluginHostConnector interface for the plugin shell object...
Definition: AAXPluginParameters.h:479
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:1748
void updateMeters(ProcessData &data, bool forceOff=false)
update the outbound VST3 parameters that correspond to plugin meter variables
Definition: vst3plugin.cpp:978
VSTParamUpdateQueue ** m_pParamUpdateQueueArray
sample accurate parameter automation
Definition: vst3plugin.h:204
static const char * getVendorName()
static function for VST3 clsss factory
Definition: vst3plugin.cpp:1359
Little update handler object for VST-approved GUI updating.
Definition: vst3plugin.h:914
bool getNextValue(double &_nextValue)
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1670
bool enableSAAVST3
sample accurate parameter automation
Definition: vst3plugin.h:206
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:1731
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:413
PluginCore * pluginCore
the core object
Definition: vst3plugin.h:896
The VSTParamUpdateQueue object maintains a parameter update queue for one ASPiK PluginParameter objec...
Definition: vst3plugin.h:309
virtual void PLUGIN_API update(FUnknown *changedUnknown, int32 message) override
Toggle preset.
Definition: vst3plugin.cpp:1284
int32_t getControlID()
Definition: plugingui.h:321
virtual void pushDataValue(double data)
Definition: pluginstructures.h:1472
Information about a MIDI event.
Definition: pluginstructures.h:561
unsigned int getParameterIndex()
ASPiK support for sample accurate auatomation.
Definition: vst3plugin.cpp:1629
virtual bool guiDidOpen()
Definition: vst3plugin.h:647