#include #define MAX_IO 4 #define MAX_DIRTY_PARAMS 256 #define DEFAULT_PARAM_COUNT 10 #define VST_VERSION 2 #define MAX_EVENTS_PER_BLOCK 32 #define MAX_POOL_EVENTS 2048 #define MAX_INS 32 #define MAX_OUTS 32 typedef struct Vst32Events // a block of events for the current audio block { long numEvents; long reserved; // zero VstEvent* events[MAX_EVENTS_PER_BLOCK]; // variable } Vst32Events; typedef struct _vist { t_pxobject x_obj; struct _vist *x_next; AEffect *x_eff; t_symbol *x_plugname; short x_resnum; long x_numins; long x_numouts; long x_canreplace; long x_mix; float *x_ins[MAX_INS]; float *x_outs[MAX_OUTS]; t_symbol **x_paramdict; void *x_pout; // parameter out (index value) when changed void *x_nameout; // list of parameter names t_wind *x_wind; ControlHandle x_pgmmenu; CFragConnectionID x_conn; void *x_qelem; // for redrawing default window in response to list Boolean *x_pdirty; t_vstplug *x_plug; long x_firstone; // the first plugparam index you got to use (1-relative) long x_numvparams; // number of plug-in parameters you have long x_vs; // save vs in object for relaying to on-the-fly-loaded plug float x_sr; // save sr in object for relaying to on-the-fly-loaded plug Boolean x_bogus; Boolean x_needidle; // call idle function even if window isn't open Boolean x_wantevents; // wants events FSSpec x_spec; VstTimeInfo x_timeinfo; double x_samplecount; void *x_idleqelem; Vst32Events x_eventlist; // passed to plug-in void *x_clock; long x_evcount; VstMidiEvent *x_evptr; void *x_midiout; // send MIDI events received from plug-in out this outlet short x_orf; // resource file before plug-in was opened long x_sigins; // number of signal inputs in MSP long x_sigouts; // number of signal outputs in MSP Boolean x_usingzerobuf; // does instance use the zerobuffer (if so, clear it) long x_disabled; long x_debug; } t_vst;