#ifndef __interpolvst__ #define __interpolvst__ #ifndef __audioeffectx__ #include "audioeffectx.h" #endif #ifdef WIN32 #include #endif typedef struct { unsigned char index; float value; } pchange; enum { // Parameters Tags ACTIVE = 0, TARGETVEL, TTDEC, TTACC, WETDRY, FORCER, QUANTTIME, NUMPARAMS }; class interpolvst : public AudioEffectX { public: interpolvst (audioMasterCallback audioMaster); ~interpolvst (); virtual void process (float **inputs, float **outputs, long sampleframes); virtual void processReplacing (float **inputs, float **outputs, long sampleFrames); virtual void setProgramName (char *name); virtual void getProgramName (char *name); virtual void suspend (); virtual void resume (); virtual void setParameter (long index, float value); virtual float getParameter (long index); virtual void getParameterLabel (long index, char *label); virtual void getParameterDisplay (long index, char *text); virtual void getParameterName (long index, char *text); virtual long processEvents (VstEvents* events); virtual bool getEffectName (char* name); virtual bool getVendorString (char* text); virtual bool getProductString (char* text); virtual long getVendorVersion () { return vendversion; }; virtual VstPlugCategory getPlugCategory () { return kPlugCategEffect; } protected: long vendversion; void noteon (long note, long velocity, long delta); void noteoff (long note, long delta); void getsampleat (double inrcursor, float *inbuffer, float *pout); void fnote (char *str); float fttdec, fttacc, ftargetvel, fwetdry; float rttdec, rttacc, rtargetvel, rwetdry; double ttdec_sam, ttacc_sam; double curvel; int isactive, prevactive, hittarget; int accsamrem; int isforcer; int isquanttime; double decaccel, accaccel; float *lbuffer; float *rbuffer; long bufsize; long wcursor; double rcursor; long iwcursor; double ircursor; char programName[32]; char strbuf[256]; struct VstTimeInfo *vti; pchange *actionlist; }; #endif