More effect parameters discovered through mass testing

Automatically testing thousands of plugins has its benefits.
This commit is contained in:
Xaymar
2025-08-05 02:14:45 +02:00
parent c5d209d605
commit 40a5fb8ff4
+77 -30
View File
@@ -38,6 +38,7 @@
// Common VST buffer lengths: // Common VST buffer lengths:
// 8: OpCodes(GetLabel, GetName, GetValue) // 8: OpCodes(GetLabel, GetName, GetValue)
#define VST_BUFFER_8 8 #define VST_BUFFER_8 8
#define VST_PARAM_BUFFER_SIZE VST_BUFFER_8
// 16: // 16:
#define VST_BUFFER_16 16 #define VST_BUFFER_16 16
// 24: OpCodes? // 24: OpCodes?
@@ -50,6 +51,7 @@
#define VST_VENDOR_BUFFER_SIZE VST_BUFFER_64 #define VST_VENDOR_BUFFER_SIZE VST_BUFFER_64
#define VST_PRODUCT_BUFFER_SIZE VST_BUFFER_64 #define VST_PRODUCT_BUFFER_SIZE VST_BUFFER_64
#define VST_NAME_BUFFER_SIZE VST_BUFFER_64 #define VST_NAME_BUFFER_SIZE VST_BUFFER_64
#define VST_PROGRAM_BUFFER_SIZE VST_BUFFER_64
// 100: // 100:
#define VST_BUFFER_100 100 #define VST_BUFFER_100 100
@@ -131,29 +133,32 @@ enum VST_EFFECT_OPCODE {
/* Set Program /* Set Program
* *
* Seems to be for presets? * Set which program number is currently selected.
* @param p_int2 The program number to set. Can be negative for some reason.
*/ */
VST_EFFECT_OPCODE_02 = 0x02, VST_EFFECT_OPCODE_02 = 0x02,
VST_EFFECT_OPCODE_SET_PROGRAM = 0x02, VST_EFFECT_OPCODE_SET_PROGRAM = 0x02,
/* Get Program /* Get Program
* *
* Seems to be for presets? * Get which program number is currently selected.
* @return The currently set program number. * @return The currently set program number. Can be negative for some reason.
*/ */
VST_EFFECT_OPCODE_03 = 0x03, VST_EFFECT_OPCODE_03 = 0x03,
VST_EFFECT_OPCODE_GET_PROGRAM = 0x03, VST_EFFECT_OPCODE_GET_PROGRAM = 0x03,
/* Set Program Name /* Set Program Name
* *
* @param * Set the name of the currently selected program.
* @param p_ptr `const char[VST_PROGRAM_BUFFER_SIZE]` Zero terminated string of at most VST_PROGRAM_BUFFER_SIZE bytes.
*/ */
VST_EFFECT_OPCODE_04 = 0x04, VST_EFFECT_OPCODE_04 = 0x04,
VST_EFFECT_OPCODE_SET_PROGRAM_NAME = 0x04, VST_EFFECT_OPCODE_SET_PROGRAM_NAME = 0x04,
/* Get Program Name /* Get Program Name
* *
* @param p_ptr `char[] * Get the name of the currently selected program.
* @param p_ptr `char[VST_PROGRAM_BUFFER_SIZE]` Zero terminated string of at most VST_PROGRAM_BUFFER_SIZE bytes.
*/ */
VST_EFFECT_OPCODE_05 = 0x05, VST_EFFECT_OPCODE_05 = 0x05,
VST_EFFECT_OPCODE_GET_PROGRAM_NAME = 0x05, VST_EFFECT_OPCODE_GET_PROGRAM_NAME = 0x05,
@@ -161,7 +166,7 @@ enum VST_EFFECT_OPCODE {
/* Get the value? label for the parameter. /* Get the value? label for the parameter.
* *
* @param p_int1 Parameter index. * @param p_int1 Parameter index.
* @param p_ptr 'char[8]' * @param p_ptr 'char[VST_PARAM_BUFFER_SIZE]'
* @return 0 on success, 1 on failure. * @return 0 on success, 1 on failure.
*/ */
VST_EFFECT_OPCODE_06 = 0x06, VST_EFFECT_OPCODE_06 = 0x06,
@@ -170,7 +175,7 @@ enum VST_EFFECT_OPCODE {
/* Get the string value for the parameter. /* Get the string value for the parameter.
* *
* @param p_int1 Parameter index. * @param p_int1 Parameter index.
* @param p_ptr 'char[8]' * @param p_ptr 'char[VST_PARAM_BUFFER_SIZE]'
* @return 0 on success, 1 on failure. * @return 0 on success, 1 on failure.
*/ */
VST_EFFECT_OPCODE_07 = 0x07, VST_EFFECT_OPCODE_07 = 0x07,
@@ -179,15 +184,15 @@ enum VST_EFFECT_OPCODE {
/* Get the name for the parameter. /* Get the name for the parameter.
* *
* @param p_int1 Parameter index. * @param p_int1 Parameter index.
* @param p_ptr 'char[8]' * @param p_ptr 'char[VST_PARAM_BUFFER_SIZE]'
* @return 0 on success, 1 on failure. * @return 0 on success, 1 on failure.
*/ */
VST_EFFECT_OPCODE_08 = 0x08, VST_EFFECT_OPCODE_08 = 0x08,
VST_EFFECT_OPCODE_PARAM_GETNAME = 0x08, VST_EFFECT_OPCODE_PARAM_GETNAME = 0x08,
/* /*
* *
* * Note: Doesn't appear in any VST 2.2 or later plugins I checked.
*/ */
VST_EFFECT_OPCODE_09 = 0x09, VST_EFFECT_OPCODE_09 = 0x09,
@@ -240,59 +245,97 @@ enum VST_EFFECT_OPCODE {
VST_EFFECT_OPCODE_0F = 0x0F, VST_EFFECT_OPCODE_0F = 0x0F,
VST_EFFECT_OPCODE_WINDOW_DESTROY = 0x0F, VST_EFFECT_OPCODE_WINDOW_DESTROY = 0x0F,
/* /* Window Draw Event?
* *
* Ocasionally called simultaneously as WM_DRAW on windows.
* *
* Note: Present in some VST 2.1 or earlier plugins.
* Note: Not present in many VST 2.4 plugins.
*/ */
VST_EFFECT_OPCODE_10 = 0x10, VST_EFFECT_OPCODE_10 = 0x10,
VST_EFFECT_OPCODE_WINDOW_DRAW = 0x10,
/* /* Window Mouse Event?
*
* *
* Called at the same time mouse events happen.
*
* Note: Present in some VST 2.1 or earlier plugins.
* Note: Not present in many VST 2.4 plugins.
*/ */
VST_EFFECT_OPCODE_11 = 0x11, VST_EFFECT_OPCODE_11 = 0x11,
VST_EFFECT_OPCODE_WINDOW_MOUSE = 0x11,
/* /* Window Keyboard Event?
* *
* Called at the same time keyboard events happen.
* *
* Note: Present in some VST 2.1 or earlier plugins.
* Note: Not present in many VST 2.4 plugins.
*/ */
VST_EFFECT_OPCODE_12 = 0x12, VST_EFFECT_OPCODE_12 = 0x12,
VST_EFFECT_OPCODE_WINDOW_KEYBOARD = 0x12,
/* /* Idle/Keep-Alive Callback?
* *
* Does not receive any parameters. Randomly called when nothing happens? Idle/Keep-Alive callback?
* *
* Note: Not present in many VST 2.4 plugins.
*/ */
VST_EFFECT_OPCODE_13 = 0x13, VST_EFFECT_OPCODE_13 = 0x13,
VST_EFFECT_OPCODE_KEEP_ALIVE = 0x13,
/* /* Window Focus Event?
*
* *
* Sometimes called when the editor window goes back into focus.
*
* Note: Present in some VST 2.1 or earlier plugins.
* Note: Not present in many VST 2.4 plugins.
*/ */
VST_EFFECT_OPCODE_14 = 0x14, VST_EFFECT_OPCODE_14 = 0x14,
/* /* Window Unfocus Event?
*
* *
* Sometimes called when the editor window goes out of focus.
*
* Note: Present in some VST 2.1 or earlier plugins.
* Note: Not present in many VST 2.4 plugins.
*/ */
VST_EFFECT_OPCODE_15 = 0x15, VST_EFFECT_OPCODE_15 = 0x15,
/* Always returns the FourCC 'NvEF' (0x4E764566). /*
*
* Note: Present in some VST 2.1 or earlier plugins.
* Note: Not present in many VST 2.4 plugins.
* Note: Some plugins always return the FourCC 'NvEf' (0x4E764566), other plugins return nothing.
*/ */
VST_EFFECT_OPCODE_16 = 0x16, VST_EFFECT_OPCODE_16 = 0x16,
VST_EFFECT_OPCODE_FOURCC = 0x16,
/* Get Chunk /* Get Chunk Data
*
* *
* Save current program or bank state to a buffer.
*
* @param p_int1 0 means Bank, 1 means Program, nothing else used?
* @param p_ptr `char**` A pointer to a pointer. You should make this point at your own pointer
* @return p_int2 Size of the Chunk Data in bytes.
*/ */
VST_EFFECT_OPCODE_17 = 0x17, VST_EFFECT_OPCODE_17 = 0x17,
VST_EFFECT_OPCODE_GET_CHUNK_DATA = 0x17,
/* Set Chunk /* Set Chunk Data
*
* *
* Restore current program or bank state from a buffer.
*
* @param p_int1 0 means Bank, 1 means Program, nothing else used?
* @param p_int2 Size of the Chunk Data in bytes.
* @param p_ptr `void**` Poi
*/ */
VST_EFFECT_OPCODE_18 = 0x18, VST_EFFECT_OPCODE_18 = 0x18,
VST_EFFECT_OPCODE_SET_CHUNK_DATA = 0x18,
//--------------------------------------------------------------------------------
// VST2.x starts here. // VST2.x starts here.
//--------------------------------------------------------------------------------
/* /*
* *
@@ -305,14 +348,18 @@ enum VST_EFFECT_OPCODE {
* @param p_int1 Index of the parameter. * @param p_int1 Index of the parameter.
* @return 1 if the parameter can be automated, otherwise 0. * @return 1 if the parameter can be automated, otherwise 0.
*/ */
VST_EFFECT_OPCODE_1A = 0x1A, VST_EFFECT_OPCODE_1A = 0x1A,
VST_EFFECT_OPCODE_PARAM_ISAUTOMATABLE = 0x1A, VST_EFFECT_OPCODE_PARAM_ISAUTOMATABLE = 0x1A,
VST_EFFECT_OPCODE_PARAM_IS_AUTOMATABLE = 0x1A,
/* /* Set Parameter value from string representation.
*
* *
* @param p_int1 Index of the parameter.
* @param p_ptr `const char*` Zero terminated string representation of the value to set.
* @return 1 if it worked, otherwise 0.
*/ */
VST_EFFECT_OPCODE_1B = 0x1B, VST_EFFECT_OPCODE_1B = 0x1B,
VST_EFFECT_OPCODE_PARAM_VALUE_FROM_STRING = 0x1B,
/* /*
* *