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