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_IO_MODIFIED = 0x0D ,
  VST_HOST_OPCODE_0E = 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_VENDOR_NAME = 0x20 ,
  VST_HOST_OPCODE_21 = 0x21 , VST_HOST_OPCODE_PRODUCT_NAME = 0x21 , VST_HOST_OPCODE_22 = 0x22 , VST_HOST_OPCODE_VENDOR_VERSION = 0x22 ,
  VST_HOST_OPCODE_23 = 0x23 , VST_HOST_OPCODE_CUSTOM = 0x23 , VST_HOST_OPCODE_24 = 0x24 , VST_HOST_OPCODE_25 = 0x25 ,
  VST_HOST_OPCODE_SUPPORTS = 0x25 , VST_HOST_OPCODE_26 = 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 841 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 834 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 2256 of file vst.h.

2265 { return VSTPluginMain(callback); }
2266
2273#define VST_ENTRYPOINT_MACOS \
2274 vst_effect_t* main_macho(vst_host_callback_t callback) { return VSTPluginMain(callback); }
2275
2282#define VST_ENTRYPOINT_MACOS_POWERPC \
2283 vst_effect_t* main(vst_host_callback_t callback) { return VSTPluginMain(callback); }
2284
2285#ifdef __cplusplus
2286}
2287#endif
2288#pragma pack(pop)
2289#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 2274 of file vst.h.

2275 { 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 2283 of file vst.h.

2284 { 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 2265 of file vst.h.

2266 { 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 827 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 2034 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 2061 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 2087 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 2074 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 2045 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 2053 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 817 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:2091
vst_effect_control_t control
Control Function.
Definition vst.h:2104
const char * shellCategory
Does the host support container plug-ins?
Definition vst.h:776
@ VST_HOST_OPCODE_CURRENT_EFFECT_ID
Definition vst.h:568
@ VST_HOST_OPCODE_SUPPORTS
Definition vst.h:690
@ VST_STATUS_TRUE
Definition vst.h:81
@ VST_EFFECT_CATEGORY_CONTAINER
Definition vst.h:1006
@ VST_EFFECT_OPCODE_CATEGORY
Definition vst.h:1517
@ VST_EFFECT_OPCODE_CONTAINER_NEXT_EFFECT_ID
Definition vst.h:1861

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:2256
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 848 of file vst.h.

848 {
850
859
868
878
887
896
905
907
917
924 VST_EFFECT_CATEGORY_OFFLINE = 0x09, // Offline Processing VST? Seems to receive all audio data prior to playback.
925
1007
1019
1021 VST_EFFECT_CATEGORY_MAX, // Not part of specification, marks maximum category.
1022
1024 _VST_EFFECT_CATEGORY_PAD = 0xFFFFFFFFul,
1025};
@ VST_EFFECT_CATEGORY_0A
Container Plug-in This plug-in contains multiple effects in one and requires special handling on both...
Definition vst.h:1004
@ VST_EFFECT_CATEGORY_EFFECT
Definition vst.h:858
@ VST_EFFECT_CATEGORY_02
Instruments Examples: Instruments, Synths, Samplers, ...
Definition vst.h:865
@ VST_EFFECT_CATEGORY_METERING
Definition vst.h:877
@ VST_EFFECT_CATEGORY_01
Generic Effects Examples: Distortion, Pitch Shift, ...
Definition vst.h:856
@ VST_EFFECT_CATEGORY_08
Restoration Examples: Noise Filtering, Upsamplers, ...
Definition vst.h:914
@ VST_EFFECT_CATEGORY_WAVEGENERATOR
Definition vst.h:1018
@ VST_EFFECT_CATEGORY_09
Offline Processing Examples: Nothing Supports: Nothing.
Definition vst.h:922
@ VST_EFFECT_CATEGORY_SPATIAL
Definition vst.h:895
@ VST_EFFECT_CATEGORY_07
Definition vst.h:906
@ VST_EFFECT_CATEGORY_06
Delay/Echo Examples: Echo, Reverb, Room Simulation, Delay, ...
Definition vst.h:902
@ VST_EFFECT_CATEGORY_OFFLINE
Definition vst.h:924
@ VST_EFFECT_CATEGORY_0B
Waveform Generators Examples: Sine Wave Generator, ... Supports: Delay, Tail Samples.
Definition vst.h:1016
@ VST_EFFECT_CATEGORY_05
Spatializers Examples: Channel Panning, Expanders, ...
Definition vst.h:893
@ VST_EFFECT_CATEGORY_MASTERING
Definition vst.h:886
@ VST_EFFECT_CATEGORY_RESTORATION
Definition vst.h:916
@ VST_EFFECT_CATEGORY_UNCATEGORIZED
Definition vst.h:849
@ VST_EFFECT_CATEGORY_03
Metering Examples: Loudness Meters, Volume Analysis, ...
Definition vst.h:875
@ VST_EFFECT_CATEGORY_INSTRUMENT
Definition vst.h:867
@ VST_EFFECT_CATEGORY_DELAY_OR_ECHO
Definition vst.h:904
@ VST_EFFECT_CATEGORY_04
Mastering Examples: Compressors, Limiters, ...
Definition vst.h:884

◆ 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 1029 of file vst.h.

1029 {
1049 VST_EFFECT_FLAG_1ls0 = 1 << 0,
1051 VST_EFFECT_FLAG_EDITOR = 1 << 0,
1052
1053 //1 << 1,
1054 //1 << 2, // Only seen when the plug-in responds to VST_EFFECT_OPCODE_09. Seems to be ignored by hosts entirely.
1055 //1 << 3, // Only seen when the plug-in behaves differently in mono mode. Seems to be ignored by hosts entirely.
1056
1063 VST_EFFECT_FLAG_1ls4 = 1 << 4,
1066
1073 VST_EFFECT_FLAG_1ls5 = 1 << 5,
1075 VST_EFFECT_FLAG_CHUNKS = 1 << 5,
1076
1077 //1 << 6,
1078 //1 << 7,
1079
1085 VST_EFFECT_FLAG_1ls8 = 1 << 8,
1088
1095 VST_EFFECT_FLAG_1ls9 = 1 << 9,
1098
1099 //1 << 10,
1100 //1 << 11,
1101
1109 VST_EFFECT_FLAG_1ls12 = 1 << 12,
1112};
@ VST_EFFECT_FLAG_SILENT_TAIL
Definition vst.h:1097
@ VST_EFFECT_FLAG_1ls9
Effect does not produce tail samples when the input is silent.
Definition vst.h:1095
@ VST_EFFECT_FLAG_CHUNKS
Definition vst.h:1075
@ VST_EFFECT_FLAG_1ls4
Effect uses process_float.
Definition vst.h:1063
@ VST_EFFECT_FLAG_1ls5
Effect supports saving/loading programs/banks from unformatted chunk data.
Definition vst.h:1073
@ VST_EFFECT_FLAG_EDITOR
Definition vst.h:1051
@ VST_EFFECT_FLAG_SUPPORTS_FLOAT
Definition vst.h:1065
@ VST_EFFECT_FLAG_1ls0
Effect provides a custom editor.
Definition vst.h:1049
@ VST_EFFECT_FLAG_INSTRUMENT
Definition vst.h:1087
@ VST_EFFECT_FLAG_1ls12
Effect supports process_double.
Definition vst.h:1109
@ VST_EFFECT_FLAG_1ls8
Effect is an Instrument/Generator.
Definition vst.h:1085
@ VST_EFFECT_FLAG_SUPPORTS_DOUBLE
Definition vst.h:1111

◆ 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 1117 of file vst.h.

1117 {
1122 VST_EFFECT_OPCODE_00 = 0x00,
1127
1134 VST_EFFECT_OPCODE_01 = 0x01,
1137
1142 VST_EFFECT_OPCODE_02 = 0x02,
1147
1152 VST_EFFECT_OPCODE_03 = 0x03,
1157
1162 VST_EFFECT_OPCODE_04 = 0x04,
1167
1172 VST_EFFECT_OPCODE_05 = 0x05,
1177
1184 VST_EFFECT_OPCODE_06 = 0x06,
1191
1198 VST_EFFECT_OPCODE_07 = 0x07,
1207
1214 VST_EFFECT_OPCODE_08 = 0x08,
1221
1226 VST_EFFECT_OPCODE_09 = 0x09,
1227
1232 VST_EFFECT_OPCODE_0A = 0x0A,
1237
1242 VST_EFFECT_OPCODE_0B = 0x0B,
1247
1256 VST_EFFECT_OPCODE_0C = 0x0C,
1263
1270 VST_EFFECT_OPCODE_0D = 0x0D,
1277
1283 VST_EFFECT_OPCODE_0E = 0x0E,
1288
1293 VST_EFFECT_OPCODE_0F = 0x0F,
1298
1309 VST_EFFECT_OPCODE_10 = 0x10,
1314
1325 VST_EFFECT_OPCODE_11 = 0x11,
1330
1341 VST_EFFECT_OPCODE_12 = 0x12,
1346
1351 VST_EFFECT_OPCODE_13 = 0x13,
1354
1363 VST_EFFECT_OPCODE_14 = 0x14,
1364
1373 VST_EFFECT_OPCODE_15 = 0x15,
1374
1381 VST_EFFECT_OPCODE_16 = 0x16,
1384
1395 VST_EFFECT_OPCODE_17 = 0x17,
1398
1409 VST_EFFECT_OPCODE_18 = 0x18,
1412
1413 //--------------------------------------------------------------------------------
1414 // VST 2.x starts here.
1415 //--------------------------------------------------------------------------------
1416
1422 VST_EFFECT_OPCODE_19 = 0x19,
1423
1430 VST_EFFECT_OPCODE_1A = 0x1A,
1437
1445 VST_EFFECT_OPCODE_1B = 0x1B,
1450
1456 VST_EFFECT_OPCODE_1C = 0x1C,
1457
1463 VST_EFFECT_OPCODE_1D = 0x1D,
1464
1470 VST_EFFECT_OPCODE_1E = 0x1E,
1471
1477 VST_EFFECT_OPCODE_1F = 0x1F,
1478
1484 VST_EFFECT_OPCODE_20 = 0x20,
1485
1493 VST_EFFECT_OPCODE_21 = 0x21,
1496
1504 VST_EFFECT_OPCODE_22 = 0x22,
1507
1513 VST_EFFECT_OPCODE_23 = 0x23,
1518
1524 VST_EFFECT_OPCODE_24 = 0x24,
1525
1531 VST_EFFECT_OPCODE_25 = 0x25,
1532
1538 VST_EFFECT_OPCODE_26 = 0x26,
1539
1545 VST_EFFECT_OPCODE_27 = 0x27,
1546
1552 VST_EFFECT_OPCODE_28 = 0x28,
1553
1559 VST_EFFECT_OPCODE_29 = 0x29,
1560
1573 VST_EFFECT_OPCODE_2A = 0x2A,
1576
1581 VST_EFFECT_OPCODE_2B = 0x2B,
1582
1590 VST_EFFECT_OPCODE_2C = 0x2C,
1593
1601 VST_EFFECT_OPCODE_2D = 0x2D,
1608
1617 VST_EFFECT_OPCODE_2E = 0x2E,
1620
1626 VST_EFFECT_OPCODE_2F = 0x2F,
1631
1637 VST_EFFECT_OPCODE_30 = 0x30,
1642
1648 VST_EFFECT_OPCODE_31 = 0x31,
1653
1661 VST_EFFECT_OPCODE_32 = 0x32,
1664
1672 VST_EFFECT_OPCODE_33 = 0x33,
1675
1682 VST_EFFECT_OPCODE_34 = 0x34,
1687
1695 VST_EFFECT_OPCODE_35 = 0x35,
1698
1705 VST_EFFECT_OPCODE_36 = 0x36,
1706
1713 VST_EFFECT_OPCODE_37 = 0x37,
1714
1722 VST_EFFECT_OPCODE_38 = 0x38,
1727
1733 VST_EFFECT_OPCODE_39 = 0x39,
1734
1741 VST_EFFECT_OPCODE_3A = 0x3A,
1744
1745 //--------------------------------------------------------------------------------
1746 // VST 2.1
1747 //--------------------------------------------------------------------------------
1748
1757 VST_EFFECT_OPCODE_3B = 0x3B,
1760
1769 VST_EFFECT_OPCODE_3C = 0x3C,
1772
1778 VST_EFFECT_OPCODE_3D = 0x3D,
1779
1785 VST_EFFECT_OPCODE_3E = 0x3E,
1786
1792 VST_EFFECT_OPCODE_3F = 0x3F,
1793
1799 VST_EFFECT_OPCODE_40 = 0x40,
1800
1806 VST_EFFECT_OPCODE_41 = 0x41,
1807
1813 VST_EFFECT_OPCODE_42 = 0x42,
1814
1821 VST_EFFECT_OPCODE_43 = 0x43,
1824
1831 VST_EFFECT_OPCODE_44 = 0x44,
1834
1835 //--------------------------------------------------------------------------------
1836 // VST 2.3
1837 //--------------------------------------------------------------------------------
1838
1846 VST_EFFECT_OPCODE_45 = 0x45,
1849
1859 VST_EFFECT_OPCODE_46 = 0x46,
1862
1868 VST_EFFECT_OPCODE_47 = 0x47,
1871
1877 VST_EFFECT_OPCODE_48 = 0x48,
1880
1886 VST_EFFECT_OPCODE_49 = 0x49,
1887
1895 VST_EFFECT_OPCODE_4A = 0x4A,
1896
1905 VST_EFFECT_OPCODE_4B = 0x4B,
1908
1917 VST_EFFECT_OPCODE_4C = 0x4C,
1920
1921 //--------------------------------------------------------------------------------
1922 // VST 2.4
1923 //--------------------------------------------------------------------------------
1924
1930 VST_EFFECT_OPCODE_4D = 0x4D,
1931
1937 VST_EFFECT_OPCODE_4E = 0x4E,
1938
1944 VST_EFFECT_OPCODE_4F = 0x4F,
1945
1947 VST_EFFECT_OPCODE_MAX,
1948
1950 _VST_EFFECT_OPCODE_PAD = 0xFFFFFFFFul,
1951};
@ VST_EFFECT_OPCODE_WINDOW_MOUSE
Definition vst.h:1327
@ VST_EFFECT_OPCODE_2A
Host wants to change the speaker arrangement.
Definition vst.h:1573
@ VST_EFFECT_OPCODE_GETVENDORVERSION
Definition vst.h:1650
@ VST_EFFECT_OPCODE_20
Input disconnected.
Definition vst.h:1484
@ VST_EFFECT_OPCODE_14
Window Focus Event?
Definition vst.h:1363
@ VST_EFFECT_OPCODE_PARAM_VALUE_TO_STRING
Definition vst.h:1206
@ VST_EFFECT_OPCODE_PARAM_GETLABEL
Definition vst.h:1186
@ VST_EFFECT_OPCODE_4E
Definition vst.h:1937
@ VST_EFFECT_OPCODE_43
Host is starting to set up a program.
Definition vst.h:1821
@ VST_EFFECT_OPCODE_3E
Midi related.
Definition vst.h:1785
@ VST_EFFECT_OPCODE_32
User-defined Op-Code for VST extensions.
Definition vst.h:1661
@ VST_EFFECT_OPCODE_03
Get currently selected program number.
Definition vst.h:1152
@ VST_EFFECT_OPCODE_SET_CHUNK_DATA
Definition vst.h:1411
@ VST_EFFECT_OPCODE_21
Retrieve properties for the given input index.
Definition vst.h:1493
@ VST_EFFECT_OPCODE_PRODUCT_NAME
Definition vst.h:1641
@ VST_EFFECT_OPCODE_4B
Host wants to know if we can load the provided bank data.
Definition vst.h:1905
@ VST_EFFECT_OPCODE_PARAM_NAME
Definition vst.h:1220
@ VST_EFFECT_OPCODE_1C
Definition vst.h:1456
@ VST_EFFECT_OPCODE_41
Midi related.
Definition vst.h:1806
@ VST_EFFECT_OPCODE_SET_SAMPLE_RATE
Definition vst.h:1236
@ VST_EFFECT_OPCODE_CREATE
Definition vst.h:1124
@ VST_EFFECT_OPCODE_EDITOR_GET_RECT
Definition vst.h:1276
@ VST_EFFECT_OPCODE_SET_SPEAKER_ARRANGEMENT
Definition vst.h:1575
@ VST_EFFECT_OPCODE_PARAM_GETVALUE
Definition vst.h:1200
@ VST_EFFECT_OPCODE_PROGRAM_SET_NAME
Definition vst.h:1166
@ VST_EFFECT_OPCODE_06
Get the value? label for the parameter.
Definition vst.h:1184
@ VST_EFFECT_OPCODE_0A
Set the new sample rate for the plugin to use.
Definition vst.h:1232
@ VST_EFFECT_OPCODE_10
Window Draw Event?
Definition vst.h:1309
@ VST_EFFECT_OPCODE_2F
Retrieve the vendor name into the ptr buffer.
Definition vst.h:1626
@ VST_EFFECT_OPCODE_PROGRAM_GET
Definition vst.h:1156
@ VST_EFFECT_OPCODE_28
Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.
Definition vst.h:1552
@ VST_EFFECT_OPCODE_4D
Definition vst.h:1930
@ VST_EFFECT_OPCODE_01
Destroy the effect (if there is any) and free its memory.
Definition vst.h:1134
@ VST_EFFECT_OPCODE_3C
Editor Virtual Key Up Event.
Definition vst.h:1769
@ VST_EFFECT_OPCODE_1B
Set Parameter value from string representation.
Definition vst.h:1445
@ VST_EFFECT_OPCODE_SET_BLOCK_SIZE
Definition vst.h:1246
@ VST_EFFECT_OPCODE_IDLE
Definition vst.h:1697
@ VST_EFFECT_OPCODE_33
Test for support of a specific named feature.
Definition vst.h:1672
@ VST_EFFECT_OPCODE_04
Set the name of the currently selected program.
Definition vst.h:1162
@ VST_EFFECT_OPCODE_09
Definition vst.h:1226
@ VST_EFFECT_OPCODE_PARAM_GET_NAME
Definition vst.h:1218
@ VST_EFFECT_OPCODE_BANK_LOAD
Definition vst.h:1907
@ VST_EFFECT_OPCODE_EDITOR_MOUSE
Definition vst.h:1329
@ VST_EFFECT_OPCODE_WINDOW_CREATE
Definition vst.h:1285
@ 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:1242
@ VST_EFFECT_OPCODE_PARAM_GET_VALUE
Definition vst.h:1202
@ VST_EFFECT_OPCODE_39
Definition vst.h:1733
@ VST_EFFECT_OPCODE_05
Get the name of the currently selected program.
Definition vst.h:1172
@ VST_EFFECT_OPCODE_1A
Can the parameter be automated?
Definition vst.h:1430
@ VST_EFFECT_OPCODE_19
Appears to be related to midi and audio events.
Definition vst.h:1422
@ VST_EFFECT_OPCODE_PROGRAM_SET_END
Definition vst.h:1833
@ VST_EFFECT_OPCODE_GET_PROGRAM
Definition vst.h:1154
@ VST_EFFECT_OPCODE_12
Window Keyboard Event?
Definition vst.h:1341
@ VST_EFFECT_OPCODE_42
Midi related.
Definition vst.h:1813
@ VST_EFFECT_OPCODE_EFFECT_CATEGORY
Definition vst.h:1515
@ VST_EFFECT_OPCODE_PARAM_IS_AUTOMATABLE
Definition vst.h:1434
@ VST_EFFECT_OPCODE_WINDOW_DRAW
Definition vst.h:1311
@ VST_EFFECT_OPCODE_DESTROY
Definition vst.h:1136
@ VST_EFFECT_OPCODE_SETBLOCKSIZE
Definition vst.h:1244
@ VST_EFFECT_OPCODE_02
Set which program number is currently select.
Definition vst.h:1142
@ VST_EFFECT_OPCODE_48
End processing of audio.
Definition vst.h:1877
@ VST_EFFECT_OPCODE_GETNAME2
Definition vst.h:1639
@ VST_EFFECT_OPCODE_CUSTOM
Definition vst.h:1663
@ VST_EFFECT_OPCODE_2E
Translate an error code to a string.
Definition vst.h:1617
@ VST_EFFECT_OPCODE_3D
Definition vst.h:1778
@ VST_EFFECT_OPCODE_EDITOR_KEEP_ALIVE
Definition vst.h:1353
@ VST_EFFECT_OPCODE_PARAM_PROPERTIES
Definition vst.h:1726
@ VST_EFFECT_OPCODE_TAIL_SAMPLES
Definition vst.h:1686
@ VST_EFFECT_OPCODE_30
Retrieve the product name into the ptr buffer.
Definition vst.h:1637
@ VST_EFFECT_OPCODE_PARAM_VALUE
Definition vst.h:1204
@ VST_EFFECT_OPCODE_35
Notify effect that it is idle?
Definition vst.h:1695
@ VST_EFFECT_OPCODE_PROGRAM_GET_NAME
Definition vst.h:1176
@ VST_EFFECT_OPCODE_0D
Retrieve the client rect size of the plugins window.
Definition vst.h:1270
@ VST_EFFECT_OPCODE_1E
Definition vst.h:1470
@ VST_EFFECT_OPCODE_PROGRAM_LOAD
Definition vst.h:1919
@ VST_EFFECT_OPCODE_23
Retrieve category of this effect.
Definition vst.h:1513
@ VST_EFFECT_OPCODE_VST_VERSION
Definition vst.h:1743
@ VST_EFFECT_OPCODE_36
Definition vst.h:1705
@ VST_EFFECT_OPCODE_EDITOR_OPEN
Definition vst.h:1287
@ VST_EFFECT_OPCODE_EDITOR_VKEY_DOWN
Definition vst.h:1759
@ VST_EFFECT_OPCODE_00
Create/Initialize the effect (if it has not been created already).
Definition vst.h:1122
@ VST_EFFECT_OPCODE_2B
Definition vst.h:1581
@ VST_EFFECT_OPCODE_SUSPEND_RESUME
Definition vst.h:1260
@ VST_EFFECT_OPCODE_24
Definition vst.h:1524
@ VST_EFFECT_OPCODE_PARAM_LABEL
Definition vst.h:1190
@ VST_EFFECT_OPCODE_40
Midi related.
Definition vst.h:1799
@ VST_EFFECT_OPCODE_22
Retrieve properties for the given output index.
Definition vst.h:1504
@ VST_EFFECT_OPCODE_4F
Definition vst.h:1944
@ VST_EFFECT_OPCODE_47
Begin processing of audio.
Definition vst.h:1868
@ VST_EFFECT_OPCODE_38
Parameter Properties.
Definition vst.h:1722
@ VST_EFFECT_OPCODE_GET_SPEAKER_ARRANGEMENT
Definition vst.h:1848
@ VST_EFFECT_OPCODE_0E
Create the window for the plugin.
Definition vst.h:1283
@ VST_EFFECT_OPCODE_3B
Editor Virtual Key Down Input.
Definition vst.h:1757
@ VST_EFFECT_OPCODE_BYPASS
Definition vst.h:1592
@ VST_EFFECT_OPCODE_EDITOR_KEYBOARD
Definition vst.h:1345
@ VST_EFFECT_OPCODE_INPUT_GET_PROPERTIES
Definition vst.h:1495
@ VST_EFFECT_OPCODE_VENDOR_NAME
Definition vst.h:1630
@ VST_EFFECT_OPCODE_PARAM_ISAUTOMATABLE
Definition vst.h:1432
@ VST_EFFECT_OPCODE_WINDOW_KEYBOARD
Definition vst.h:1343
@ VST_EFFECT_OPCODE_GET_PROGRAM_NAME
Definition vst.h:1174
@ VST_EFFECT_OPCODE_17
Get Chunk Data.
Definition vst.h:1395
@ VST_EFFECT_OPCODE_31
Retrieve the vendor version in return value.
Definition vst.h:1648
@ VST_EFFECT_OPCODE_2D
Retrieve the effect name into the ptr buffer.
Definition vst.h:1601
@ VST_EFFECT_OPCODE_07
Get the string representing the value for the parameter.
Definition vst.h:1198
@ VST_EFFECT_OPCODE_PROCESS_END
Definition vst.h:1879
@ VST_EFFECT_OPCODE_SET_PROGRAM
Definition vst.h:1144
@ VST_EFFECT_OPCODE_27
Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.
Definition vst.h:1545
@ VST_EFFECT_OPCODE_EDITOR_DRAW
Definition vst.h:1313
@ VST_EFFECT_OPCODE_15
Window Unfocus Event?
Definition vst.h:1373
@ VST_EFFECT_OPCODE_49
Definition vst.h:1886
@ VST_EFFECT_OPCODE_NAME
Definition vst.h:1607
@ VST_EFFECT_OPCODE_EDITOR_CLOSE
Definition vst.h:1297
@ VST_EFFECT_OPCODE_29
Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.
Definition vst.h:1559
@ VST_EFFECT_OPCODE_3A
Retrieve the VST Version supported.
Definition vst.h:1741
@ VST_EFFECT_OPCODE_11
Window Mouse Event?
Definition vst.h:1325
@ VST_EFFECT_OPCODE_PARAM_GET_LABEL
Definition vst.h:1188
@ VST_EFFECT_OPCODE_SETSAMPLERATE
Definition vst.h:1234
@ VST_EFFECT_OPCODE_0F
Destroy the plugins window.
Definition vst.h:1293
@ VST_EFFECT_OPCODE_GET_CHUNK_DATA
Definition vst.h:1397
@ VST_EFFECT_OPCODE_INITIALIZE
Definition vst.h:1126
@ VST_EFFECT_OPCODE_GETTAILSAMPLES
Definition vst.h:1684
@ VST_EFFECT_OPCODE_18
Set Chunk Data.
Definition vst.h:1409
@ VST_EFFECT_OPCODE_EFFECT_NAME
Definition vst.h:1605
@ VST_EFFECT_OPCODE_GET_PARAMETER_PROPERTIES
Definition vst.h:1724
@ VST_EFFECT_OPCODE_PARAM_AUTOMATABLE
Definition vst.h:1436
@ VST_EFFECT_OPCODE_PARAM_GETNAME
Definition vst.h:1216
@ VST_EFFECT_OPCODE_4A
Definition vst.h:1895
@ VST_EFFECT_OPCODE_08
Get the name for the parameter.
Definition vst.h:1214
@ VST_EFFECT_OPCODE_13
Window/Editor Idle/Keep-Alive Callback?
Definition vst.h:1351
@ VST_EFFECT_OPCODE_45
Host wants to know the current speaker arrangement.
Definition vst.h:1846
@ VST_EFFECT_OPCODE_WINDOW_GETRECT
Definition vst.h:1272
@ VST_EFFECT_OPCODE_OUTPUT_GET_PROPERTIES
Definition vst.h:1506
@ VST_EFFECT_OPCODE_PARAM_VALUE_FROM_STRING
Definition vst.h:1449
@ VST_EFFECT_OPCODE_GETVENDOR
Definition vst.h:1628
@ VST_EFFECT_OPCODE_PROCESS_BEGIN
Definition vst.h:1870
@ VST_EFFECT_OPCODE_1D
Definition vst.h:1463
@ VST_EFFECT_OPCODE_PAUSE_UNPAUSE
Definition vst.h:1258
@ VST_EFFECT_OPCODE_4C
Host wants to know if we can load the provided program data.
Definition vst.h:1917
@ VST_EFFECT_OPCODE_26
Seen in plug-ins with VST_EFFECT_CATEGORY_OFFLINE.
Definition vst.h:1538
@ VST_EFFECT_OPCODE_GETNAME
Definition vst.h:1603
@ VST_EFFECT_OPCODE_VENDOR_VERSION
Definition vst.h:1652
@ VST_EFFECT_OPCODE_46
Get the next effect contained in this effect.
Definition vst.h:1859
@ VST_EFFECT_OPCODE_SET_PROGRAM_NAME
Definition vst.h:1164
@ VST_EFFECT_OPCODE_FOURCC
Definition vst.h:1383
@ VST_EFFECT_OPCODE_37
Definition vst.h:1713
@ VST_EFFECT_OPCODE_44
Host is done setting up a program.
Definition vst.h:1831
@ VST_EFFECT_OPCODE_3F
Midi related.
Definition vst.h:1792
@ VST_EFFECT_OPCODE_WINDOW_DESTROY
Definition vst.h:1295
@ VST_EFFECT_OPCODE_EDITOR_VKEY_UP
Definition vst.h:1771
@ VST_EFFECT_OPCODE_1F
Input connected.
Definition vst.h:1477
@ VST_EFFECT_OPCODE_34
Number of samples that are at the tail at the end of playback.
Definition vst.h:1682
@ VST_EFFECT_OPCODE_2C
Enable/Disable bypassing the effect.
Definition vst.h:1590
@ VST_EFFECT_OPCODE_PROGRAM_SET
Definition vst.h:1146
@ VST_EFFECT_OPCODE_SUPPORTS
Definition vst.h:1674
@ VST_EFFECT_OPCODE_PROGRAM_SET_BEGIN
Definition vst.h:1823
@ VST_EFFECT_OPCODE_16
Definition vst.h:1381
@ VST_EFFECT_OPCODE_TRANSLATE_ERROR
Definition vst.h:1619
@ VST_EFFECT_OPCODE_EDITOR_RECT
Definition vst.h:1274
@ VST_EFFECT_OPCODE_25
Definition vst.h:1531
@ VST_EFFECT_OPCODE_PARAM_SET_VALUE
Definition vst.h:1447
@ VST_EFFECT_OPCODE_SUSPEND
Definition vst.h:1262
@ VST_EFFECT_OPCODE_0C
Effect processing should be suspended/paused or resumed/unpaused.
Definition vst.h:1256

◆ 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 

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_0D
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 

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_20
VST_HOST_OPCODE_21 

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_21
VST_HOST_OPCODE_22 

Retrieve the vendor version in return value.

Returns
Version.
VST_HOST_OPCODE_VENDOR_VERSION 
See also
VST_HOST_OPCODE_22
VST_HOST_OPCODE_23 

User defined OP Code, for custom interaction.

VST_HOST_OPCODE_CUSTOM 
See also
VST_HOST_OPCODE_23
VST_HOST_OPCODE_24 
VST_HOST_OPCODE_25 

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_25
VST_HOST_OPCODE_26 
VST_HOST_OPCODE_27 

Crash the host if p_ptr isn't nullptr.

VST_HOST_OPCODE_28 

Crash the host if p_ptr isn't nullptr.

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
610 VST_HOST_OPCODE_0D = 0x0D,
613
614 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
654 VST_HOST_OPCODE_20 = 0x20,
657
662 VST_HOST_OPCODE_21 = 0x21,
665
670 VST_HOST_OPCODE_22 = 0x22,
673
677 VST_HOST_OPCODE_23 = 0x23,
680
681 VST_HOST_OPCODE_24 = 0x24,
682
688 VST_HOST_OPCODE_25 = 0x25,
691
692 VST_HOST_OPCODE_26 = 0x26,
693
695 VST_HOST_OPCODE_27 = 0x27,
696
698 VST_HOST_OPCODE_28 = 0x28,
699
700 VST_HOST_OPCODE_29 = 0x29,
701
705 VST_HOST_OPCODE_2A = 0x2A,
708
713 VST_HOST_OPCODE_2B = 0x2B,
716
721 VST_HOST_OPCODE_2C = 0x2C,
724
725 VST_HOST_OPCODE_2D = 0x2D,
726 VST_HOST_OPCODE_2E = 0x2E,
727 VST_HOST_OPCODE_2F = 0x2F,
728
729 // Highest number of known OPCODE.
731
732 // Pad to force 32-bit number.
733 _VST_HOST_OPCODE_PAD = 0xFFFFFFFFul,
734};
@ VST_HOST_OPCODE_28
Crash the host if p_ptr isn't nullptr.
Definition vst.h:698
@ VST_HOST_OPCODE_04
Definition vst.h:578
@ VST_HOST_OPCODE_18
Definition vst.h:634
@ VST_HOST_OPCODE_EDITOR_UPDATE
Definition vst.h:707
@ VST_HOST_OPCODE_PARAM_START_EDIT
Definition vst.h:715
@ VST_HOST_OPCODE_PARAM_STOP_EDIT
Definition vst.h:723
@ 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:727
@ VST_HOST_OPCODE_IO_MODIFIED
Definition vst.h:612
@ 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
Crash the host if p_ptr isn't nullptr.
Definition vst.h:695
@ VST_HOST_OPCODE_20
Retrieve the vendor name into the ptr buffer.
Definition vst.h:654
@ VST_HOST_OPCODE_2B
Notify host that a parameter is being edited.
Definition vst.h:713
@ VST_HOST_OPCODE_16
Definition vst.h:630
@ VST_HOST_OPCODE_25
Check if the host supports a certain feature.
Definition vst.h:688
@ VST_HOST_OPCODE_1D
Definition vst.h:644
@ VST_HOST_OPCODE_23
User defined OP Code, for custom interaction.
Definition vst.h:677
@ VST_HOST_OPCODE_15
Definition vst.h:628
@ VST_HOST_OPCODE_24
Definition vst.h:681
@ 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:700
@ 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
Definition vst.h:692
@ 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:721
@ VST_HOST_OPCODE_13
Definition vst.h:624
@ VST_HOST_OPCODE_0E
Definition vst.h:614
@ VST_HOST_OPCODE_2D
Definition vst.h:725
@ VST_HOST_OPCODE_0D
Notify the host that numInputs/numOutputs/delay/numParams has changed.
Definition vst.h:610
@ 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:664
@ VST_HOST_OPCODE_2A
Request an update of the editor window.
Definition vst.h:705
@ 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:672
@ VST_HOST_OPCODE_14
Definition vst.h:626
@ VST_HOST_OPCODE_VENDOR_NAME
Definition vst.h:656
@ VST_HOST_OPCODE_2E
Definition vst.h:726
@ VST_HOST_OPCODE_MAX
Definition vst.h:730
@ VST_HOST_OPCODE_22
Retrieve the vendor version in return value.
Definition vst.h:670
@ _VST_HOST_OPCODE_PAD
Definition vst.h:733
@ VST_HOST_OPCODE_21
Retrieve the product name into the ptr buffer.
Definition vst.h:662
@ VST_HOST_OPCODE_CUSTOM
Definition vst.h:679
@ 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