VST2SDK
A recreation of the popular Steinberg VST 2.x SDK.
Loading...
Searching...
No Matches
vst.h File Reference
#include <inttypes.h>

Go to the source code of this file.

Data Structures

struct  vst_rect_t
 Window/Editor Rectangle. More...
 
struct  vst_parameter_properties_t
 Information about a parameter. More...
 
struct  vst_speaker_properties_t
 
struct  vst_speaker_arrangement_t
 
struct  vst_stream_properties_t
 
struct  vst_host_supports_t
 Plug-in to Host support checks. More...
 
struct  vst_effect_supports_t
 Host to Plug-in support checks. More...
 
struct  vst_effect_t
 Plug-in Effect definition. More...
 

Macros

#define VST2SDK_VST_H
 
#define VST_FUNCTION_INTERFACE   __cdecl
 Standard calling convention across plug-ins and hosts.
 
#define VST_MAX_CHANNELS   32
 Maximum number of channels/streams/inputs/outputs supported by VST 2.x.
 
#define VST_FOURCC(a, b, c, d)   ((((uint32_t)a) << 24) | (((uint32_t)b) << 16) | (((uint32_t)c) << 8) | (((uint32_t)d) << 0))
 Convert four numbers into a FourCC.
 
#define VST_MAGICNUMBER   VST_FOURCC('V', 's', 't', 'P')
 Magic Number identifying a VST 2.x plug-in structure.
 
#define VST_DEFAULT_SAMPLE_RATE   44100.0f
 Default VST 2.x Sample Rate All VST 2.x hosts expect you to initialize your plug-in to these default values.
 
#define VST_DEFAULT_BLOCK_SIZE   1024
 Default VST 2.x Block Size All VST 2.x hosts expect you to initialize your plug-in to these default values.
 
#define VST_ENTRYPOINT    vst_effect_t* VSTPluginMain(vst_host_callback_t callback)
 VST 2.x Entry Point for all platforms.
 
#define VST_ENTRYPOINT_WINDOWS    vst_effect_t* MAIN(vst_host_callback_t callback) { return VSTPluginMain(callback); }
 [DEPRECATED] VST 1.x Entry Point for Windows
 
#define VST_ENTRYPOINT_MACOS    vst_effect_t* main_macho(vst_host_callback_t callback) { return VSTPluginMain(callback); }
 [DEPRECATED] VST 1.x Entry Point for MacOS
 
#define VST_ENTRYPOINT_MACOS_POWERPC    vst_effect_t* main(vst_host_callback_t callback) { return VSTPluginMain(callback); }
 [DEPRECATED] VST 2.3 Entry Point for PowerPC
 

Typedefs

typedef intptr_t(VST_FUNCTION_INTERFACEvst_host_callback_t) (struct vst_effect_t *plugin, int32_t opcode, int32_t p_int1, int64_t p_int2, const char *p_str, float p_float)
 Plug-in to Host callback.
 
typedef intptr_t(VST_FUNCTION_INTERFACEvst_effect_control_t) (struct vst_effect_t *self, int32_t opcode, int32_t p_int1, intptr_t p_int2, void *p_ptr, float p_float)
 Control the VST through an opcode and up to four parameters.
 
typedef void(VST_FUNCTION_INTERFACEvst_effect_process_t) (struct vst_effect_t *self, const float *const *inputs, float **outputs, int32_t samples)
 Process the given number of samples in inputs and outputs.
 
typedef void(VST_FUNCTION_INTERFACEvst_effect_set_parameter_t) (struct vst_effect_t *self, uint32_t index, float value)
 Updates the value for the parameter at the given index, or does nothing if out of bounds.
 
typedef float(VST_FUNCTION_INTERFACEvst_effect_get_parameter_t) (struct vst_effect_t *self, uint32_t index)
 Retrieve the current value of the parameter at the given index, or do nothing if out of bounds.
 
typedef void(VST_FUNCTION_INTERFACEvst_effect_process_float_t) (struct vst_effect_t *self, const float *const *inputs, float **outputs, int32_t samples)
 Process the given number of single samples in inputs and outputs.
 
typedef void(VST_FUNCTION_INTERFACEvst_effect_process_double_t) (struct vst_effect_t *self, const double *const *inputs, double **outputs, int32_t samples)
 Process the given number of double samples in inputs and outputs.
 

Enumerations

enum  VST_STATUS {
  VST_STATUS_0 = 0 , VST_STATUS_FALSE = 0 , VST_STATUS_ERROR = 0 , VST_STATUS_UNKNOWN = 0 ,
  VST_STATUS_1 = 1 , VST_STATUS_TRUE = 1 , VST_STATUS_SUCCESS = 1 , VST_STATUS_YES = 1 ,
  VST_STATUS_m1 = -1 , VST_STATUS_NO = -1 , _VST_STATUS_PAD = 0xFFFFFFFFul
}
 Known Status Codes. More...
 
enum  VST_BUFFER_SIZE {
  VST_BUFFER_SIZE_PARAM_LABEL = 8 , VST_BUFFER_SIZE_PARAM_NAME = 8 , VST_BUFFER_SIZE_PARAM_VALUE = 8 , VST_BUFFER_SIZE_STREAM_LABEL = 8 ,
  VST_BUFFER_SIZE_CATEGORY_LABEL = 24 , VST_BUFFER_SIZE_PROGRAM_NAME = 24 , VST_BUFFER_SIZE_EFFECT_NAME = 32 , VST_BUFFER_SIZE_PARAM_LONG_NAME = 64 ,
  VST_BUFFER_SIZE_PRODUCT_NAME = 64 , VST_BUFFER_SIZE_SPEAKER_NAME = 64 , VST_BUFFER_SIZE_STREAM_NAME = 64 , VST_BUFFER_SIZE_VENDOR_NAME = 64
}
 Known Buffer Sizes. More...
 
enum  VST_VERSION {
  VST_VERSION_1 = 0 , VST_VERSION_1_0_0_0 = 1000 , VST_VERSION_1_1_0_0 = 1100 , VST_VERSION_2 = 2 ,
  VST_VERSION_2_0_0_0 = 2000 , VST_VERSION_2_1_0_0 = 2100 , VST_VERSION_2_2_0_0 = 2200 , VST_VERSION_2_3_0_0 = 2300 ,
  VST_VERSION_2_4_0_0 = 2400 , _VST_VERSION_PAD = 0xFFFFFFFFul
}
 Valid VST 1.x and 2.x versions The format is either a single digit or four digits in Base10 format. More...
 
enum  VST_PARAMETER_FLAG {
  VST_PARAMETER_FLAG_1ls0 = 1 << 0 , VST_PARAMETER_FLAG_SWITCH = 1 , VST_PARAMETER_FLAG_1ls1 = 1 << 1 , VST_PARAMETER_FLAG_INTEGER_LIMITS = 1 << 1 ,
  VST_PARAMETER_FLAG_1ls2 = 1 << 2 , VST_PARAMETER_FLAG_STEP_FLOAT = 1 << 2 , VST_PARAMETER_FLAG_1ls3 = 1 << 3 , VST_PARAMETER_FLAG_STEP_INT = 1 << 3 ,
  VST_PARAMETER_FLAG_1ls4 = 1 << 4 , VST_PARAMETER_FLAG_INDEX = 1 << 4 , VST_PARAMETER_FLAG_1ls5 = 1 << 5 , VST_PARAMETER_FLAG_CATEGORY = 1 << 5 ,
  VST_PARAMETER_FLAG_1ls6 = 1 << 6 , VST_PARAMETER_FLAG_RAMPING = 1 << 6 , _VST_PARAMETER_FLAG_PAD = 0xFFFFFFFFul
}
 Flags for parameters. More...
 
enum  VST_SPEAKER_TYPE {
  VST_SPEAKER_TYPE_MONO = 0 , VST_SPEAKER_TYPE_LEFT = 1 , VST_SPEAKER_TYPE_RIGHT = 2 , VST_SPEAKER_TYPE_CENTER = 3 ,
  VST_SPEAKER_TYPE_LFE = 4 , VST_SPEAKER_TYPE_LEFT_REAR = 5 , VST_SPEAKER_TYPE_RIGHT_REAR = 6 , VST_SPEAKER_TYPE_LEFT_SIDE = 10 ,
  VST_SPEAKER_TYPE_RIGHT_SIDE = 11 , VST_SPEAKER_TYPE_USER_32 = -32 , VST_SPEAKER_TYPE_USER_31 , VST_SPEAKER_TYPE_USER_30 ,
  VST_SPEAKER_TYPE_USER_29 , VST_SPEAKER_TYPE_USER_28 , VST_SPEAKER_TYPE_USER_27 , VST_SPEAKER_TYPE_USER_26 ,
  VST_SPEAKER_TYPE_USER_25 , VST_SPEAKER_TYPE_USER_24 , VST_SPEAKER_TYPE_USER_23 , VST_SPEAKER_TYPE_USER_22 ,
  VST_SPEAKER_TYPE_USER_21 , VST_SPEAKER_TYPE_USER_20 , VST_SPEAKER_TYPE_USER_19 , VST_SPEAKER_TYPE_USER_18 ,
  VST_SPEAKER_TYPE_USER_17 , VST_SPEAKER_TYPE_USER_16 , VST_SPEAKER_TYPE_USER_15 , VST_SPEAKER_TYPE_USER_14 ,
  VST_SPEAKER_TYPE_USER_13 , VST_SPEAKER_TYPE_USER_12 , VST_SPEAKER_TYPE_USER_11 , VST_SPEAKER_TYPE_USER_10 ,
  VST_SPEAKER_TYPE_USER_09 , VST_SPEAKER_TYPE_USER_08 , VST_SPEAKER_TYPE_USER_07 , VST_SPEAKER_TYPE_USER_06 ,
  VST_SPEAKER_TYPE_USER_05 , VST_SPEAKER_TYPE_USER_04 , VST_SPEAKER_TYPE_USER_03 , VST_SPEAKER_TYPE_USER_02 ,
  VST_SPEAKER_TYPE_USER_01 , _VST_SPEAKER_TYPE_PAD = 0xFFFFFFFFul
}
 
enum  VST_SPEAKER_ARRANGEMENT_TYPE {
  VST_SPEAKER_ARRANGEMENT_TYPE_CUSTOM = -2 , VST_SPEAKER_ARRANGEMENT_TYPE_UNKNOWN = -1 , VST_SPEAKER_ARRANGEMENT_TYPE_MONO = 0x00 , VST_SPEAKER_ARRANGEMENT_TYPE_STEREO = 0x01 ,
  VST_SPEAKER_ARRANGEMENT_TYPE_4_0 = 0x0B , VST_SPEAKER_ARRANGEMENT_TYPE_5_0 = 0x0E , VST_SPEAKER_ARRANGEMENT_TYPE_5_1 = 0x0F , VST_SPEAKER_ARRANGEMENT_TYPE_7_1 = 0x17 ,
  _VST_SPEAKER_ARRANGEMENT_TYPE_PAD = 0xFFFFFFFFul
}
 
enum  VST_STREAM_FLAG {
  VST_STREAM_FLAG_1ls0 = 1 << 0 , VST_STREAM_FLAG_1ls1 = 1 << 1 , VST_STREAM_FLAG_STEREO = 1 << 1 , VST_STREAM_FLAG_1ls2 = 1 << 2 ,
  VST_STREAM_FLAG_USE_TYPE = 1 << 2
}
 
enum  VST_HOST_OPCODE {
  VST_HOST_OPCODE_00 = 0x00 , VST_HOST_OPCODE_AUTOMATE = 0x00 , VST_HOST_OPCODE_PARAM_UPDATE = 0x00 , VST_HOST_OPCODE_01 = 0x01 ,
  VST_HOST_OPCODE_VST_VERSION = 0x01 , VST_HOST_OPCODE_02 = 0x02 , VST_HOST_OPCODE_CURRENT_EFFECT_ID = 0x02 , VST_HOST_OPCODE_03 = 0x03 ,
  VST_HOST_OPCODE_KEEPALIVE_OR_IDLE = 0x03 , VST_HOST_OPCODE_04 = 0x04 , VST_HOST_OPCODE_05 = 0x05 , VST_HOST_OPCODE_06 = 0x06 ,
  VST_HOST_OPCODE_07 = 0x07 , VST_HOST_OPCODE_08 = 0x08 , VST_HOST_OPCODE_09 = 0x09 , VST_HOST_OPCODE_0A = 0x0A ,
  VST_HOST_OPCODE_0B = 0x0B , VST_HOST_OPCODE_0C = 0x0C , VST_HOST_OPCODE_0D = 0x0D , VST_HOST_OPCODE_0E = 0x0E ,
  VST_HOST_OPCODE_IO_MODIFIED = 0x0E , VST_HOST_OPCODE_0F = 0x0F , VST_HOST_OPCODE_10 = 0x10 , VST_HOST_OPCODE_11 = 0x11 ,
  VST_HOST_OPCODE_12 = 0x12 , VST_HOST_OPCODE_13 = 0x13 , VST_HOST_OPCODE_14 = 0x14 , VST_HOST_OPCODE_15 = 0x15 ,
  VST_HOST_OPCODE_16 = 0x16 , VST_HOST_OPCODE_17 = 0x17 , VST_HOST_OPCODE_18 = 0x18 , VST_HOST_OPCODE_19 = 0x19 ,
  VST_HOST_OPCODE_1A = 0x1A , VST_HOST_OPCODE_1B = 0x1B , VST_HOST_OPCODE_1C = 0x1C , VST_HOST_OPCODE_1D = 0x1D ,
  VST_HOST_OPCODE_1E = 0x1E , VST_HOST_OPCODE_1F = 0x1F , VST_HOST_OPCODE_20 = 0x20 , VST_HOST_OPCODE_21 = 0x21 ,
  VST_HOST_OPCODE_VENDOR_NAME = 0x21 , VST_HOST_OPCODE_22 = 0x22 , VST_HOST_OPCODE_PRODUCT_NAME = 0x22 , VST_HOST_OPCODE_23 = 0x23 ,
  VST_HOST_OPCODE_VENDOR_VERSION = 0x23 , VST_HOST_OPCODE_24 = 0x24 , VST_HOST_OPCODE_CUSTOM = 0x24 , VST_HOST_OPCODE_25 = 0x25 ,
  VST_HOST_OPCODE_26 = 0x26 , VST_HOST_OPCODE_SUPPORTS = 0x26 , VST_HOST_OPCODE_27 = 0x27 , VST_HOST_OPCODE_28 = 0x28 ,
  VST_HOST_OPCODE_29 = 0x29 , VST_HOST_OPCODE_2A = 0x2A , VST_HOST_OPCODE_EDITOR_UPDATE = 0x2A , VST_HOST_OPCODE_2B = 0x2B ,
  VST_HOST_OPCODE_PARAM_START_EDIT = 0x2B , VST_HOST_OPCODE_2C = 0x2C , VST_HOST_OPCODE_PARAM_STOP_EDIT = 0x2C , VST_HOST_OPCODE_2D = 0x2D ,
  VST_HOST_OPCODE_2E = 0x2E , VST_HOST_OPCODE_2F = 0x2F , VST_HOST_OPCODE_MAX , _VST_HOST_OPCODE_PAD = 0xFFFFFFFFul
}
 Plug-in to Host Op-Codes These Op-Codes are emitted by the plug-in and the host may handle them or return 0 (false). More...
 
enum  VST_EFFECT_CATEGORY {
  VST_EFFECT_CATEGORY_UNCATEGORIZED = 0x00 , VST_EFFECT_CATEGORY_01 = 0x01 , VST_EFFECT_CATEGORY_EFFECT = 0x01 , VST_EFFECT_CATEGORY_02 = 0x02 ,
  VST_EFFECT_CATEGORY_INSTRUMENT = 0x02 , VST_EFFECT_CATEGORY_03 = 0x03 , VST_EFFECT_CATEGORY_METERING = 0x03 , VST_EFFECT_CATEGORY_04 = 0x04 ,
  VST_EFFECT_CATEGORY_MASTERING = 0x04 , VST_EFFECT_CATEGORY_05 = 0x05 , VST_EFFECT_CATEGORY_SPATIAL = 0x05 , VST_EFFECT_CATEGORY_06 = 0x06 ,
  VST_EFFECT_CATEGORY_DELAY_OR_ECHO = 0x06 , VST_EFFECT_CATEGORY_07 = 0x07 , VST_EFFECT_CATEGORY_08 = 0x08 , VST_EFFECT_CATEGORY_RESTORATION = 0x08 ,
  VST_EFFECT_CATEGORY_09 = 0x09 , VST_EFFECT_CATEGORY_OFFLINE = 0x09 , VST_EFFECT_CATEGORY_0A = 0x0A , VST_EFFECT_CATEGORY_CONTAINER = 0x0A ,
  VST_EFFECT_CATEGORY_0B = 0x0B , VST_EFFECT_CATEGORY_WAVEGENERATOR = 0x0B , VST_EFFECT_CATEGORY_MAX , _VST_EFFECT_CATEGORY_PAD = 0xFFFFFFFFul
}
 Plug-in Categories Pre-defined category grouping that also affect host behavior when handling the plug-in. More...
 
enum  VST_EFFECT_FLAG {
  VST_EFFECT_FLAG_1ls0 = 1 << 0 , VST_EFFECT_FLAG_EDITOR = 1 << 0 , VST_EFFECT_FLAG_1ls4 = 1 << 4 , VST_EFFECT_FLAG_SUPPORTS_FLOAT = 1 << 4 ,
  VST_EFFECT_FLAG_1ls5 = 1 << 5 , VST_EFFECT_FLAG_CHUNKS = 1 << 5 , VST_EFFECT_FLAG_1ls8 = 1 << 8 , VST_EFFECT_FLAG_INSTRUMENT = 1 << 8 ,
  VST_EFFECT_FLAG_1ls9 = 1 << 9 , VST_EFFECT_FLAG_SILENT_TAIL = 1 << 9 , VST_EFFECT_FLAG_1ls12 = 1 << 12 , VST_EFFECT_FLAG_SUPPORTS_DOUBLE = 1 << 12
}
 Effect Flags. More...
 
enum  VST_EFFECT_OPCODE {
  VST_EFFECT_OPCODE_00 = 0x00 , VST_EFFECT_OPCODE_CREATE = 0x00 , VST_EFFECT_OPCODE_INITIALIZE = 0x00 , VST_EFFECT_OPCODE_01 = 0x01 ,
  VST_EFFECT_OPCODE_DESTROY = 0x01 , VST_EFFECT_OPCODE_02 = 0x02 , VST_EFFECT_OPCODE_SET_PROGRAM = 0x02 , VST_EFFECT_OPCODE_PROGRAM_SET = 0x02 ,
  VST_EFFECT_OPCODE_03 = 0x03 , VST_EFFECT_OPCODE_GET_PROGRAM = 0x03 , VST_EFFECT_OPCODE_PROGRAM_GET = 0x03 , VST_EFFECT_OPCODE_04 = 0x04 ,
  VST_EFFECT_OPCODE_SET_PROGRAM_NAME = 0x04 , VST_EFFECT_OPCODE_PROGRAM_SET_NAME = 0x04 , VST_EFFECT_OPCODE_05 = 0x05 , VST_EFFECT_OPCODE_GET_PROGRAM_NAME = 0x05 ,
  VST_EFFECT_OPCODE_PROGRAM_GET_NAME = 0x05 , VST_EFFECT_OPCODE_06 = 0x06 , VST_EFFECT_OPCODE_PARAM_GETLABEL = 0x06 , VST_EFFECT_OPCODE_PARAM_GET_LABEL = 0x06 ,
  VST_EFFECT_OPCODE_PARAM_LABEL = 0x06 , VST_EFFECT_OPCODE_07 = 0x07 , VST_EFFECT_OPCODE_PARAM_GETVALUE = 0x07 , VST_EFFECT_OPCODE_PARAM_GET_VALUE = 0x07 ,
  VST_EFFECT_OPCODE_PARAM_VALUE = 0x07 , VST_EFFECT_OPCODE_PARAM_VALUE_TO_STRING = 0x07 , VST_EFFECT_OPCODE_08 = 0x08 , VST_EFFECT_OPCODE_PARAM_GETNAME = 0x08 ,
  VST_EFFECT_OPCODE_PARAM_GET_NAME = 0x08 , VST_EFFECT_OPCODE_PARAM_NAME = 0x08 , VST_EFFECT_OPCODE_09 = 0x09 , VST_EFFECT_OPCODE_0A = 0x0A ,
  VST_EFFECT_OPCODE_SETSAMPLERATE = 0x0A , VST_EFFECT_OPCODE_SET_SAMPLE_RATE = 0x0A , VST_EFFECT_OPCODE_0B = 0x0B , VST_EFFECT_OPCODE_SETBLOCKSIZE = 0x0B ,
  VST_EFFECT_OPCODE_SET_BLOCK_SIZE = 0x0B , VST_EFFECT_OPCODE_0C = 0x0C , VST_EFFECT_OPCODE_PAUSE_UNPAUSE = 0x0C , VST_EFFECT_OPCODE_SUSPEND_RESUME = 0x0C ,
  VST_EFFECT_OPCODE_SUSPEND = 0x0C , VST_EFFECT_OPCODE_0D = 0x0D , VST_EFFECT_OPCODE_WINDOW_GETRECT = 0x0D , VST_EFFECT_OPCODE_EDITOR_RECT = 0x0D ,
  VST_EFFECT_OPCODE_EDITOR_GET_RECT = 0x0D , VST_EFFECT_OPCODE_0E = 0x0E , VST_EFFECT_OPCODE_WINDOW_CREATE = 0x0E , VST_EFFECT_OPCODE_EDITOR_OPEN = 0x0E ,
  VST_EFFECT_OPCODE_0F = 0x0F , VST_EFFECT_OPCODE_WINDOW_DESTROY = 0x0F , VST_EFFECT_OPCODE_EDITOR_CLOSE = 0x0F , VST_EFFECT_OPCODE_10 = 0x10 ,
  VST_EFFECT_OPCODE_WINDOW_DRAW = 0x10 , VST_EFFECT_OPCODE_EDITOR_DRAW = 0x10 , VST_EFFECT_OPCODE_11 = 0x11 , VST_EFFECT_OPCODE_WINDOW_MOUSE = 0x11 ,
  VST_EFFECT_OPCODE_EDITOR_MOUSE = 0x11 , VST_EFFECT_OPCODE_12 = 0x12 , VST_EFFECT_OPCODE_WINDOW_KEYBOARD = 0x12 , VST_EFFECT_OPCODE_EDITOR_KEYBOARD = 0x12 ,
  VST_EFFECT_OPCODE_13 = 0x13 , VST_EFFECT_OPCODE_EDITOR_KEEP_ALIVE = 0x13 , VST_EFFECT_OPCODE_14 = 0x14 , VST_EFFECT_OPCODE_15 = 0x15 ,
  VST_EFFECT_OPCODE_16 = 0x16 , VST_EFFECT_OPCODE_FOURCC = 0x16 , VST_EFFECT_OPCODE_17 = 0x17 , VST_EFFECT_OPCODE_GET_CHUNK_DATA = 0x17 ,
  VST_EFFECT_OPCODE_18 = 0x18 , VST_EFFECT_OPCODE_SET_CHUNK_DATA = 0x18 , VST_EFFECT_OPCODE_19 = 0x19 , VST_EFFECT_OPCODE_1A = 0x1A ,
  VST_EFFECT_OPCODE_PARAM_ISAUTOMATABLE = 0x1A , VST_EFFECT_OPCODE_PARAM_IS_AUTOMATABLE = 0x1A , VST_EFFECT_OPCODE_PARAM_AUTOMATABLE = 0x1A , VST_EFFECT_OPCODE_1B = 0x1B ,
  VST_EFFECT_OPCODE_PARAM_SET_VALUE = 0x1B , VST_EFFECT_OPCODE_PARAM_VALUE_FROM_STRING = 0x1B , VST_EFFECT_OPCODE_1C = 0x1C , VST_EFFECT_OPCODE_1D = 0x1D ,
  VST_EFFECT_OPCODE_1E = 0x1E , VST_EFFECT_OPCODE_1F = 0x1F , VST_EFFECT_OPCODE_20 = 0x20 , VST_EFFECT_OPCODE_21 = 0x21 ,
  VST_EFFECT_OPCODE_INPUT_GET_PROPERTIES = 0x21 , VST_EFFECT_OPCODE_22 = 0x22 , VST_EFFECT_OPCODE_OUTPUT_GET_PROPERTIES = 0x22 , VST_EFFECT_OPCODE_23 = 0x23 ,
  VST_EFFECT_OPCODE_EFFECT_CATEGORY = 0x23 , VST_EFFECT_OPCODE_CATEGORY = 0x23 , VST_EFFECT_OPCODE_24 = 0x24 , VST_EFFECT_OPCODE_25 = 0x25 ,
  VST_EFFECT_OPCODE_26 = 0x26 , VST_EFFECT_OPCODE_27 = 0x27 , VST_EFFECT_OPCODE_28 = 0x28 , VST_EFFECT_OPCODE_29 = 0x29 ,
  VST_EFFECT_OPCODE_2A = 0x2A , VST_EFFECT_OPCODE_SET_SPEAKER_ARRANGEMENT = 0x2A , VST_EFFECT_OPCODE_2B = 0x2B , VST_EFFECT_OPCODE_2C = 0x2C ,
  VST_EFFECT_OPCODE_BYPASS = 0x2C , VST_EFFECT_OPCODE_2D = 0x2D , VST_EFFECT_OPCODE_GETNAME = 0x2D , VST_EFFECT_OPCODE_EFFECT_NAME = 0x2D ,
  VST_EFFECT_OPCODE_NAME = 0x2D , VST_EFFECT_OPCODE_2E = 0x2E , VST_EFFECT_OPCODE_TRANSLATE_ERROR = 0x2E , VST_EFFECT_OPCODE_2F = 0x2F ,
  VST_EFFECT_OPCODE_GETVENDOR = 0x2F , VST_EFFECT_OPCODE_VENDOR_NAME = 0x2F , VST_EFFECT_OPCODE_30 = 0x30 , VST_EFFECT_OPCODE_GETNAME2 = 0x30 ,
  VST_EFFECT_OPCODE_PRODUCT_NAME = 0x30 , VST_EFFECT_OPCODE_31 = 0x31 , VST_EFFECT_OPCODE_GETVENDORVERSION = 0x31 , VST_EFFECT_OPCODE_VENDOR_VERSION = 0x31 ,
  VST_EFFECT_OPCODE_32 = 0x32 , VST_EFFECT_OPCODE_CUSTOM = 0x32 , VST_EFFECT_OPCODE_33 = 0x33 , VST_EFFECT_OPCODE_SUPPORTS = 0x33 ,
  VST_EFFECT_OPCODE_34 = 0x34 , VST_EFFECT_OPCODE_GETTAILSAMPLES = 0x34 , VST_EFFECT_OPCODE_TAIL_SAMPLES = 0x34 , VST_EFFECT_OPCODE_35 = 0x35 ,
  VST_EFFECT_OPCODE_IDLE = 0x35 , VST_EFFECT_OPCODE_36 = 0x36 , VST_EFFECT_OPCODE_37 = 0x37 , VST_EFFECT_OPCODE_38 = 0x38 ,
  VST_EFFECT_OPCODE_GET_PARAMETER_PROPERTIES = 0x38 , VST_EFFECT_OPCODE_PARAM_PROPERTIES = 0x38 , VST_EFFECT_OPCODE_39 = 0x39 , VST_EFFECT_OPCODE_3A = 0x3A ,
  VST_EFFECT_OPCODE_VST_VERSION = 0x3A , VST_EFFECT_OPCODE_3B = 0x3B , VST_EFFECT_OPCODE_EDITOR_VKEY_DOWN = 0x3B , VST_EFFECT_OPCODE_3C = 0x3C ,
  VST_EFFECT_OPCODE_EDITOR_VKEY_UP = 0x3C , VST_EFFECT_OPCODE_3D = 0x3D , VST_EFFECT_OPCODE_3E = 0x3E , VST_EFFECT_OPCODE_3F = 0x3F ,
  VST_EFFECT_OPCODE_40 = 0x40 , VST_EFFECT_OPCODE_41 = 0x41 , VST_EFFECT_OPCODE_42 = 0x42 , VST_EFFECT_OPCODE_43 = 0x43 ,
  VST_EFFECT_OPCODE_PROGRAM_SET_BEGIN = 0x43 , VST_EFFECT_OPCODE_44 = 0x44 , VST_EFFECT_OPCODE_PROGRAM_SET_END = 0x44 , VST_EFFECT_OPCODE_45 = 0x45 ,
  VST_EFFECT_OPCODE_GET_SPEAKER_ARRANGEMENT = 0x45 , VST_EFFECT_OPCODE_46 = 0x46 , VST_EFFECT_OPCODE_CONTAINER_NEXT_EFFECT_ID = 0x46 , VST_EFFECT_OPCODE_47 = 0x47 ,
  VST_EFFECT_OPCODE_PROCESS_BEGIN = 0x47 , VST_EFFECT_OPCODE_48 = 0x48 , VST_EFFECT_OPCODE_PROCESS_END = 0x48 , VST_EFFECT_OPCODE_49 = 0x49 ,
  VST_EFFECT_OPCODE_4A = 0x4A , VST_EFFECT_OPCODE_4B = 0x4B , VST_EFFECT_OPCODE_BANK_LOAD = 0x4B , VST_EFFECT_OPCODE_4C = 0x4C ,
  VST_EFFECT_OPCODE_PROGRAM_LOAD = 0x4C , VST_EFFECT_OPCODE_4D = 0x4D , VST_EFFECT_OPCODE_4E = 0x4E , VST_EFFECT_OPCODE_4F = 0x4F ,
  VST_EFFECT_OPCODE_MAX , _VST_EFFECT_OPCODE_PAD = 0xFFFFFFFFul
}
 Host to Plug-in Op-Codes These Op-Codes are emitted by the host and we must either handle them or return 0 (false). More...
 

Macro Definition Documentation

◆ VST2SDK_VST_H

#define VST2SDK_VST_H

Definition at line 28 of file vst.h.

◆ VST_DEFAULT_BLOCK_SIZE

#define VST_DEFAULT_BLOCK_SIZE   1024

Default VST 2.x Block Size All VST 2.x hosts expect you to initialize your plug-in to these default values.

See also
VST_EFFECT_OPCODE_SET_BLOCK_SIZE

Definition at line 839 of file vst.h.

◆ VST_DEFAULT_SAMPLE_RATE

#define VST_DEFAULT_SAMPLE_RATE   44100.0f

Default VST 2.x Sample Rate All VST 2.x hosts expect you to initialize your plug-in to these default values.

See also
VST_EFFECT_OPCODE_SET_SAMPLE_RATE

Definition at line 832 of file vst.h.

◆ VST_ENTRYPOINT

#define VST_ENTRYPOINT    vst_effect_t* VSTPluginMain(vst_host_callback_t callback)

VST 2.x Entry Point for all platforms.

Must be present in VST 2.x plug-ins but must not be present in VST 1.x plug-ins.

Returns
A new instance of the VST 2.x effect.

Definition at line 2254 of file vst.h.

2263 { return VSTPluginMain(callback); }
2264
2271#define VST_ENTRYPOINT_MACOS \
2272 vst_effect_t* main_macho(vst_host_callback_t callback) { return VSTPluginMain(callback); }
2273
2280#define VST_ENTRYPOINT_MACOS_POWERPC \
2281 vst_effect_t* main(vst_host_callback_t callback) { return VSTPluginMain(callback); }
2282
2283#ifdef __cplusplus
2284}
2285#endif
2286#pragma pack(pop)
2287#endif

◆ VST_ENTRYPOINT_MACOS

#define VST_ENTRYPOINT_MACOS    vst_effect_t* main_macho(vst_host_callback_t callback) { return VSTPluginMain(callback); }

[DEPRECATED] VST 1.x Entry Point for MacOS

Do not implement in VST 2.1 or later plug-ins!

Returns
A new instance of the VST 1.x effect.

Definition at line 2272 of file vst.h.

2273 { return VSTPluginMain(callback); }

◆ VST_ENTRYPOINT_MACOS_POWERPC

#define VST_ENTRYPOINT_MACOS_POWERPC    vst_effect_t* main(vst_host_callback_t callback) { return VSTPluginMain(callback); }

[DEPRECATED] VST 2.3 Entry Point for PowerPC

Present in some VST 2.3 and earlier compatible plug-ins that support MacOS.

Returns
A new instance of the VST 2.x effect.

Definition at line 2281 of file vst.h.

2282 { return VSTPluginMain(callback); }

◆ VST_ENTRYPOINT_WINDOWS

#define VST_ENTRYPOINT_WINDOWS    vst_effect_t* MAIN(vst_host_callback_t callback) { return VSTPluginMain(callback); }

[DEPRECATED] VST 1.x Entry Point for Windows

Do not implement in VST 2.1 or later plug-ins!

Returns
A new instance of the VST 1.x effect.

Definition at line 2263 of file vst.h.

2264 { return VSTPluginMain(callback); }

◆ VST_FOURCC

#define VST_FOURCC (   a,
  b,
  c,
 
)    ((((uint32_t)a) << 24) | (((uint32_t)b) << 16) | (((uint32_t)c) << 8) | (((uint32_t)d) << 0))

Convert four numbers into a FourCC.

Definition at line 54 of file vst.h.

◆ VST_FUNCTION_INTERFACE

#define VST_FUNCTION_INTERFACE   __cdecl

Standard calling convention across plug-ins and hosts.

On some older Windows platforms this is not __cdecl but something similar to __stdcall. We don't really care about those old platforms anyway so __cdecl it is.

Definition at line 46 of file vst.h.

◆ VST_MAGICNUMBER

#define VST_MAGICNUMBER   VST_FOURCC('V', 's', 't', 'P')

Magic Number identifying a VST 2.x plug-in structure.

See also
vst_effect_t.magic_numer

Definition at line 825 of file vst.h.

◆ VST_MAX_CHANNELS

#define VST_MAX_CHANNELS   32

Maximum number of channels/streams/inputs/outputs supported by VST 2.x.

Definition at line 50 of file vst.h.

Typedef Documentation

◆ vst_effect_control_t

typedef intptr_t(VST_FUNCTION_INTERFACE * vst_effect_control_t) (struct vst_effect_t *self, int32_t opcode, int32_t p_int1, intptr_t p_int2, void *p_ptr, float p_float)

Control the VST through an opcode and up to four parameters.

See also
VST_EFFECT_OPCODE
Parameters
selfPointer to the effect itself.
opcodeThe opcode to run, see VST_EFFECT_OPCODE.
p_int1Parameter, see VST_EFFECT_OPCODE.
p_int2Parameter, see VST_EFFECT_OPCODE.
p_ptrParameter, see VST_EFFECT_OPCODE.
p_floatParameter, see VST_EFFECT_OPCODE.

Definition at line 2032 of file vst.h.

◆ vst_effect_get_parameter_t

typedef float(VST_FUNCTION_INTERFACE * vst_effect_get_parameter_t) (struct vst_effect_t *self, uint32_t index)

Retrieve the current value of the parameter at the given index, or do nothing if out of bounds.

Parameters
selfPointer to the effect itself.
indexParameter index.
Returns
Current value of the parameter.

Definition at line 2059 of file vst.h.

◆ vst_effect_process_double_t

typedef void(VST_FUNCTION_INTERFACE * vst_effect_process_double_t) (struct vst_effect_t *self, const double *const *inputs, double **outputs, int32_t samples)

Process the given number of double samples in inputs and outputs.

Process input and overwrite the output in place. Host provides output buffers.

Note
(VST 2.4+) Available from VST 2.4 and later.
Parameters
selfPointer to the effect itself.
inputsPointer to an array of 'const double[samples]' with size numInputs.
outputsPointer to an array of 'double[samples]' with size numOutputs.
samplesNumber of samples per channel in inputs.

Definition at line 2085 of file vst.h.

◆ vst_effect_process_float_t

typedef void(VST_FUNCTION_INTERFACE * vst_effect_process_float_t) (struct vst_effect_t *self, const float *const *inputs, float **outputs, int32_t samples)

Process the given number of single samples in inputs and outputs.

Process input and overwrite the output in place. Host provides output buffers.

@important Not thread-safe on MacOS for some reason or another.

Parameters
selfPointer to the effect itself.
inputsPointer to an array of 'const float[samples]' with size numInputs.
outputsPointer to an array of 'float[samples]' with size numOutputs.
samplesNumber of samples per channel in inputs.

Definition at line 2072 of file vst.h.

◆ vst_effect_process_t

typedef void(VST_FUNCTION_INTERFACE * vst_effect_process_t) (struct vst_effect_t *self, const float *const *inputs, float **outputs, int32_t samples)

Process the given number of samples in inputs and outputs.

Used to handle input data and provides output data. We seem to be the ones that provide the output buffer?

Parameters
selfPointer to the effect itself.
inputsPointer to an array of 'const float[samples]' with size vst_effect_t::num_inputs.
outputsPointer to an array of 'float[samples]' with size vst_effect_t::num_outputs.
samplesNumber of samples per channel in inputs and outputs.

Definition at line 2043 of file vst.h.

◆ vst_effect_set_parameter_t

typedef void(VST_FUNCTION_INTERFACE * vst_effect_set_parameter_t) (struct vst_effect_t *self, uint32_t index, float value)

Updates the value for the parameter at the given index, or does nothing if out of bounds.

Parameters
selfPointer to the effect itself.
indexParameter index.
valueNew value for the parameter.

Definition at line 2051 of file vst.h.

◆ vst_host_callback_t

typedef intptr_t(VST_FUNCTION_INTERFACE * vst_host_callback_t) (struct vst_effect_t *plugin, int32_t opcode, int32_t p_int1, int64_t p_int2, const char *p_str, float p_float)

Plug-in to Host callback.

The plug-in may call this to attempt to change things on the host side. The host side is free to ignore all requests, annoyingly enough.

Parameters
opcodeSee VST_HOST_OPCODE
p_strZero terminated string or null on call.
Returns
?

Definition at line 815 of file vst.h.

Enumeration Type Documentation

◆ VST_BUFFER_SIZE

Known Buffer Sizes.

Enumerator
VST_BUFFER_SIZE_PARAM_LABEL 
VST_BUFFER_SIZE_PARAM_NAME 
VST_BUFFER_SIZE_PARAM_VALUE 
VST_BUFFER_SIZE_STREAM_LABEL 
VST_BUFFER_SIZE_CATEGORY_LABEL 
VST_BUFFER_SIZE_PROGRAM_NAME 
VST_BUFFER_SIZE_EFFECT_NAME 
VST_BUFFER_SIZE_PARAM_LONG_NAME 
VST_BUFFER_SIZE_PRODUCT_NAME 
VST_BUFFER_SIZE_SPEAKER_NAME 
VST_BUFFER_SIZE_STREAM_NAME 
VST_BUFFER_SIZE_VENDOR_NAME 

Definition at line 102 of file vst.h.

102 {
115}; // This is an enum because I started to dislike macros.
@ VST_BUFFER_SIZE_SPEAKER_NAME
Definition vst.h:112
@ VST_BUFFER_SIZE_STREAM_NAME
Definition vst.h:113
@ VST_BUFFER_SIZE_PARAM_VALUE
Definition vst.h:105
@ VST_BUFFER_SIZE_STREAM_LABEL
Definition vst.h:106
@ VST_BUFFER_SIZE_PARAM_LABEL
Definition vst.h:103
@ VST_BUFFER_SIZE_VENDOR_NAME
Definition vst.h:114
@ VST_BUFFER_SIZE_PARAM_NAME
Definition vst.h:104
@ VST_BUFFER_SIZE_PROGRAM_NAME
Definition vst.h:108
@ VST_BUFFER_SIZE_CATEGORY_LABEL
Definition vst.h:107
@ VST_BUFFER_SIZE_EFFECT_NAME
Definition vst.h:109
@ VST_BUFFER_SIZE_PARAM_LONG_NAME
Definition vst.h:110
@ VST_BUFFER_SIZE_PRODUCT_NAME
Definition vst.h:111

◆ VST_EFFECT_CATEGORY

Plug-in Categories Pre-defined category grouping that also affect host behavior when handling the plug-in.

This is not just a UI/UX thing, it actually affects what plug-ins can do, so place your plug-in into the correct category.

Enumerator
VST_EFFECT_CATEGORY_UNCATEGORIZED 
VST_EFFECT_CATEGORY_01 

Generic Effects Examples: Distortion, Pitch Shift, ...

Supports: Delay (Optional), Tail Samples, MIDI

VST_EFFECT_CATEGORY_EFFECT 
See also
VST_EFFECT_CATEGORY_01
VST_EFFECT_CATEGORY_02 

Instruments Examples: Instruments, Synths, Samplers, ...

Supports: Delay (Optional), Tail Samples, MIDI

VST_EFFECT_CATEGORY_INSTRUMENT 
See also
VST_EFFECT_CATEGORY_02
VST_EFFECT_CATEGORY_03 

Metering Examples: Loudness Meters, Volume Analysis, ...

Supports: Tail Samples, MIDI

Note
Delay causes crashes in some hosts. Fun.
VST_EFFECT_CATEGORY_METERING 
See also
VST_EFFECT_CATEGORY_03
VST_EFFECT_CATEGORY_04 

Mastering Examples: Compressors, Limiters, ...

Supports: Delay, Tail Samples (optional), MIDI

VST_EFFECT_CATEGORY_MASTERING 
See also
VST_EFFECT_CATEGORY_04
VST_EFFECT_CATEGORY_05 

Spatializers Examples: Channel Panning, Expanders, ...

Supports: Tail Samples (optional), MIDI

VST_EFFECT_CATEGORY_SPATIAL 
See also
VST_EFFECT_CATEGORY_05
VST_EFFECT_CATEGORY_06 

Delay/Echo Examples: Echo, Reverb, Room Simulation, Delay, ...

Supports: Delay, Tail Samples, MIDI

VST_EFFECT_CATEGORY_DELAY_OR_ECHO 
See also
VST_EFFECT_CATEGORY_06
VST_EFFECT_CATEGORY_07 
VST_EFFECT_CATEGORY_08 

Restoration Examples: Noise Filtering, Upsamplers, ...

Supports: Delay, Tail Samples, MIDI

Note
Some DAWs allocate additional processing time to these.
VST_EFFECT_CATEGORY_RESTORATION 
See also
VST_EFFECT_CATEGORY_08
VST_EFFECT_CATEGORY_09 

Offline Processing Examples: Nothing
Supports: Nothing

VST_EFFECT_CATEGORY_OFFLINE 
See also
VST_EFFECT_CATEGORY_09
VST_EFFECT_CATEGORY_0A 

Container Plug-in This plug-in contains multiple effects in one and requires special handling on both sides.

Host handling:

uint32_t current_select_id;
// ... in intptr_t vst_host_callback(vst_effect_t* plugin, VST_HOST_OPCODE opcode, ...)
char* text = (char*)p_ptr;
// The plug-in may ask the host if it even supports containers at all and changes behavior if we don't.
if (text && strcmp(text, vst_host_supports.shellCategory) == 0) {
}
}
return current_selected_id;
// ...
// ... in whatever you use to load plug-ins ...
current_select_id;
vst_effect_t* plugin = plugin_main(&vst_host_callback);
int32_t plugin_category = plugin->control(plugin, VST_EFFECT_OPCODE_CATEGORY, 0, 0, 0, 0)
if (plugin_category == VST_EFFECT_CATEGORY_CONTAINER) {
char effect_name[VST_BUFFER_SIZE_EFFECT_NAME] effect_name;
int32_t effect_id;
// Iterate over all contained effects.
while ((effect_id = plugin->control(plugin, VST_EFFECT_OPCODE_CONTAINER_NEXT_EFFECT_ID, 0, 0, effect_name, 0)) != 0) {
// Contained effects must be named as far as I can tell.
if (effect_name[0] != 0) {
// Do some logic that does the necessary things to list these in the host.
}
}
} else {
// Do things to list only this plugin in the host.
}
// ...
Plug-in Effect definition.
Definition vst.h:2089
vst_effect_control_t control
Control Function.
Definition vst.h:2102
const char * shellCategory
Does the host support container plug-ins?
Definition vst.h:774
@ VST_HOST_OPCODE_CURRENT_EFFECT_ID
Definition vst.h:568
@ VST_HOST_OPCODE_SUPPORTS
Definition vst.h:692
@ VST_STATUS_TRUE
Definition vst.h:81
@ VST_EFFECT_CATEGORY_CONTAINER
Definition vst.h:1004
@ VST_EFFECT_OPCODE_CATEGORY
Definition vst.h:1515
@ VST_EFFECT_OPCODE_CONTAINER_NEXT_EFFECT_ID
Definition vst.h:1859

Plug-in handling:

// ... in vst_effect for the container
size_t current_effect_idx;
int32_t effect_list[] = {
// ... list of effect ids.
}
// ... in control(...)
// Make sure current_effect_idx doesn't exceed the maximum.
if (current_effect_idx > ARRAYSIZEOF(effect_list)) {
current_effect_idx;
return 0;
}
// Some code that turns effect indices into names to store into p_ptr.
return effect_list[current_effect_idx++]; // Return the effect id.
// ...
// Ensure the host VST 2.x compatible.
int32_t vst_version = callback(nullptr, VST_HOST_OPCODE_VST_VERSION, 0, 0, 0, 0);
if (vst_version == 0) {
return 0; // It's not so we exit early.
}
// Check if the host wants
int32_t effect_id = callback(nullptr, VST_HOST_OPCODE_CURRENT_EFFECT_ID, 0, 0, 0);
if (effect_id == 0) {
// ... logic specific to making the container.
return new vst_container_effect();
} else {
// ... logic specific to make sub effects
return new vst_sub_effect();
}
}
// ...
@ VST_HOST_OPCODE_VST_VERSION
Definition vst.h:558
#define VST_ENTRYPOINT
VST 2.x Entry Point for all platforms.
Definition vst.h:2254
VST_EFFECT_CATEGORY_CONTAINER 
See also
VST_EFFECT_CATEGORY_0A
VST_EFFECT_CATEGORY_0B 

Waveform Generators Examples: Sine Wave Generator, ...
Supports: Delay, Tail Samples

I don't know why this exists, there's only one plug-in that has it and all it does is generate a 400hz sine wave.

See also
VST_EFFECT_CATEGORY_INSTRUMENT
VST_EFFECT_CATEGORY_WAVEGENERATOR 
See also
VST_EFFECT_CATEGORY_0B

Definition at line 846 of file vst.h.

846 {
848
857
866
876
885
894
903
905
915
922 VST_EFFECT_CATEGORY_OFFLINE = 0x09, // Offline Processing VST? Seems to receive all audio data prior to playback.
923
1002 VST_EFFECT_CATEGORY_0A = 0x0A,
1005
1017
1019 VST_EFFECT_CATEGORY_MAX, // Not part of specification, marks maximum category.
1020
1022 _VST_EFFECT_CATEGORY_PAD = 0xFFFFFFFFul,
1023};
@ VST_EFFECT_CATEGORY_0A
Container Plug-in This plug-in contains multiple effects in one and requires special handling on both...
Definition vst.h:1002
@ VST_EFFECT_CATEGORY_EFFECT
Definition vst.h:856
@ VST_EFFECT_CATEGORY_02
Instruments Examples: Instruments, Synths, Samplers, ...
Definition vst.h:863
@ VST_EFFECT_CATEGORY_METERING
Definition vst.h:875
@ VST_EFFECT_CATEGORY_01
Generic Effects Examples: Distortion, Pitch Shift, ...
Definition vst.h:854
@ VST_EFFECT_CATEGORY_08
Restoration Examples: Noise Filtering, Upsamplers, ...
Definition vst.h:912
@ VST_EFFECT_CATEGORY_WAVEGENERATOR
Definition vst.h:1016
@ VST_EFFECT_CATEGORY_09
Offline Processing Examples: Nothing Supports: Nothing
Definition vst.h:920
@ VST_EFFECT_CATEGORY_SPATIAL
Definition vst.h:893
@ VST_EFFECT_CATEGORY_07
Definition vst.h:904
@ VST_EFFECT_CATEGORY_06
Delay/Echo Examples: Echo, Reverb, Room Simulation, Delay, ...
Definition vst.h:900
@ VST_EFFECT_CATEGORY_OFFLINE
Definition vst.h:922
@ VST_EFFECT_CATEGORY_0B
Waveform Generators Examples: Sine Wave Generator, ... Supports: Delay, Tail Samples
Definition vst.h:1014
@ VST_EFFECT_CATEGORY_05
Spatializers Examples: Channel Panning, Expanders, ...
Definition vst.h:891
@ VST_EFFECT_CATEGORY_MASTERING
Definition vst.h:884
@ VST_EFFECT_CATEGORY_RESTORATION
Definition vst.h:914
@ VST_EFFECT_CATEGORY_UNCATEGORIZED
Definition vst.h:847
@ VST_EFFECT_CATEGORY_03
Metering Examples: Loudness Meters, Volume Analysis, ...
Definition vst.h:873
@ VST_EFFECT_CATEGORY_INSTRUMENT
Definition vst.h:865
@ VST_EFFECT_CATEGORY_DELAY_OR_ECHO
Definition vst.h:902
@ VST_EFFECT_CATEGORY_04
Mastering Examples: Compressors, Limiters, ...
Definition vst.h:882

◆ VST_EFFECT_FLAG

Effect Flags.

Enumerator
VST_EFFECT_FLAG_1ls0 

Effect provides a custom editor.

The host will not provide a generic editor interface and expects VST_EFFECT_OPCODE_EDITOR_OPEN and VST_EFFECT_OPCODE_EDITOR_CLOSE to work as expected. We are in charge of notifying the host about various things like which parameter is in focus and stuff.

See also
VST_EFFECT_OPCODE_EDITOR_GET_RECT
VST_EFFECT_OPCODE_EDITOR_OPEN
VST_EFFECT_OPCODE_EDITOR_CLOSE
VST_EFFECT_OPCODE_EDITOR_DRAW
VST_EFFECT_OPCODE_EDITOR_MOUSE
VST_EFFECT_OPCODE_EDITOR_KEYBOARD
VST_EFFECT_OPCODE_EDITOR_KEEP_ALIVE
VST_EFFECT_OPCODE_EDITOR_VKEY_DOWN
VST_EFFECT_OPCODE_EDITOR_VKEY_UP
VST_HOST_OPCODE_EDITOR_UPDATE
VST_HOST_OPCODE_PARAM_START_EDIT
VST_HOST_OPCODE_PARAM_STOP_EDIT
VST_HOST_OPCODE_PARAM_UPDATE
VST_EFFECT_FLAG_EDITOR 
See also
VST_EFFECT_FLAG_1ls0
VST_EFFECT_FLAG_1ls4 

Effect uses process_float.

See also
vst_effect_t.process_float
vst_effect_process_float_t
Deprecated:
(VST 2.4) Must be set in VST 2.4 and later or the host should fail to load the plug-in.
VST_EFFECT_FLAG_SUPPORTS_FLOAT 
See also
VST_EFFECT_FLAG_1ls4
VST_EFFECT_FLAG_1ls5 

Effect supports saving/loading programs/banks from unformatted chunk data.

When not set some sort of format is expected that I've yet to decipher.

See also
VST_EFFECT_OPCODE_GET_CHUNK_DATA
VST_EFFECT_OPCODE_SET_CHUNK_DATA
VST_EFFECT_FLAG_CHUNKS 
See also
VST_EFFECT_FLAG_1ls5
VST_EFFECT_FLAG_1ls8 

Effect is an Instrument/Generator.

This must be set in addition to VST_EFFECT_CATEGORY_INSTRUMENT otherwise instruments don't work right.

Note
(VST 2.x) Flag is new to VST 2.x and later.
VST_EFFECT_FLAG_INSTRUMENT 
See also
VST_EFFECT_FLAG_1ls8
VST_EFFECT_FLAG_1ls9 

Effect does not produce tail samples when the input is silent.

Not to be confused with choosing to tell the host there is no tail.

See also
VST_EFFECT_OPCODE_GET_TAIL_SAMPLES
Note
(VST 2.x) Flag is new to VST 2.x and later.
VST_EFFECT_FLAG_SILENT_TAIL 
See also
VST_EFFECT_FLAG_1ls9
VST_EFFECT_FLAG_1ls12 

Effect supports process_double.

The host can freely choose between process_float and process_double as required.

Note
(VST 2.4) Available in VST 2.4 and later only.
See also
vst_effect_t.process_double
vst_effect_process_double_t
VST_EFFECT_FLAG_SUPPORTS_DOUBLE 
See also
VST_EFFECT_FLAG_1ls12

Definition at line 1027 of file vst.h.

1027 {
1047 VST_EFFECT_FLAG_1ls0 = 1 << 0,
1049 VST_EFFECT_FLAG_EDITOR = 1 << 0,
1050
1051 //1 << 1,
1052 //1 << 2, // Only seen when the plug-in responds to VST_EFFECT_OPCODE_09. Seems to be ignored by hosts entirely.
1053 //1 << 3, // Only seen when the plug-in behaves differently in mono mode. Seems to be ignored by hosts entirely.
1054
1061 VST_EFFECT_FLAG_1ls4 = 1 << 4,
1064
1071 VST_EFFECT_FLAG_1ls5 = 1 << 5,
1073 VST_EFFECT_FLAG_CHUNKS = 1 << 5,
1074
1075 //1 << 6,
1076 //1 << 7,
1077
1083 VST_EFFECT_FLAG_1ls8 = 1 << 8,
1086
1093 VST_EFFECT_FLAG_1ls9 = 1 << 9,
1096
1097 //1 << 10,
1098 //1 << 11,
1099
1107 VST_EFFECT_FLAG_1ls12 = 1 << 12,
1110};
@ VST_EFFECT_FLAG_SILENT_TAIL
Definition vst.h:1095
@ VST_EFFECT_FLAG_1ls9
Effect does not produce tail samples when the input is silent.
Definition vst.h:1093
@ VST_EFFECT_FLAG_CHUNKS
Definition vst.h:1073
@ VST_EFFECT_FLAG_1ls4
Effect uses process_float.
Definition vst.h:1061
@ VST_EFFECT_FLAG_1ls5
Effect supports saving/loading programs/banks from unformatted chunk data.
Definition vst.h:1071
@ VST_EFFECT_FLAG_EDITOR
Definition vst.h:1049
@ VST_EFFECT_FLAG_SUPPORTS_FLOAT
Definition vst.h:1063
@ VST_EFFECT_FLAG_1ls0
Effect provides a custom editor.
Definition vst.h:1047
@ VST_EFFECT_FLAG_INSTRUMENT
Definition vst.h:1085
@ VST_EFFECT_FLAG_1ls12
Effect supports process_double.
Definition vst.h:1107
@ VST_EFFECT_FLAG_1ls8
Effect is an Instrument/Generator.
Definition vst.h:1083
@ VST_EFFECT_FLAG_SUPPORTS_DOUBLE
Definition vst.h:1109

◆ VST_EFFECT_OPCODE

Host to Plug-in Op-Codes These Op-Codes are emitted by the host and we must either handle them or return 0 (false).

Enumerator
VST_EFFECT_OPCODE_00 

Create/Initialize the effect (if it has not been created already).

Returns
Always 0.
VST_EFFECT_OPCODE_CREATE 
See also
VST_EFFECT_OPCODE_00
VST_EFFECT_OPCODE_INITIALIZE 
See also
VST_EFFECT_OPCODE_00
VST_EFFECT_OPCODE_01 

Destroy the effect (if there is any) and free its memory.

This should destroy the actual object created by VST_ENTRYPOINT.

Returns
Always 0.
VST_EFFECT_OPCODE_DESTROY 
See also
VST_EFFECT_OPCODE_01
VST_EFFECT_OPCODE_02 

Set which program number is currently select.

Parameters
p_int2The program number to set. Can be negative for some reason.
VST_EFFECT_OPCODE_SET_PROGRAM 
See also
VST_EFFECT_OPCODE_02
VST_EFFECT_OPCODE_PROGRAM_SET 
See also
VST_EFFECT_OPCODE_02
VST_EFFECT_OPCODE_03 

Get currently selected program number.

Returns
The currently set program number. Can be negative for some reason.
VST_EFFECT_OPCODE_GET_PROGRAM 
See also
VST_EFFECT_OPCODE_03
VST_EFFECT_OPCODE_PROGRAM_GET 
See also
VST_EFFECT_OPCODE_03
VST_EFFECT_OPCODE_04 

Set the name of the currently selected program.

Parameters
p_ptrconst char[VST_BUFFER_SIZE_PROGRAM_NAME] Zero terminated string.
VST_EFFECT_OPCODE_SET_PROGRAM_NAME 
See also
VST_EFFECT_OPCODE_04
VST_EFFECT_OPCODE_PROGRAM_SET_NAME 
See also
VST_EFFECT_OPCODE_04
VST_EFFECT_OPCODE_05 

Get the name of the currently selected program.

Parameters
p_ptrchar[VST_BUFFER_SIZE_PROGRAM_NAME] Zero terminated string.
VST_EFFECT_OPCODE_GET_PROGRAM_NAME 
See also
VST_EFFECT_OPCODE_05
VST_EFFECT_OPCODE_PROGRAM_GET_NAME 
See also
VST_EFFECT_OPCODE_05
VST_EFFECT_OPCODE_06 

Get the value? label for the parameter.

Parameters
p_int1Parameter index.
p_ptr'char[VST_BUFFER_SIZE_PARAM_LABEL]' Zero terminated string.
Returns
0 on success, 1 on failure.
VST_EFFECT_OPCODE_PARAM_GETLABEL 
See also
VST_EFFECT_OPCODE_06
VST_EFFECT_OPCODE_PARAM_GET_LABEL 
See also
VST_EFFECT_OPCODE_06
VST_EFFECT_OPCODE_PARAM_LABEL 
See also
VST_EFFECT_OPCODE_06
VST_EFFECT_OPCODE_07 

Get the string representing the value for the parameter.

Parameters
p_int1Parameter index.
p_ptr'char[VST_BUFFER_SIZE_PARAM_VALUE]' Zero terminated string.
Returns
0 on success, 1 on failure.
VST_EFFECT_OPCODE_PARAM_GETVALUE 
See also
VST_EFFECT_OPCODE_07
VST_EFFECT_OPCODE_PARAM_GET_VALUE 
See also
VST_EFFECT_OPCODE_07
VST_EFFECT_OPCODE_PARAM_VALUE 
See also
VST_EFFECT_OPCODE_07
VST_EFFECT_OPCODE_PARAM_VALUE_TO_STRING 
See also
VST_EFFECT_OPCODE_07
VST_EFFECT_OPCODE_08 

Get the name for the parameter.

Parameters
p_int1Parameter index.
p_ptr'char[VST_BUFFER_SIZE_PARAM_NAME]' Zero terminated string.
Returns
0 on success, 1 on failure.
VST_EFFECT_OPCODE_PARAM_GETNAME 
See also
VST_EFFECT_OPCODE_08
VST_EFFECT_OPCODE_PARAM_GET_NAME 
See also
VST_EFFECT_OPCODE_08
VST_EFFECT_OPCODE_PARAM_NAME 
See also
VST_EFFECT_OPCODE_08
VST_EFFECT_OPCODE_09 
Deprecated:
: (VST 2.3+) Not used in VST 2.3 or later.
VST_EFFECT_OPCODE_0A 

Set the new sample rate for the plugin to use.

Parameters
p_floatNew sample rate as a float (double on 64-bit because register upgrades).
VST_EFFECT_OPCODE_SETSAMPLERATE 
See also
VST_EFFECT_OPCODE_0A
VST_EFFECT_OPCODE_SET_SAMPLE_RATE 
See also
VST_EFFECT_OPCODE_0A
VST_EFFECT_OPCODE_0B 

Sets the block size, which is the maximum number of samples passed into the effect via process calls.

Parameters
p_int2The maximum number of samples to be passed in.
VST_EFFECT_OPCODE_SETBLOCKSIZE 
See also
VST_EFFECT_OPCODE_0B
VST_EFFECT_OPCODE_SET_BLOCK_SIZE 
See also
VST_EFFECT_OPCODE_0B
VST_EFFECT_OPCODE_0C 

Effect processing should be suspended/paused or resumed/unpaused.

Unclear if this is should result in a flush of buffers. In VST 2.3+ this is quite clear as we get process begin/end.

Parameters
p_int2VST_STATUS_FALSE if the effect should suspend processing, VST_STATUS_TRUE if it should resume.
VST_EFFECT_OPCODE_PAUSE_UNPAUSE 
See also
VST_EFFECT_OPCODE_0C
VST_EFFECT_OPCODE_SUSPEND_RESUME 
See also
VST_EFFECT_OPCODE_0C
VST_EFFECT_OPCODE_SUSPEND 
See also
VST_EFFECT_OPCODE_0C
VST_EFFECT_OPCODE_0D 

Retrieve the client rect size of the plugins window.

If no window has been created, returns the default rect.

Parameters
p_ptrPointer of type 'struct vst_rect_t*'.
Returns
On success, returns 1 and updates p_ptr to the rect. On failure, returns 0.
VST_EFFECT_OPCODE_WINDOW_GETRECT 
See also
VST_EFFECT_OPCODE_0D
VST_EFFECT_OPCODE_EDITOR_RECT 
See also
VST_EFFECT_OPCODE_0D
VST_EFFECT_OPCODE_EDITOR_GET_RECT 
See also
VST_EFFECT_OPCODE_0D
VST_EFFECT_OPCODE_0E 

Create the window for the plugin.

Parameters
p_ptrHWND of the parent window.
Returns
0 on failure, or HWND on success.
VST_EFFECT_OPCODE_WINDOW_CREATE 
See also
VST_EFFECT_OPCODE_0E
VST_EFFECT_OPCODE_EDITOR_OPEN 
See also
VST_EFFECT_OPCODE_0E
VST_EFFECT_OPCODE_0F 

Destroy the plugins window.

Returns
Always 0.
VST_EFFECT_OPCODE_WINDOW_DESTROY 
See also
VST_EFFECT_OPCODE_0F
VST_EFFECT_OPCODE_EDITOR_CLOSE 
See also
VST_EFFECT_OPCODE_0F
VST_EFFECT_OPCODE_10 

Window Draw Event?

Ocasionally called simultaneously as WM_DRAW on windows.

Note
Present in some VST 2.1 or earlier plugins.
Appears to be Mac OS exclusive.
Deprecated:
(VST 2.4+) Likely deprecated in VST 2.4 and later.
VST_EFFECT_OPCODE_WINDOW_DRAW 
See also
VST_EFFECT_OPCODE_10
VST_EFFECT_OPCODE_EDITOR_DRAW 
See also
VST_EFFECT_OPCODE_10
VST_EFFECT_OPCODE_11 

Window Mouse Event?

Called at the same time mouse events happen.

Note
Present in some VST 2.1 or earlier plugins.
Appears to be Mac OS exclusive.
Deprecated:
(VST 2.4+) Likely deprecated in VST 2.4 and later.
VST_EFFECT_OPCODE_WINDOW_MOUSE 
See also
VST_EFFECT_OPCODE_11
VST_EFFECT_OPCODE_EDITOR_MOUSE 
See also
VST_EFFECT_OPCODE_11
VST_EFFECT_OPCODE_12 

Window Keyboard Event?

Called at the same time keyboard events happen.

Note
Present in some VST 2.1 or earlier plugins.
Appears to be Mac OS exclusive.
Deprecated:
(VST 2.4+) Likely deprecated in VST 2.4 and later.
VST_EFFECT_OPCODE_WINDOW_KEYBOARD 
See also
VST_EFFECT_OPCODE_12
VST_EFFECT_OPCODE_EDITOR_KEYBOARD 
See also
VST_EFFECT_OPCODE_12
VST_EFFECT_OPCODE_13 

Window/Editor Idle/Keep-Alive Callback?

Does not receive any parameters. Randomly called when nothing happens? Idle/Keep-Alive callback?

VST_EFFECT_OPCODE_EDITOR_KEEP_ALIVE 
See also
VST_EFFECT_OPCODE_13
VST_EFFECT_OPCODE_14 

Window Focus Event?

Sometimes called when the editor window goes back into focus.

Note
Present in some VST 2.1 or earlier plugins.
Appears to be Mac OS exclusive.
Deprecated:
(VST 2.4+) Likely deprecated in VST 2.4 and later.
VST_EFFECT_OPCODE_15 

Window Unfocus Event?

Sometimes called when the editor window goes out of focus.

Note
Present in some VST 2.1 or earlier plugins.
Appears to be Mac OS exclusive.
Deprecated:
(VST 2.4+) Likely deprecated in VST 2.4 and later.
VST_EFFECT_OPCODE_16 
Note
Present in some VST 2.1 or earlier plugins. @important Almost all plug-ins return the VST_FOURCC 'NvEf' (0x4E764566) here.
Deprecated:
(VST 2.4+) Likely deprecated in VST 2.4 and later.
VST_EFFECT_OPCODE_FOURCC 
See also
VST_EFFECT_OPCODE_16
VST_EFFECT_OPCODE_17 

Get Chunk Data.

Save current program or bank state to a buffer. Behavior is different based on the VST_EFFECT_FLAG_CHUNKS flag.

See also
VST_EFFECT_FLAG_CHUNKS
Parameters
p_int10 means Bank, 1 means Program, nothing else used?
p_ptrvoid** Pointer to a potential pointer containing your own chunk data.
Returns
Size of the Chunk Data in bytes.
VST_EFFECT_OPCODE_GET_CHUNK_DATA 
See also
VST_EFFECT_OPCODE_17
VST_EFFECT_OPCODE_18 

Set Chunk Data.

Restore current program or bank state from a buffer. Behavior is different based on the VST_EFFECT_FLAG_CHUNKS flag.

See also
VST_EFFECT_FLAG_CHUNKS
Parameters
p_int10 means Bank, 1 means Program, nothing else used?
p_int2Size of the Chunk Data in bytes.
p_ptrvoid* Pointer to a buffer containing chunk data.
VST_EFFECT_OPCODE_SET_CHUNK_DATA 
See also
VST_EFFECT_OPCODE_18
VST_EFFECT_OPCODE_19 

Appears to be related to midi and audio events.

Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_1A 

Can the parameter be automated?

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_int1Index of the parameter.
Returns
1 if the parameter can be automated, otherwise 0.
VST_EFFECT_OPCODE_PARAM_ISAUTOMATABLE 
See also
VST_EFFECT_OPCODE_1A
VST_EFFECT_OPCODE_PARAM_IS_AUTOMATABLE 
See also
VST_EFFECT_OPCODE_1A
VST_EFFECT_OPCODE_PARAM_AUTOMATABLE 
See also
VST_EFFECT_OPCODE_1A
VST_EFFECT_OPCODE_1B 

Set Parameter value from string representation.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_int1Index of the parameter.
p_ptrconst char* Zero terminated string representation of the value to set.
Returns
1 if it worked, otherwise 0.
VST_EFFECT_OPCODE_PARAM_SET_VALUE 
See also
VST_EFFECT_OPCODE_1B
VST_EFFECT_OPCODE_PARAM_VALUE_FROM_STRING 
See also
VST_EFFECT_OPCODE_1B
VST_EFFECT_OPCODE_1C 
Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_1D 
Note
(VST 2.0+) Available from VST 2.0 onwards.
See also
VST_EFFECT_OPCODE_05
VST_EFFECT_OPCODE_1E 
Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_1F 

Input connected.

Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_20 

Input disconnected.

Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_21 

Retrieve properties for the given input index.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_int1Index of the input to get the properties for.
p_ptrPointer to vst_stream_properties_t for the selected input provided by the host.
Returns
VST_STATUS_TRUE if p_ptr is updated, VST_STATUS_FALSE otherwise.
VST_EFFECT_OPCODE_INPUT_GET_PROPERTIES 
See also
VST_EFFECT_OPCODE_21
VST_EFFECT_OPCODE_22 

Retrieve properties for the given output index.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_int1Index of the output to get the properties for.
p_ptrPointer to vst_stream_properties_t for the selected output provided by the host.
Returns
VST_STATUS_TRUE if p_ptr is updated, VST_STATUS_FALSE otherwise.
VST_EFFECT_OPCODE_OUTPUT_GET_PROPERTIES 
See also
VST_EFFECT_OPCODE_22
VST_EFFECT_OPCODE_23 

Retrieve category of this effect.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Returns
The category that this effect is in, see VST_EFFECT_CATEGORY.
VST_EFFECT_OPCODE_EFFECT_CATEGORY 
See also
VST_EFFECT_OPCODE_23
VST_EFFECT_OPCODE_CATEGORY 
See also
VST_EFFECT_OPCODE_23
VST_EFFECT_OPCODE_24 
Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_25 
Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_26 

Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.

Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_27 

Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.

Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_28 

Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.

Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_29 

Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.

Note
(VST 2.0+) Available from VST 2.0 onwards.
VST_EFFECT_OPCODE_2A 

Host wants to change the speaker arrangement.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_int2Pointer to a vst_speaker_arrangement_t for the input.
p_ptrPointer to a vst_speaker_arrangement_t for the output.
Returns
VST_STATUS_TRUE if we accept the new arrangement, VST_STATUS_FALSE if we don't in which case the host is required to ask for the speaker arrangement via VST_EFFECT_OPCODE_GET_SPEAKER_ARRANGEMENT and may retry this op-code with different values.
See also
vst_effect_t.num_inputs
vst_effect_t.num_outputs
VST_EFFECT_OPCODE_GET_SPEAKER_ARRANGEMENT
VST_EFFECT_OPCODE_SET_SPEAKER_ARRANGEMENT 
See also
VST_EFFECT_OPCODE_2A
VST_EFFECT_OPCODE_2B 
VST_EFFECT_OPCODE_2C 

Enable/Disable bypassing the effect.

See VST_EFFECT_OPCODE_SUPPORTS with vst_effect_supports_t::bypass for more information.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_int2Zero if bypassing the effect is disabled, otherwise 1.
VST_EFFECT_OPCODE_BYPASS 
See also
VST_EFFECT_OPCODE_2C
VST_EFFECT_OPCODE_2D 

Retrieve the effect name into the ptr buffer.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Bug:
Various hosts only provide a buffer that is 32 bytes long.
Parameters
p_ptrA zero terminated char buffer of size VST_BUFFER_SIZE_EFFECT_NAME.
Returns
Always 0, even on failure.
VST_EFFECT_OPCODE_GETNAME 
See also
VST_EFFECT_OPCODE_2D
VST_EFFECT_OPCODE_EFFECT_NAME 
See also
VST_EFFECT_OPCODE_2D
VST_EFFECT_OPCODE_NAME 
See also
VST_EFFECT_OPCODE_2D
VST_EFFECT_OPCODE_2E 

Translate an error code to a string.

Bug:
Some hosts provide unexpected data in p_ptr.
Note
(VST 2.0+) Available from VST 2.0 onwards.
Deprecated:
(VST 2.4+) Fairly sure this is deprecated in VST 2.4 and later.
Parameters
p_ptrA zero terminated char buffer with undefined size.
Returns
VST_STATUS_TRUE if we could translate the error, VST_STATUS_FALSE if not.
VST_EFFECT_OPCODE_TRANSLATE_ERROR 
See also
VST_EFFECT_OPCODE_2E
VST_EFFECT_OPCODE_2F 

Retrieve the vendor name into the ptr buffer.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_ptrA zero terminated char buffer of size VST_BUFFER_SIZE_VENDOR_NAME.
VST_EFFECT_OPCODE_GETVENDOR 
See also
VST_EFFECT_OPCODE_2F
VST_EFFECT_OPCODE_VENDOR_NAME 
See also
VST_EFFECT_OPCODE_2F
VST_EFFECT_OPCODE_30 

Retrieve the product name into the ptr buffer.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_ptrA zero terminated char buffer of size VST_BUFFER_SIZE_PRODUCT_NAME.
VST_EFFECT_OPCODE_GETNAME2 
See also
VST_EFFECT_OPCODE_30
VST_EFFECT_OPCODE_PRODUCT_NAME 
See also
VST_EFFECT_OPCODE_30
VST_EFFECT_OPCODE_31 

Retrieve the vendor version in return value.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Returns
Version.
VST_EFFECT_OPCODE_GETVENDORVERSION 
See also
VST_EFFECT_OPCODE_31
VST_EFFECT_OPCODE_VENDOR_VERSION 
See also
VST_EFFECT_OPCODE_31
VST_EFFECT_OPCODE_32 

User-defined Op-Code for VST extensions.

Note
(VST 2.0+) Available from VST 2.0 onwards. All parameters are undefined by the standard and left up to the host/plug-in. Use VST_EFFECT_OPCODE_SUPPORTS and VST_EFFECT_OPCODE_VENDOR_NAME + VST_EFFECT_OPCODE_VENDOR_VERSION to check if the plug-in is compatible with your expected format.
VST_EFFECT_OPCODE_CUSTOM 
See also
VST_EFFECT_OPCODE_32
VST_EFFECT_OPCODE_33 

Test for support of a specific named feature.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_ptrA zero terminated char buffer of undefined size containing the feature name.
Returns
VST_STATUS_YES if the feature is supported, VST_STATUS_NO if the feature is not supported, VST_STATUS_UNKNOWN in all other cases.
VST_EFFECT_OPCODE_SUPPORTS 
See also
VST_EFFECT_OPCODE_33
VST_EFFECT_OPCODE_34 

Number of samples that are at the tail at the end of playback.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Returns
VST_STATUS_UNKNOWN for automatic tail size, VST_STATUS_TRUE for no tail, any other number above 1 for the number of samples the tail has.
VST_EFFECT_OPCODE_GETTAILSAMPLES 
See also
VST_EFFECT_OPCODE_34
VST_EFFECT_OPCODE_TAIL_SAMPLES 
See also
VST_EFFECT_OPCODE_34
VST_EFFECT_OPCODE_35 

Notify effect that it is idle?

Note
(VST 2.0+) Available from VST 2.0 onwards.
Deprecated:
(VST 2.4+) As of VST 2.4 the default behavior is VST_EFFECT_OPCODE_PROCESS_BEGIN and VST_EFFECT_OPCODE_PROCESS_END which allows cleaner control flows.
See also
vst_host_supports.startStopProcess
VST_EFFECT_OPCODE_IDLE 
See also
VST_EFFECT_OPCODE_35
VST_EFFECT_OPCODE_36 
Note
(VST 2.0+) Available from VST 2.0 onwards.
Deprecated:
(VST 2.4) Invalid in all VST 2.4 and later hosts.
VST_EFFECT_OPCODE_37 
Note
(VST 2.0+) Available from VST 2.0 onwards.
Deprecated:
(VST 2.4) Invalid in all VST 2.4 and later hosts.
VST_EFFECT_OPCODE_38 

Parameter Properties.

Note
(VST 2.0+) Available from VST 2.0 onwards.
Parameters
p_int1Parameter index to get properties for.
p_ptrPointer to vst_parameter_properties_t for the given parameter.
Returns
VST_STATUS_YES if supported, otherwise VST_STATUS_NO.
VST_EFFECT_OPCODE_GET_PARAMETER_PROPERTIES 
See also
VST_EFFECT_OPCODE_38
VST_EFFECT_OPCODE_PARAM_PROPERTIES 
See also
VST_EFFECT_OPCODE_38
VST_EFFECT_OPCODE_39 
Note
(VST 2.0+) Available from VST 2.0 onwards.
Deprecated:
(VST 2.4) Invalid in all VST 2.4 and later hosts.
VST_EFFECT_OPCODE_3A 

Retrieve the VST Version supported.

Note
(VST 2.0+) Available from VST 2.0 onwards.
See also
VST_VERSION
Returns
One of the valid enums in VST_VERSION
VST_EFFECT_OPCODE_VST_VERSION 
See also
VST_EFFECT_OPCODE_3A
VST_EFFECT_OPCODE_3B 

Editor Virtual Key Down Input.

Note
(VST 2.1+) Available from VST 2.1 onwards.
Parameters
p_int1ASCII character that represents the virtual key code.
p_int2Virtual Key Code
p_floatModifiers being held down (bitfield)
Returns
VST_STATUS_TRUE if we used the input, otherwise VST_STATUS_FALSE
VST_EFFECT_OPCODE_EDITOR_VKEY_DOWN 
See also
VST_EFFECT_OPCODE_3B
VST_EFFECT_OPCODE_3C 

Editor Virtual Key Up Event.

Note
(VST 2.1+) Available from VST 2.1 onwards.
Parameters
p_int1ASCII character that represents the virtual key code.
p_int2Virtual Key Code
p_floatModifiers being held down (bitfield)
Returns
VST_STATUS_TRUE if we used the input, otherwise VST_STATUS_FALSE
VST_EFFECT_OPCODE_EDITOR_VKEY_UP 
See also
VST_EFFECT_OPCODE_3C
VST_EFFECT_OPCODE_3D 
Note
(VST 2.1+) Available from VST 2.1 onwards.
Parameters
p_int2A value between 0 and 2.
VST_EFFECT_OPCODE_3E 

Midi related.

Note
(VST 2.1+) Available from VST 2.1 onwards.
VST_EFFECT_OPCODE_3F 

Midi related.

Note
(VST 2.1+) Available from VST 2.1 onwards.
VST_EFFECT_OPCODE_40 

Midi related.

Note
(VST 2.1+) Available from VST 2.1 onwards.
VST_EFFECT_OPCODE_41 

Midi related.

Note
(VST 2.1+) Available from VST 2.1 onwards.
VST_EFFECT_OPCODE_42 

Midi related.

Note
(VST 2.1+) Available from VST 2.1 onwards.
VST_EFFECT_OPCODE_43 

Host is starting to set up a program.

Emitted prior to the host loading a program.

Note
(VST 2.1+) Available from VST 2.1 onwards.
Returns
VST_STATUS_TRUE if we understood the notification, or VST_STATUS_FALSE if not.
VST_EFFECT_OPCODE_PROGRAM_SET_BEGIN 
See also
VST_EFFECT_OPCODE_43
VST_EFFECT_OPCODE_44 

Host is done setting up a program.

Emitted after the host finished loading a program.

Note
(VST 2.1+) Available from VST 2.1 onwards.
Returns
VST_STATUS_TRUE if we understood the notification, or VST_STATUS_FALSE if not.
VST_EFFECT_OPCODE_PROGRAM_SET_END 
See also
VST_EFFECT_OPCODE_44
VST_EFFECT_OPCODE_45 

Host wants to know the current speaker arrangement.

Note
(VST 2.3+) Available from VST 2.3 onwards.
Parameters
p_int2Pointer to vst_speaker_arrangement_t for the input.
p_ptrPointer to vst_speaker_arrangement_t for the output.
Returns
VST_STATUS_TRUE if we were successful, otherwise VST_STATUS_FALSE.
VST_EFFECT_OPCODE_GET_SPEAKER_ARRANGEMENT 
See also
VST_EFFECT_OPCODE_45
VST_EFFECT_OPCODE_46 

Get the next effect contained in this effect.

This returns the next effect based on an effect internal counter, the host does not provide any index.

Used in combination with VST_EFFECT_CATEGORY_CONTAINER.

Note
(VST 2.3+) Available from VST 2.3 onwards.
Parameters
p_ptrPointer to a char buffer of size VST_BUFFER_SIZE_EFFECT_NAME to store the name of the next effect.
Returns
Next effects unique_id
VST_EFFECT_OPCODE_CONTAINER_NEXT_EFFECT_ID 
See also
VST_EFFECT_OPCODE_46
VST_EFFECT_OPCODE_47 

Begin processing of audio.

Host is requesting that we prepare for a new section of audio separate from the previous section.

Note
(VST 2.3+) Available from VST 2.3 onwards.
VST_EFFECT_OPCODE_PROCESS_BEGIN 
See also
VST_EFFECT_OPCODE_47
VST_EFFECT_OPCODE_48 

End processing of audio.

Host is requesting that we stop processing audio and go into idle instead.

Note
(VST 2.3+) Available from VST 2.3 onwards.
VST_EFFECT_OPCODE_PROCESS_END 
See also
VST_EFFECT_OPCODE_48
VST_EFFECT_OPCODE_49 
Note
(VST 2.3+) Available from VST 2.3 onwards.
VST_EFFECT_OPCODE_4A 
Note
(VST 2.3+) Available from VST 2.3 onwards.
See also
VST_EFFECT_CATEGORY_SPATIAL
Parameters
p_int2Unknown meaning.
p_floatUnknown meaning, usually 1.0
VST_EFFECT_OPCODE_4B 

Host wants to know if we can load the provided bank data.

Should be emitted prior to VST_EFFECT_OPCODE_SET_CHUNK_DATA by the host.

Note
(VST 2.3+) Available from VST 2.3 onwards.
Parameters
p_ptrUnknown structured data.
Returns
VST_STATUS_NO if we can't load the data, VST_STATUS_YES if we can load the data, VST_STATUS_UNKNOWN if this isn't supported.
VST_EFFECT_OPCODE_BANK_LOAD 
See also
VST_EFFECT_OPCODE_4B
VST_EFFECT_OPCODE_4C 

Host wants to know if we can load the provided program data.

Should be emitted prior to VST_EFFECT_OPCODE_PROGRAM_SET_BEGIN by the host.

Note
(VST 2.3+) Available from VST 2.3 onwards.
Parameters
p_ptrUnknown structured data.
Returns
VST_STATUS_NO if we can't load the data, VST_STATUS_YES if we can load the data, VST_STATUS_UNKNOWN if this isn't supported.
VST_EFFECT_OPCODE_PROGRAM_LOAD 
See also
VST_EFFECT_OPCODE_4C
VST_EFFECT_OPCODE_4D 
Note
(VST 2.4+) Available from VST 2.4 onwards.
VST_EFFECT_OPCODE_4E 
Note
(VST 2.4+) Available from VST 2.4 onwards.
VST_EFFECT_OPCODE_4F 
Note
(VST 2.4+) Available from VST 2.4 onwards.

Definition at line 1115 of file vst.h.

1115 {
1120 VST_EFFECT_OPCODE_00 = 0x00,
1125
1132 VST_EFFECT_OPCODE_01 = 0x01,
1135
1140 VST_EFFECT_OPCODE_02 = 0x02,
1145
1150 VST_EFFECT_OPCODE_03 = 0x03,
1155
1160 VST_EFFECT_OPCODE_04 = 0x04,
1165
1170 VST_EFFECT_OPCODE_05 = 0x05,
1175
1182 VST_EFFECT_OPCODE_06 = 0x06,
1189
1196 VST_EFFECT_OPCODE_07 = 0x07,
1205
1212 VST_EFFECT_OPCODE_08 = 0x08,
1219
1224 VST_EFFECT_OPCODE_09 = 0x09,
1225
1230 VST_EFFECT_OPCODE_0A = 0x0A,
1235
1240 VST_EFFECT_OPCODE_0B = 0x0B,
1245
1254 VST_EFFECT_OPCODE_0C = 0x0C,
1261
1268 VST_EFFECT_OPCODE_0D = 0x0D,
1275
1281 VST_EFFECT_OPCODE_0E = 0x0E,
1286
1291 VST_EFFECT_OPCODE_0F = 0x0F,
1296
1307 VST_EFFECT_OPCODE_10 = 0x10,
1312
1323 VST_EFFECT_OPCODE_11 = 0x11,
1328
1339 VST_EFFECT_OPCODE_12 = 0x12,
1344
1349 VST_EFFECT_OPCODE_13 = 0x13,
1352
1361 VST_EFFECT_OPCODE_14 = 0x14,
1362
1371 VST_EFFECT_OPCODE_15 = 0x15,
1372
1379 VST_EFFECT_OPCODE_16 = 0x16,
1382
1393 VST_EFFECT_OPCODE_17 = 0x17,
1396
1407 VST_EFFECT_OPCODE_18 = 0x18,
1410
1411 //--------------------------------------------------------------------------------
1412 // VST 2.x starts here.
1413 //--------------------------------------------------------------------------------
1414
1420 VST_EFFECT_OPCODE_19 = 0x19,
1421
1428 VST_EFFECT_OPCODE_1A = 0x1A,
1435
1443 VST_EFFECT_OPCODE_1B = 0x1B,
1448
1454 VST_EFFECT_OPCODE_1C = 0x1C,
1455
1461 VST_EFFECT_OPCODE_1D = 0x1D,
1462
1468 VST_EFFECT_OPCODE_1E = 0x1E,
1469
1475 VST_EFFECT_OPCODE_1F = 0x1F,
1476
1482 VST_EFFECT_OPCODE_20 = 0x20,
1483
1491 VST_EFFECT_OPCODE_21 = 0x21,
1494
1502 VST_EFFECT_OPCODE_22 = 0x22,
1505
1511 VST_EFFECT_OPCODE_23 = 0x23,
1516
1522 VST_EFFECT_OPCODE_24 = 0x24,
1523
1529 VST_EFFECT_OPCODE_25 = 0x25,
1530
1536 VST_EFFECT_OPCODE_26 = 0x26,
1537
1543 VST_EFFECT_OPCODE_27 = 0x27,
1544
1550 VST_EFFECT_OPCODE_28 = 0x28,
1551
1557 VST_EFFECT_OPCODE_29 = 0x29,
1558
1571 VST_EFFECT_OPCODE_2A = 0x2A,
1574
1579 VST_EFFECT_OPCODE_2B = 0x2B,
1580
1588 VST_EFFECT_OPCODE_2C = 0x2C,
1591
1599 VST_EFFECT_OPCODE_2D = 0x2D,
1606
1615 VST_EFFECT_OPCODE_2E = 0x2E,
1618
1624 VST_EFFECT_OPCODE_2F = 0x2F,
1629
1635 VST_EFFECT_OPCODE_30 = 0x30,
1640
1646 VST_EFFECT_OPCODE_31 = 0x31,
1651
1659 VST_EFFECT_OPCODE_32 = 0x32,
1662
1670 VST_EFFECT_OPCODE_33 = 0x33,
1673
1680 VST_EFFECT_OPCODE_34 = 0x34,
1685
1693 VST_EFFECT_OPCODE_35 = 0x35,
1696
1703 VST_EFFECT_OPCODE_36 = 0x36,
1704
1711 VST_EFFECT_OPCODE_37 = 0x37,
1712
1720 VST_EFFECT_OPCODE_38 = 0x38,
1725
1731 VST_EFFECT_OPCODE_39 = 0x39,
1732
1739 VST_EFFECT_OPCODE_3A = 0x3A,
1742
1743 //--------------------------------------------------------------------------------
1744 // VST 2.1
1745 //--------------------------------------------------------------------------------
1746
1755 VST_EFFECT_OPCODE_3B = 0x3B,
1758
1767 VST_EFFECT_OPCODE_3C = 0x3C,
1770
1776 VST_EFFECT_OPCODE_3D = 0x3D,
1777
1783 VST_EFFECT_OPCODE_3E = 0x3E,
1784
1790 VST_EFFECT_OPCODE_3F = 0x3F,
1791
1797 VST_EFFECT_OPCODE_40 = 0x40,
1798
1804 VST_EFFECT_OPCODE_41 = 0x41,
1805
1811 VST_EFFECT_OPCODE_42 = 0x42,
1812
1819 VST_EFFECT_OPCODE_43 = 0x43,
1822
1829 VST_EFFECT_OPCODE_44 = 0x44,
1832
1833 //--------------------------------------------------------------------------------
1834 // VST 2.3
1835 //--------------------------------------------------------------------------------
1836
1844 VST_EFFECT_OPCODE_45 = 0x45,
1847
1857 VST_EFFECT_OPCODE_46 = 0x46,
1860
1866 VST_EFFECT_OPCODE_47 = 0x47,
1869
1875 VST_EFFECT_OPCODE_48 = 0x48,
1878
1884 VST_EFFECT_OPCODE_49 = 0x49,
1885
1893 VST_EFFECT_OPCODE_4A = 0x4A,
1894
1903 VST_EFFECT_OPCODE_4B = 0x4B,
1906
1915 VST_EFFECT_OPCODE_4C = 0x4C,
1918
1919 //--------------------------------------------------------------------------------
1920 // VST 2.4
1921 //--------------------------------------------------------------------------------
1922
1928 VST_EFFECT_OPCODE_4D = 0x4D,
1929
1935 VST_EFFECT_OPCODE_4E = 0x4E,
1936
1942 VST_EFFECT_OPCODE_4F = 0x4F,
1943
1945 VST_EFFECT_OPCODE_MAX,
1946
1948 _VST_EFFECT_OPCODE_PAD = 0xFFFFFFFFul,
1949};
@ VST_EFFECT_OPCODE_WINDOW_MOUSE
Definition vst.h:1325
@ VST_EFFECT_OPCODE_2A
Host wants to change the speaker arrangement.
Definition vst.h:1571
@ VST_EFFECT_OPCODE_GETVENDORVERSION
Definition vst.h:1648
@ VST_EFFECT_OPCODE_20
Input disconnected.
Definition vst.h:1482
@ VST_EFFECT_OPCODE_14
Window Focus Event?
Definition vst.h:1361
@ VST_EFFECT_OPCODE_PARAM_VALUE_TO_STRING
Definition vst.h:1204
@ VST_EFFECT_OPCODE_PARAM_GETLABEL
Definition vst.h:1184
@ VST_EFFECT_OPCODE_4E
Definition vst.h:1935
@ VST_EFFECT_OPCODE_43
Host is starting to set up a program.
Definition vst.h:1819
@ VST_EFFECT_OPCODE_3E
Midi related.
Definition vst.h:1783
@ VST_EFFECT_OPCODE_32
User-defined Op-Code for VST extensions.
Definition vst.h:1659
@ VST_EFFECT_OPCODE_03
Get currently selected program number.
Definition vst.h:1150
@ VST_EFFECT_OPCODE_SET_CHUNK_DATA
Definition vst.h:1409
@ VST_EFFECT_OPCODE_21
Retrieve properties for the given input index.
Definition vst.h:1491
@ VST_EFFECT_OPCODE_PRODUCT_NAME
Definition vst.h:1639
@ VST_EFFECT_OPCODE_4B
Host wants to know if we can load the provided bank data.
Definition vst.h:1903
@ VST_EFFECT_OPCODE_PARAM_NAME
Definition vst.h:1218
@ VST_EFFECT_OPCODE_1C
Definition vst.h:1454
@ VST_EFFECT_OPCODE_41
Midi related.
Definition vst.h:1804
@ VST_EFFECT_OPCODE_SET_SAMPLE_RATE
Definition vst.h:1234
@ VST_EFFECT_OPCODE_CREATE
Definition vst.h:1122
@ VST_EFFECT_OPCODE_EDITOR_GET_RECT
Definition vst.h:1274
@ VST_EFFECT_OPCODE_SET_SPEAKER_ARRANGEMENT
Definition vst.h:1573
@ VST_EFFECT_OPCODE_PARAM_GETVALUE
Definition vst.h:1198
@ VST_EFFECT_OPCODE_PROGRAM_SET_NAME
Definition vst.h:1164
@ VST_EFFECT_OPCODE_06
Get the value? label for the parameter.
Definition vst.h:1182
@ VST_EFFECT_OPCODE_0A
Set the new sample rate for the plugin to use.
Definition vst.h:1230
@ VST_EFFECT_OPCODE_10
Window Draw Event?
Definition vst.h:1307
@ VST_EFFECT_OPCODE_2F
Retrieve the vendor name into the ptr buffer.
Definition vst.h:1624
@ VST_EFFECT_OPCODE_PROGRAM_GET
Definition vst.h:1154
@ VST_EFFECT_OPCODE_28
Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.
Definition vst.h:1550
@ VST_EFFECT_OPCODE_4D
Definition vst.h:1928
@ VST_EFFECT_OPCODE_01
Destroy the effect (if there is any) and free its memory.
Definition vst.h:1132
@ VST_EFFECT_OPCODE_3C
Editor Virtual Key Up Event.
Definition vst.h:1767
@ VST_EFFECT_OPCODE_1B
Set Parameter value from string representation.
Definition vst.h:1443
@ VST_EFFECT_OPCODE_SET_BLOCK_SIZE
Definition vst.h:1244
@ VST_EFFECT_OPCODE_IDLE
Definition vst.h:1695
@ VST_EFFECT_OPCODE_33
Test for support of a specific named feature.
Definition vst.h:1670
@ VST_EFFECT_OPCODE_04
Set the name of the currently selected program.
Definition vst.h:1160
@ VST_EFFECT_OPCODE_09
Definition vst.h:1224
@ VST_EFFECT_OPCODE_PARAM_GET_NAME
Definition vst.h:1216
@ VST_EFFECT_OPCODE_BANK_LOAD
Definition vst.h:1905
@ VST_EFFECT_OPCODE_EDITOR_MOUSE
Definition vst.h:1327
@ VST_EFFECT_OPCODE_WINDOW_CREATE
Definition vst.h:1283
@ VST_EFFECT_OPCODE_0B
Sets the block size, which is the maximum number of samples passed into the effect via process calls.
Definition vst.h:1240
@ VST_EFFECT_OPCODE_PARAM_GET_VALUE
Definition vst.h:1200
@ VST_EFFECT_OPCODE_39
Definition vst.h:1731
@ VST_EFFECT_OPCODE_05
Get the name of the currently selected program.
Definition vst.h:1170
@ VST_EFFECT_OPCODE_1A
Can the parameter be automated?
Definition vst.h:1428
@ VST_EFFECT_OPCODE_19
Appears to be related to midi and audio events.
Definition vst.h:1420
@ VST_EFFECT_OPCODE_PROGRAM_SET_END
Definition vst.h:1831
@ VST_EFFECT_OPCODE_GET_PROGRAM
Definition vst.h:1152
@ VST_EFFECT_OPCODE_12
Window Keyboard Event?
Definition vst.h:1339
@ VST_EFFECT_OPCODE_42
Midi related.
Definition vst.h:1811
@ VST_EFFECT_OPCODE_EFFECT_CATEGORY
Definition vst.h:1513
@ VST_EFFECT_OPCODE_PARAM_IS_AUTOMATABLE
Definition vst.h:1432
@ VST_EFFECT_OPCODE_WINDOW_DRAW
Definition vst.h:1309
@ VST_EFFECT_OPCODE_DESTROY
Definition vst.h:1134
@ VST_EFFECT_OPCODE_SETBLOCKSIZE
Definition vst.h:1242
@ VST_EFFECT_OPCODE_02
Set which program number is currently select.
Definition vst.h:1140
@ VST_EFFECT_OPCODE_48
End processing of audio.
Definition vst.h:1875
@ VST_EFFECT_OPCODE_GETNAME2
Definition vst.h:1637
@ VST_EFFECT_OPCODE_CUSTOM
Definition vst.h:1661
@ VST_EFFECT_OPCODE_2E
Translate an error code to a string.
Definition vst.h:1615
@ VST_EFFECT_OPCODE_3D
Definition vst.h:1776
@ VST_EFFECT_OPCODE_EDITOR_KEEP_ALIVE
Definition vst.h:1351
@ VST_EFFECT_OPCODE_PARAM_PROPERTIES
Definition vst.h:1724
@ VST_EFFECT_OPCODE_TAIL_SAMPLES
Definition vst.h:1684
@ VST_EFFECT_OPCODE_30
Retrieve the product name into the ptr buffer.
Definition vst.h:1635
@ VST_EFFECT_OPCODE_PARAM_VALUE
Definition vst.h:1202
@ VST_EFFECT_OPCODE_35
Notify effect that it is idle?
Definition vst.h:1693
@ VST_EFFECT_OPCODE_PROGRAM_GET_NAME
Definition vst.h:1174
@ VST_EFFECT_OPCODE_0D
Retrieve the client rect size of the plugins window.
Definition vst.h:1268
@ VST_EFFECT_OPCODE_1E
Definition vst.h:1468
@ VST_EFFECT_OPCODE_PROGRAM_LOAD
Definition vst.h:1917
@ VST_EFFECT_OPCODE_23
Retrieve category of this effect.
Definition vst.h:1511
@ VST_EFFECT_OPCODE_VST_VERSION
Definition vst.h:1741
@ VST_EFFECT_OPCODE_36
Definition vst.h:1703
@ VST_EFFECT_OPCODE_EDITOR_OPEN
Definition vst.h:1285
@ VST_EFFECT_OPCODE_EDITOR_VKEY_DOWN
Definition vst.h:1757
@ VST_EFFECT_OPCODE_00
Create/Initialize the effect (if it has not been created already).
Definition vst.h:1120
@ VST_EFFECT_OPCODE_2B
Definition vst.h:1579
@ VST_EFFECT_OPCODE_SUSPEND_RESUME
Definition vst.h:1258
@ VST_EFFECT_OPCODE_24
Definition vst.h:1522
@ VST_EFFECT_OPCODE_PARAM_LABEL
Definition vst.h:1188
@ VST_EFFECT_OPCODE_40
Midi related.
Definition vst.h:1797
@ VST_EFFECT_OPCODE_22
Retrieve properties for the given output index.
Definition vst.h:1502
@ VST_EFFECT_OPCODE_4F
Definition vst.h:1942
@ VST_EFFECT_OPCODE_47
Begin processing of audio.
Definition vst.h:1866
@ VST_EFFECT_OPCODE_38
Parameter Properties.
Definition vst.h:1720
@ VST_EFFECT_OPCODE_GET_SPEAKER_ARRANGEMENT
Definition vst.h:1846
@ VST_EFFECT_OPCODE_0E
Create the window for the plugin.
Definition vst.h:1281
@ VST_EFFECT_OPCODE_3B
Editor Virtual Key Down Input.
Definition vst.h:1755
@ VST_EFFECT_OPCODE_BYPASS
Definition vst.h:1590
@ VST_EFFECT_OPCODE_EDITOR_KEYBOARD
Definition vst.h:1343
@ VST_EFFECT_OPCODE_INPUT_GET_PROPERTIES
Definition vst.h:1493
@ VST_EFFECT_OPCODE_VENDOR_NAME
Definition vst.h:1628
@ VST_EFFECT_OPCODE_PARAM_ISAUTOMATABLE
Definition vst.h:1430
@ VST_EFFECT_OPCODE_WINDOW_KEYBOARD
Definition vst.h:1341
@ VST_EFFECT_OPCODE_GET_PROGRAM_NAME
Definition vst.h:1172
@ VST_EFFECT_OPCODE_17
Get Chunk Data.
Definition vst.h:1393
@ VST_EFFECT_OPCODE_31
Retrieve the vendor version in return value.
Definition vst.h:1646
@ VST_EFFECT_OPCODE_2D
Retrieve the effect name into the ptr buffer.
Definition vst.h:1599
@ VST_EFFECT_OPCODE_07
Get the string representing the value for the parameter.
Definition vst.h:1196
@ VST_EFFECT_OPCODE_PROCESS_END
Definition vst.h:1877
@ VST_EFFECT_OPCODE_SET_PROGRAM
Definition vst.h:1142
@ VST_EFFECT_OPCODE_27
Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.
Definition vst.h:1543
@ VST_EFFECT_OPCODE_EDITOR_DRAW
Definition vst.h:1311
@ VST_EFFECT_OPCODE_15
Window Unfocus Event?
Definition vst.h:1371
@ VST_EFFECT_OPCODE_49
Definition vst.h:1884
@ VST_EFFECT_OPCODE_NAME
Definition vst.h:1605
@ VST_EFFECT_OPCODE_EDITOR_CLOSE
Definition vst.h:1295
@ VST_EFFECT_OPCODE_29
Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.
Definition vst.h:1557
@ VST_EFFECT_OPCODE_3A
Retrieve the VST Version supported.
Definition vst.h:1739
@ VST_EFFECT_OPCODE_11
Window Mouse Event?
Definition vst.h:1323
@ VST_EFFECT_OPCODE_PARAM_GET_LABEL
Definition vst.h:1186
@ VST_EFFECT_OPCODE_SETSAMPLERATE
Definition vst.h:1232
@ VST_EFFECT_OPCODE_0F
Destroy the plugins window.
Definition vst.h:1291
@ VST_EFFECT_OPCODE_GET_CHUNK_DATA
Definition vst.h:1395
@ VST_EFFECT_OPCODE_INITIALIZE
Definition vst.h:1124
@ VST_EFFECT_OPCODE_GETTAILSAMPLES
Definition vst.h:1682
@ VST_EFFECT_OPCODE_18
Set Chunk Data.
Definition vst.h:1407
@ VST_EFFECT_OPCODE_EFFECT_NAME
Definition vst.h:1603
@ VST_EFFECT_OPCODE_GET_PARAMETER_PROPERTIES
Definition vst.h:1722
@ VST_EFFECT_OPCODE_PARAM_AUTOMATABLE
Definition vst.h:1434
@ VST_EFFECT_OPCODE_PARAM_GETNAME
Definition vst.h:1214
@ VST_EFFECT_OPCODE_4A
Definition vst.h:1893
@ VST_EFFECT_OPCODE_08
Get the name for the parameter.
Definition vst.h:1212
@ VST_EFFECT_OPCODE_13
Window/Editor Idle/Keep-Alive Callback?
Definition vst.h:1349
@ VST_EFFECT_OPCODE_45
Host wants to know the current speaker arrangement.
Definition vst.h:1844
@ VST_EFFECT_OPCODE_WINDOW_GETRECT
Definition vst.h:1270
@ VST_EFFECT_OPCODE_OUTPUT_GET_PROPERTIES
Definition vst.h:1504
@ VST_EFFECT_OPCODE_PARAM_VALUE_FROM_STRING
Definition vst.h:1447
@ VST_EFFECT_OPCODE_GETVENDOR
Definition vst.h:1626
@ VST_EFFECT_OPCODE_PROCESS_BEGIN
Definition vst.h:1868
@ VST_EFFECT_OPCODE_1D
Definition vst.h:1461
@ VST_EFFECT_OPCODE_PAUSE_UNPAUSE
Definition vst.h:1256
@ VST_EFFECT_OPCODE_4C
Host wants to know if we can load the provided program data.
Definition vst.h:1915
@ VST_EFFECT_OPCODE_26
Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.
Definition vst.h:1536
@ VST_EFFECT_OPCODE_GETNAME
Definition vst.h:1601
@ VST_EFFECT_OPCODE_VENDOR_VERSION
Definition vst.h:1650
@ VST_EFFECT_OPCODE_46
Get the next effect contained in this effect.
Definition vst.h:1857
@ VST_EFFECT_OPCODE_SET_PROGRAM_NAME
Definition vst.h:1162
@ VST_EFFECT_OPCODE_FOURCC
Definition vst.h:1381
@ VST_EFFECT_OPCODE_37
Definition vst.h:1711
@ VST_EFFECT_OPCODE_44
Host is done setting up a program.
Definition vst.h:1829
@ VST_EFFECT_OPCODE_3F
Midi related.
Definition vst.h:1790
@ VST_EFFECT_OPCODE_WINDOW_DESTROY
Definition vst.h:1293
@ VST_EFFECT_OPCODE_EDITOR_VKEY_UP
Definition vst.h:1769
@ VST_EFFECT_OPCODE_1F
Input connected.
Definition vst.h:1475
@ VST_EFFECT_OPCODE_34
Number of samples that are at the tail at the end of playback.
Definition vst.h:1680
@ VST_EFFECT_OPCODE_2C
Enable/Disable bypassing the effect.
Definition vst.h:1588
@ VST_EFFECT_OPCODE_PROGRAM_SET
Definition vst.h:1144
@ VST_EFFECT_OPCODE_SUPPORTS
Definition vst.h:1672
@ VST_EFFECT_OPCODE_PROGRAM_SET_BEGIN
Definition vst.h:1821
@ VST_EFFECT_OPCODE_16
Definition vst.h:1379
@ VST_EFFECT_OPCODE_TRANSLATE_ERROR
Definition vst.h:1617
@ VST_EFFECT_OPCODE_EDITOR_RECT
Definition vst.h:1272
@ VST_EFFECT_OPCODE_25
Definition vst.h:1529
@ VST_EFFECT_OPCODE_PARAM_SET_VALUE
Definition vst.h:1445
@ VST_EFFECT_OPCODE_SUSPEND
Definition vst.h:1260
@ VST_EFFECT_OPCODE_0C
Effect processing should be suspended/paused or resumed/unpaused.
Definition vst.h:1254

◆ VST_HOST_OPCODE

Plug-in to Host Op-Codes These Op-Codes are emitted by the plug-in and the host may handle them or return 0 (false).

We have no guarantees about anything actually happening.

Enumerator
VST_HOST_OPCODE_00 

Update automation for a given Parameter.

Must be used to notify the host that the parameter was changed by the user if a custom editor is used.

Parameters
p_int1Parameter Index
p_floatParameter Value
Returns
Expected to return... something.
VST_HOST_OPCODE_AUTOMATE 
See also
VST_HOST_OPCODE_00
VST_HOST_OPCODE_PARAM_UPDATE 
See also
VST_HOST_OPCODE_00
VST_HOST_OPCODE_01 

Retrieve the Hosts VST Version.

Returns
See VST_VERSION enumeration.
VST_HOST_OPCODE_VST_VERSION 
See also
VST_HOST_OPCODE_01
VST_HOST_OPCODE_02 

Get the currently selected effect id in container plug-ins.

Used in combination with VST_EFFECT_CATEGORY_CONTAINER.

Returns
The currently selected unique effect id in this container.
VST_HOST_OPCODE_CURRENT_EFFECT_ID 
See also
VST_HOST_OPCODE_02
VST_HOST_OPCODE_03 

Some sort of idle keep-alive?

Seems to be called only in editor windows when a modal popup is present.

VST_HOST_OPCODE_KEEPALIVE_OR_IDLE 
See also
VST_HOST_OPCODE_03
VST_HOST_OPCODE_04 
VST_HOST_OPCODE_05 
VST_HOST_OPCODE_06 
VST_HOST_OPCODE_07 
VST_HOST_OPCODE_08 
VST_HOST_OPCODE_09 
VST_HOST_OPCODE_0A 
VST_HOST_OPCODE_0B 
VST_HOST_OPCODE_0C 
VST_HOST_OPCODE_0D 
VST_HOST_OPCODE_0E 

Notify the host that numInputs/numOutputs/delay/numParams has changed.

Only supported if the host replies VST_STATUS_TRUE to VST_HOST_OPCODE_SUPPORTS query for vst_host_supports_t::acceptIOChanges.

Note
In VST 2.3 and earlier calling this outside of VST_EFFECT_OPCODE_IDLE may result in a crash.
In VST 2.3 and later this may only be called while between VST_EFFECT_OPCODE_PROCESS_END and VST_EFFECT_OPCODE_PROCESS_BEGIN.
Returns
VST_STATUS_TRUE if supported and handled otherwise VST_STATUS_FALSE.
VST_HOST_OPCODE_IO_MODIFIED 
See also
VST_HOST_OPCODE_0E
VST_HOST_OPCODE_0F 
VST_HOST_OPCODE_10 
VST_HOST_OPCODE_11 
VST_HOST_OPCODE_12 
VST_HOST_OPCODE_13 
VST_HOST_OPCODE_14 
VST_HOST_OPCODE_15 
VST_HOST_OPCODE_16 
VST_HOST_OPCODE_17 
VST_HOST_OPCODE_18 
VST_HOST_OPCODE_19 
VST_HOST_OPCODE_1A 
VST_HOST_OPCODE_1B 
VST_HOST_OPCODE_1C 
VST_HOST_OPCODE_1D 
VST_HOST_OPCODE_1E 
VST_HOST_OPCODE_1F 
VST_HOST_OPCODE_20 
VST_HOST_OPCODE_21 

Retrieve the vendor name into the ptr buffer.

Parameters
p_ptrA zero terminated char buffer of size VST_BUFFER_SIZE_VENDOR_NAME.
VST_HOST_OPCODE_VENDOR_NAME 
See also
VST_HOST_OPCODE_21
VST_HOST_OPCODE_22 

Retrieve the product name into the ptr buffer.

Parameters
p_ptrA zero terminated char buffer of size VST_BUFFER_SIZE_PRODUCT_NAME.
VST_HOST_OPCODE_PRODUCT_NAME 
See also
VST_HOST_OPCODE_22
VST_HOST_OPCODE_23 

Retrieve the vendor version in return value.

Returns
Version.
VST_HOST_OPCODE_VENDOR_VERSION 
See also
VST_HOST_OPCODE_23
VST_HOST_OPCODE_24 

User defined OP Code, for custom interaction.

VST_HOST_OPCODE_CUSTOM 
See also
VST_HOST_OPCODE_24
VST_HOST_OPCODE_25 
VST_HOST_OPCODE_26 

Check if the host supports a certain feature.

Parameters
p_ptrchar[...] Zero terminated string for which feature we want to support.
Returns
VST_STATUS_TRUE if the feature is supported otherwise VST_STATUS_FALSE.
VST_HOST_OPCODE_SUPPORTS 
See also
VST_HOST_OPCODE_26
VST_HOST_OPCODE_27 
VST_HOST_OPCODE_28 
VST_HOST_OPCODE_29 
VST_HOST_OPCODE_2A 

Request an update of the editor window.

VST_HOST_OPCODE_EDITOR_UPDATE 
See also
VST_HOST_OPCODE_2A
VST_HOST_OPCODE_2B 

Notify host that a parameter is being edited.

Parameters
p_int1Parameter index.
VST_HOST_OPCODE_PARAM_START_EDIT 
See also
VST_HOST_OPCODE_2B
VST_HOST_OPCODE_2C 

Notify host that parameter is no longer being edited.

Parameters
p_int1Parameter index.
VST_HOST_OPCODE_PARAM_STOP_EDIT 
See also
VST_HOST_OPCODE_2C
VST_HOST_OPCODE_2D 
VST_HOST_OPCODE_2E 
VST_HOST_OPCODE_2F 
VST_HOST_OPCODE_MAX 
_VST_HOST_OPCODE_PAD 

Definition at line 537 of file vst.h.

537 {
546 VST_HOST_OPCODE_00 = 0x00, // cb(vst, 0x00, ?, 0, 0);
551
556 VST_HOST_OPCODE_01 = 0x01,
559
566 VST_HOST_OPCODE_02 = 0x02, // bool cb(0, 0x02, 0, 0, 0);
569
574 VST_HOST_OPCODE_03 = 0x03,
577
578 VST_HOST_OPCODE_04 = 0x04,
579
580 //--------------------------------------------------------------------------------
581 // VST 2.x starts here.
582 //--------------------------------------------------------------------------------
583
584 VST_HOST_OPCODE_05 = 0x05,
585
586 VST_HOST_OPCODE_06 = 0x06,
587
588 VST_HOST_OPCODE_07 = 0x07,
589
590 VST_HOST_OPCODE_08 = 0x08,
591
592 VST_HOST_OPCODE_09 = 0x09,
593
594 VST_HOST_OPCODE_0A = 0x0A,
595
596 VST_HOST_OPCODE_0B = 0x0B,
597
598 VST_HOST_OPCODE_0C = 0x0C,
599
600 VST_HOST_OPCODE_0D = 0x0D,
601
612 VST_HOST_OPCODE_0E = 0x0E,
615
616 VST_HOST_OPCODE_0F = 0x0F,
617
618 VST_HOST_OPCODE_10 = 0x10,
619
620 VST_HOST_OPCODE_11 = 0x11,
621
622 VST_HOST_OPCODE_12 = 0x12,
623
624 VST_HOST_OPCODE_13 = 0x13,
625
626 VST_HOST_OPCODE_14 = 0x14,
627
628 VST_HOST_OPCODE_15 = 0x15,
629
630 VST_HOST_OPCODE_16 = 0x16,
631
632 VST_HOST_OPCODE_17 = 0x17,
633
634 VST_HOST_OPCODE_18 = 0x18,
635
636 VST_HOST_OPCODE_19 = 0x19,
637
638 VST_HOST_OPCODE_1A = 0x1A,
639
640 VST_HOST_OPCODE_1B = 0x1B,
641
642 VST_HOST_OPCODE_1C = 0x1C,
643
644 VST_HOST_OPCODE_1D = 0x1D,
645
646 VST_HOST_OPCODE_1E = 0x1E,
647
648 VST_HOST_OPCODE_1F = 0x1F,
649
650 VST_HOST_OPCODE_20 = 0x20,
651
656 VST_HOST_OPCODE_21 = 0x21,
659
664 VST_HOST_OPCODE_22 = 0x22,
667
672 VST_HOST_OPCODE_23 = 0x23,
675
679 VST_HOST_OPCODE_24 = 0x24,
682
683 VST_HOST_OPCODE_25 = 0x25,
684
690 VST_HOST_OPCODE_26 = 0x26,
693
694 VST_HOST_OPCODE_27 = 0x27,
695
696 VST_HOST_OPCODE_28 = 0x28,
697
698 VST_HOST_OPCODE_29 = 0x29,
699
703 VST_HOST_OPCODE_2A = 0x2A,
706
711 VST_HOST_OPCODE_2B = 0x2B,
714
719 VST_HOST_OPCODE_2C = 0x2C,
722
723 VST_HOST_OPCODE_2D = 0x2D,
724 VST_HOST_OPCODE_2E = 0x2E,
725 VST_HOST_OPCODE_2F = 0x2F,
726
727 // Highest number of known OPCODE.
729
730 // Pad to force 32-bit number.
731 _VST_HOST_OPCODE_PAD = 0xFFFFFFFFul,
732};
@ VST_HOST_OPCODE_28
Definition vst.h:696
@ VST_HOST_OPCODE_04
Definition vst.h:578
@ VST_HOST_OPCODE_18
Definition vst.h:634
@ VST_HOST_OPCODE_EDITOR_UPDATE
Definition vst.h:705
@ VST_HOST_OPCODE_PARAM_START_EDIT
Definition vst.h:713
@ VST_HOST_OPCODE_PARAM_STOP_EDIT
Definition vst.h:721
@ VST_HOST_OPCODE_06
Definition vst.h:586
@ VST_HOST_OPCODE_1A
Definition vst.h:638
@ VST_HOST_OPCODE_0F
Definition vst.h:616
@ VST_HOST_OPCODE_2F
Definition vst.h:725
@ VST_HOST_OPCODE_IO_MODIFIED
Definition vst.h:614
@ VST_HOST_OPCODE_1B
Definition vst.h:640
@ VST_HOST_OPCODE_12
Definition vst.h:622
@ VST_HOST_OPCODE_KEEPALIVE_OR_IDLE
Definition vst.h:576
@ VST_HOST_OPCODE_07
Definition vst.h:588
@ VST_HOST_OPCODE_1C
Definition vst.h:642
@ VST_HOST_OPCODE_08
Definition vst.h:590
@ VST_HOST_OPCODE_27
Definition vst.h:694
@ VST_HOST_OPCODE_20
Definition vst.h:650
@ VST_HOST_OPCODE_2B
Notify host that a parameter is being edited.
Definition vst.h:711
@ VST_HOST_OPCODE_16
Definition vst.h:630
@ VST_HOST_OPCODE_25
Definition vst.h:683
@ VST_HOST_OPCODE_1D
Definition vst.h:644
@ VST_HOST_OPCODE_23
Retrieve the vendor version in return value.
Definition vst.h:672
@ VST_HOST_OPCODE_15
Definition vst.h:628
@ VST_HOST_OPCODE_24
User defined OP Code, for custom interaction.
Definition vst.h:679
@ VST_HOST_OPCODE_19
Definition vst.h:636
@ VST_HOST_OPCODE_05
Definition vst.h:584
@ VST_HOST_OPCODE_1E
Definition vst.h:646
@ VST_HOST_OPCODE_29
Definition vst.h:698
@ VST_HOST_OPCODE_01
Retrieve the Hosts VST Version.
Definition vst.h:556
@ VST_HOST_OPCODE_AUTOMATE
Definition vst.h:548
@ VST_HOST_OPCODE_0A
Definition vst.h:594
@ VST_HOST_OPCODE_26
Check if the host supports a certain feature.
Definition vst.h:690
@ VST_HOST_OPCODE_11
Definition vst.h:620
@ VST_HOST_OPCODE_0C
Definition vst.h:598
@ VST_HOST_OPCODE_10
Definition vst.h:618
@ VST_HOST_OPCODE_2C
Notify host that parameter is no longer being edited.
Definition vst.h:719
@ VST_HOST_OPCODE_13
Definition vst.h:624
@ VST_HOST_OPCODE_0E
Notify the host that numInputs/numOutputs/delay/numParams has changed.
Definition vst.h:612
@ VST_HOST_OPCODE_2D
Definition vst.h:723
@ VST_HOST_OPCODE_0D
Definition vst.h:600
@ VST_HOST_OPCODE_00
Update automation for a given Parameter.
Definition vst.h:546
@ VST_HOST_OPCODE_17
Definition vst.h:632
@ VST_HOST_OPCODE_03
Some sort of idle keep-alive?
Definition vst.h:574
@ VST_HOST_OPCODE_PRODUCT_NAME
Definition vst.h:666
@ VST_HOST_OPCODE_2A
Request an update of the editor window.
Definition vst.h:703
@ VST_HOST_OPCODE_02
Get the currently selected effect id in container plug-ins.
Definition vst.h:566
@ VST_HOST_OPCODE_VENDOR_VERSION
Definition vst.h:674
@ VST_HOST_OPCODE_14
Definition vst.h:626
@ VST_HOST_OPCODE_VENDOR_NAME
Definition vst.h:658
@ VST_HOST_OPCODE_2E
Definition vst.h:724
@ VST_HOST_OPCODE_MAX
Definition vst.h:728
@ VST_HOST_OPCODE_22
Retrieve the product name into the ptr buffer.
Definition vst.h:664
@ _VST_HOST_OPCODE_PAD
Definition vst.h:731
@ VST_HOST_OPCODE_21
Retrieve the vendor name into the ptr buffer.
Definition vst.h:656
@ VST_HOST_OPCODE_CUSTOM
Definition vst.h:681
@ VST_HOST_OPCODE_PARAM_UPDATE
Definition vst.h:550
@ VST_HOST_OPCODE_1F
Definition vst.h:648
@ VST_HOST_OPCODE_0B
Definition vst.h:596
@ VST_HOST_OPCODE_09
Definition vst.h:592

◆ VST_PARAMETER_FLAG

Flags for parameters.

See also
vst_parameter_properties_t
Enumerator
VST_PARAMETER_FLAG_1ls0 

Parameter is an on/off switch.

Note
Ignored if VST_EFFECT_FLAG_EDITOR is set.
VST_PARAMETER_FLAG_SWITCH 
See also
VST_PARAMETER_FLAG_1ls0
VST_PARAMETER_FLAG_1ls1 

Parameter limits are set as integers.

Note
Ignored if VST_EFFECT_FLAG_EDITOR is set.
VST_PARAMETER_FLAG_INTEGER_LIMITS 
See also
VST_PARAMETER_FLAG_1ls1
VST_PARAMETER_FLAG_1ls2 

Parameter uses float steps.

Note
Ignored if VST_EFFECT_FLAG_EDITOR is set.
VST_PARAMETER_FLAG_STEP_FLOAT 
See also
VST_PARAMETER_FLAG_1ls2
VST_PARAMETER_FLAG_1ls3 

Parameter uses integer steps.

Note
Ignored if VST_EFFECT_FLAG_EDITOR is set.
VST_PARAMETER_FLAG_STEP_INT 
See also
VST_PARAMETER_FLAG_1ls3
VST_PARAMETER_FLAG_1ls4 

Parameter has an display order index for the default editor.

Note
Ignored if VST_EFFECT_FLAG_EDITOR is set.
VST_PARAMETER_FLAG_INDEX 
See also
VST_PARAMETER_FLAG_1ls4
VST_PARAMETER_FLAG_1ls5 

Parameter has a category for the default editor.

Note
Ignored if VST_EFFECT_FLAG_EDITOR is set.
VST_PARAMETER_FLAG_CATEGORY 
See also
VST_PARAMETER_FLAG_1ls5
VST_PARAMETER_FLAG_1ls6 

Parameter can be gradually increased/decreased.

See also
VST_EFFECT_OPCODE_PARAM_IS_AUTOMATABLE
VST_PARAMETER_FLAG_RAMPING 
See also
VST_PARAMETER_FLAG_1ls6
_VST_PARAMETER_FLAG_PAD 

Definition at line 162 of file vst.h.

162 {
170
178
186
194
202
210
218
219 _VST_PARAMETER_FLAG_PAD = 0xFFFFFFFFul,
220};
@ VST_PARAMETER_FLAG_SWITCH
Definition vst.h:169
@ VST_PARAMETER_FLAG_1ls6
Parameter can be gradually increased/decreased.
Definition vst.h:215
@ VST_PARAMETER_FLAG_1ls5
Parameter has a category for the default editor.
Definition vst.h:207
@ VST_PARAMETER_FLAG_1ls4
Parameter has an display order index for the default editor.
Definition vst.h:199
@ VST_PARAMETER_FLAG_1ls2
Parameter uses float steps.
Definition vst.h:183
@ VST_PARAMETER_FLAG_INTEGER_LIMITS
Definition vst.h:177
@ VST_PARAMETER_FLAG_STEP_FLOAT
Definition vst.h:185
@ VST_PARAMETER_FLAG_INDEX
Definition vst.h:201
@ VST_PARAMETER_FLAG_CATEGORY
Definition vst.h:209
@ VST_PARAMETER_FLAG_RAMPING
Definition vst.h:217
@ VST_PARAMETER_FLAG_1ls3
Parameter uses integer steps.
Definition vst.h:191
@ VST_PARAMETER_FLAG_1ls0
Parameter is an on/off switch.
Definition vst.h:167
@ VST_PARAMETER_FLAG_STEP_INT
Definition vst.h:193
@ VST_PARAMETER_FLAG_1ls1
Parameter limits are set as integers.
Definition vst.h:175
@ _VST_PARAMETER_FLAG_PAD
Definition vst.h:219

◆ VST_SPEAKER_ARRANGEMENT_TYPE

Enumerator
VST_SPEAKER_ARRANGEMENT_TYPE_CUSTOM 

Custom speaker arrangement.

Accidentally discovered through random testing.

VST_SPEAKER_ARRANGEMENT_TYPE_UNKNOWN 

Unknown/Empty speaker layout.

VST_SPEAKER_ARRANGEMENT_TYPE_MONO 

Mono.

VST_SPEAKER_ARRANGEMENT_TYPE_STEREO 

Stereo.

VST_SPEAKER_ARRANGEMENT_TYPE_4_0 

Quadraphonic.

VST_SPEAKER_ARRANGEMENT_TYPE_5_0 

5.0 (Old Surround)

L, R, C, RL, RR

VST_SPEAKER_ARRANGEMENT_TYPE_5_1 

5.1 (Old Surround)

L, R, C, LFE, RL, RR

VST_SPEAKER_ARRANGEMENT_TYPE_7_1 

7.1 (Full Surround)

L, R, C, LFE, SL, SR, RL, RR

_VST_SPEAKER_ARRANGEMENT_TYPE_PAD 

Definition at line 434 of file vst.h.

434 {
440
444
448
452
456
462
468
474
475 // Pad to force 32-bit number.
477};
@ VST_SPEAKER_ARRANGEMENT_TYPE_7_1
7.1 (Full Surround)
Definition vst.h:473
@ VST_SPEAKER_ARRANGEMENT_TYPE_UNKNOWN
Unknown/Empty speaker layout.
Definition vst.h:443
@ _VST_SPEAKER_ARRANGEMENT_TYPE_PAD
Definition vst.h:476
@ VST_SPEAKER_ARRANGEMENT_TYPE_5_1
5.1 (Old Surround)
Definition vst.h:467
@ VST_SPEAKER_ARRANGEMENT_TYPE_CUSTOM
Custom speaker arrangement.
Definition vst.h:439
@ VST_SPEAKER_ARRANGEMENT_TYPE_MONO
Mono.
Definition vst.h:447
@ VST_SPEAKER_ARRANGEMENT_TYPE_STEREO
Stereo.
Definition vst.h:451
@ VST_SPEAKER_ARRANGEMENT_TYPE_5_0
5.0 (Old Surround)
Definition vst.h:461
@ VST_SPEAKER_ARRANGEMENT_TYPE_4_0
Quadraphonic.
Definition vst.h:455

◆ VST_SPEAKER_TYPE

Enumerator
VST_SPEAKER_TYPE_MONO 
VST_SPEAKER_TYPE_LEFT 
VST_SPEAKER_TYPE_RIGHT 
VST_SPEAKER_TYPE_CENTER 
VST_SPEAKER_TYPE_LFE 
VST_SPEAKER_TYPE_LEFT_REAR 
VST_SPEAKER_TYPE_RIGHT_REAR 
VST_SPEAKER_TYPE_LEFT_SIDE 
VST_SPEAKER_TYPE_RIGHT_SIDE 
VST_SPEAKER_TYPE_USER_32 
VST_SPEAKER_TYPE_USER_31 
VST_SPEAKER_TYPE_USER_30 
VST_SPEAKER_TYPE_USER_29 
VST_SPEAKER_TYPE_USER_28 
VST_SPEAKER_TYPE_USER_27 
VST_SPEAKER_TYPE_USER_26 
VST_SPEAKER_TYPE_USER_25 
VST_SPEAKER_TYPE_USER_24 
VST_SPEAKER_TYPE_USER_23 
VST_SPEAKER_TYPE_USER_22 
VST_SPEAKER_TYPE_USER_21 
VST_SPEAKER_TYPE_USER_20 
VST_SPEAKER_TYPE_USER_19 
VST_SPEAKER_TYPE_USER_18 
VST_SPEAKER_TYPE_USER_17 
VST_SPEAKER_TYPE_USER_16 
VST_SPEAKER_TYPE_USER_15 
VST_SPEAKER_TYPE_USER_14 
VST_SPEAKER_TYPE_USER_13 
VST_SPEAKER_TYPE_USER_12 
VST_SPEAKER_TYPE_USER_11 
VST_SPEAKER_TYPE_USER_10 
VST_SPEAKER_TYPE_USER_09 
VST_SPEAKER_TYPE_USER_08 
VST_SPEAKER_TYPE_USER_07 
VST_SPEAKER_TYPE_USER_06 
VST_SPEAKER_TYPE_USER_05 
VST_SPEAKER_TYPE_USER_04 
VST_SPEAKER_TYPE_USER_03 
VST_SPEAKER_TYPE_USER_02 
VST_SPEAKER_TYPE_USER_01 
_VST_SPEAKER_TYPE_PAD 

Definition at line 332 of file vst.h.

332 {
333 // Default Types
339 VST_SPEAKER_TYPE_LEFT_REAR = 5, // Rear/Surround Left
340 VST_SPEAKER_TYPE_RIGHT_REAR = 6, // Rear/Surround Right
341 // 7
342 // 8
343 // 9
344 VST_SPEAKER_TYPE_LEFT_SIDE = 10, // Side Left
345 VST_SPEAKER_TYPE_RIGHT_SIDE = 11, // Side Right
346 // 12
347 // 13
348 // 14
349 // 15
350 // ...
351
352 // User Types (seen rarely, but never exceeds -32)
385
386
387 // Pad to force 32-bit number.
388 _VST_SPEAKER_TYPE_PAD = 0xFFFFFFFFul,
389};
@ VST_SPEAKER_TYPE_RIGHT_REAR
Definition vst.h:340
@ _VST_SPEAKER_TYPE_PAD
Definition vst.h:388
@ VST_SPEAKER_TYPE_RIGHT
Definition vst.h:336
@ VST_SPEAKER_TYPE_CENTER
Definition vst.h:337
@ VST_SPEAKER_TYPE_LFE
Definition vst.h:338
@ VST_SPEAKER_TYPE_USER_09
Definition vst.h:376
@ VST_SPEAKER_TYPE_USER_25
Definition vst.h:360
@ VST_SPEAKER_TYPE_MONO
Definition vst.h:334
@ VST_SPEAKER_TYPE_USER_04
Definition vst.h:381
@ VST_SPEAKER_TYPE_USER_11
Definition vst.h:374
@ VST_SPEAKER_TYPE_USER_10
Definition vst.h:375
@ VST_SPEAKER_TYPE_USER_12
Definition vst.h:373
@ VST_SPEAKER_TYPE_USER_30
Definition vst.h:355
@ VST_SPEAKER_TYPE_USER_32
Definition vst.h:353
@ VST_SPEAKER_TYPE_USER_20
Definition vst.h:365
@ VST_SPEAKER_TYPE_USER_15
Definition vst.h:370
@ VST_SPEAKER_TYPE_RIGHT_SIDE
Definition vst.h:345
@ VST_SPEAKER_TYPE_LEFT_SIDE
Definition vst.h:344
@ VST_SPEAKER_TYPE_USER_13
Definition vst.h:372
@ VST_SPEAKER_TYPE_USER_02
Definition vst.h:383
@ VST_SPEAKER_TYPE_USER_23
Definition vst.h:362
@ VST_SPEAKER_TYPE_USER_28
Definition vst.h:357
@ VST_SPEAKER_TYPE_USER_05
Definition vst.h:380
@ VST_SPEAKER_TYPE_USER_01
Definition vst.h:384
@ VST_SPEAKER_TYPE_LEFT
Definition vst.h:335
@ VST_SPEAKER_TYPE_USER_07
Definition vst.h:378
@ VST_SPEAKER_TYPE_USER_27
Definition vst.h:358
@ VST_SPEAKER_TYPE_USER_18
Definition vst.h:367
@ VST_SPEAKER_TYPE_USER_29
Definition vst.h:356
@ VST_SPEAKER_TYPE_USER_21
Definition vst.h:364
@ VST_SPEAKER_TYPE_USER_06
Definition vst.h:379
@ VST_SPEAKER_TYPE_USER_26
Definition vst.h:359
@ VST_SPEAKER_TYPE_USER_19
Definition vst.h:366
@ VST_SPEAKER_TYPE_USER_31
Definition vst.h:354
@ VST_SPEAKER_TYPE_USER_24
Definition vst.h:361
@ VST_SPEAKER_TYPE_USER_22
Definition vst.h:363
@ VST_SPEAKER_TYPE_USER_17
Definition vst.h:368
@ VST_SPEAKER_TYPE_USER_08
Definition vst.h:377
@ VST_SPEAKER_TYPE_LEFT_REAR
Definition vst.h:339
@ VST_SPEAKER_TYPE_USER_14
Definition vst.h:371
@ VST_SPEAKER_TYPE_USER_16
Definition vst.h:369
@ VST_SPEAKER_TYPE_USER_03
Definition vst.h:382

◆ VST_STATUS

enum VST_STATUS

Known Status Codes.

Enumerator
VST_STATUS_0 

Unknown / False We either don't know the answer or we can't handle the data/notification.

See also
VST_HOST_OPCODE
VST_EFFECT_OPCODE
VST_STATUS_FALSE 
See also
VST_STATUS_0
VST_STATUS_ERROR 
See also
VST_STATUS_0
VST_STATUS_UNKNOWN 
See also
VST_STATUS_0
VST_STATUS_1 

Yes / True We've handled the data/notification.

See also
VST_HOST_OPCODE
VST_EFFECT_OPCODE
VST_STATUS_TRUE 
See also
VST_STATUS_1
VST_STATUS_SUCCESS 
See also
VST_STATUS_1
VST_STATUS_YES 
See also
VST_STATUS_1
VST_STATUS_m1 

No We're unable to handle the data/notification.

See also
VST_HOST_OPCODE
VST_EFFECT_OPCODE
VST_STATUS_NO 
See also
VST_STATUS_m1
_VST_STATUS_PAD 

Definition at line 58 of file vst.h.

58 {
65 VST_STATUS_0 = 0,
72
79 VST_STATUS_1 = 1,
86
93 VST_STATUS_m1 = -1,
95 VST_STATUS_NO = -1,
96
97 _VST_STATUS_PAD = 0xFFFFFFFFul,
98};
@ VST_STATUS_ERROR
Definition vst.h:69
@ VST_STATUS_0
Unknown / False We either don't know the answer or we can't handle the data/notification.
Definition vst.h:65
@ VST_STATUS_YES
Definition vst.h:85
@ VST_STATUS_m1
No We're unable to handle the data/notification.
Definition vst.h:93
@ VST_STATUS_1
Yes / True We've handled the data/notification.
Definition vst.h:79
@ _VST_STATUS_PAD
Definition vst.h:97
@ VST_STATUS_SUCCESS
Definition vst.h:83
@ VST_STATUS_FALSE
Definition vst.h:67
@ VST_STATUS_UNKNOWN
Definition vst.h:71
@ VST_STATUS_NO
Definition vst.h:95

◆ VST_STREAM_FLAG

Enumerator
VST_STREAM_FLAG_1ls0 

Ignored?

VST_STREAM_FLAG_1ls1 

Stream is in Stereo.

Can't be used with VST_STREAM_FLAG_USE_TYPE.

VST_STREAM_FLAG_STEREO 
VST_STREAM_FLAG_1ls2 

Stream is defined by VST_SPEAKER_ARRANGEMENT_TYPE.

Can't be used with VST_STREAM_FLAG_STEREO.

VST_STREAM_FLAG_USE_TYPE 

Definition at line 485 of file vst.h.

485 {
488 VST_STREAM_FLAG_1ls0 = 1 << 0,
489
494 VST_STREAM_FLAG_1ls1 = 1 << 1,
495 VST_STREAM_FLAG_STEREO = 1 << 1,
496
501 VST_STREAM_FLAG_1ls2 = 1 << 2,
503};
@ VST_STREAM_FLAG_STEREO
Definition vst.h:495
@ VST_STREAM_FLAG_1ls2
Stream is defined by VST_SPEAKER_ARRANGEMENT_TYPE.
Definition vst.h:501
@ VST_STREAM_FLAG_1ls0
Ignored?
Definition vst.h:488
@ VST_STREAM_FLAG_1ls1
Stream is in Stereo.
Definition vst.h:494
@ VST_STREAM_FLAG_USE_TYPE
Definition vst.h:502

◆ VST_VERSION

Valid VST 1.x and 2.x versions The format is either a single digit or four digits in Base10 format.

// Converts a Base10 VST version to a uint8_t[4] representation of the version.
uint32_t expand_vst_version(uint32_t v) {
if (v < 10) { //
return v << 24;
}
uint8_t major = v / 1000;
uint8_t minor = (v / 100) % 10;
uint8_t revision = (v / 10) % 10;
uint8_t patch = v % 10;
return (major << 24) | (minor << 16) | (revision << 8) | patch;
}
Enumerator
VST_VERSION_1 
VST_VERSION_1_0_0_0 
VST_VERSION_1_1_0_0 
VST_VERSION_2 
VST_VERSION_2_0_0_0 
VST_VERSION_2_1_0_0 
VST_VERSION_2_2_0_0 
VST_VERSION_2_3_0_0 
VST_VERSION_2_4_0_0 
_VST_VERSION_PAD 

Definition at line 134 of file vst.h.

134 {
135 VST_VERSION_1 = 0, // Anything before 2.0, used by official plug-ins.
136 VST_VERSION_1_0_0_0 = 1000, // 1.0, used by some third-party plug-ins.
137 VST_VERSION_1_1_0_0 = 1100, // 1.1, used by some third-party plug-ins.
138 VST_VERSION_2 = 2, // 2.0, used by official plug-ins.
139 VST_VERSION_2_0_0_0 = 2000, // 2.0, used by some third-party plug-ins.
140 VST_VERSION_2_1_0_0 = 2100, // 2.1
141 VST_VERSION_2_2_0_0 = 2200, // 2.2
142 VST_VERSION_2_3_0_0 = 2300, // 2.3
143 VST_VERSION_2_4_0_0 = 2400, // 2.4
144
145 // Pad to force 32-bit number.
146 _VST_VERSION_PAD = 0xFFFFFFFFul,
147};
@ VST_VERSION_1_1_0_0
Definition vst.h:137
@ VST_VERSION_2_1_0_0
Definition vst.h:140
@ VST_VERSION_2_0_0_0
Definition vst.h:139
@ _VST_VERSION_PAD
Definition vst.h:146
@ VST_VERSION_2
Definition vst.h:138
@ VST_VERSION_2_2_0_0
Definition vst.h:141
@ VST_VERSION_2_3_0_0
Definition vst.h:142
@ VST_VERSION_2_4_0_0
Definition vst.h:143
@ VST_VERSION_1_0_0_0
Definition vst.h:136
@ VST_VERSION_1
Definition vst.h:135