Fewer parameters for VST3 than VST2

I’ve made a plugin called Oversample that allows you to quickly set a parameter of a VST effect device to a specific value (used for turning “Oversample”, “High Quality”, etc., on and off).

This plugin therefore needs to enumerate all devices and their parameters in a song. When enumerating the parameters of VST2 devices, I get the full list of parameters, but when doing the same for VST3 devices, some parameters are missing. For the plugin Fabfilter Pro-C 2, the parameters start to differ at index 41. See the table below:

Index       VST3 Parameter                      VST2 Parameter
    1       Style                               Style
    2       Threshold                           Threshold
    3       Ratio                               Ratio
    4       Knee                                Knee
    5       Range                               Range
    6       Attack                              Attack
    7       Release                             Release
    8       Auto Release                        Auto Release
    9       Lookahead                           Lookahead
   10       Hold                                Hold
   11       Wet Gain                            Wet Gain
   12       Wet Pan                             Wet Pan
   13       Dry Gain                            Dry Gain
   14       Dry Pan                             Dry Pan
   15       Auto Gain                           Auto Gain
   16       Side Chain Expert Mode              Side Chain Expert Mode
   17       Side Chain Input                    Side Chain Input
   18       Side Chain Level                    Side Chain Level
   19       Stereo Link                         Stereo Link
   20       Stereo Link Mode                    Stereo Link Mode
   21       Side Chain Low Enabled              Side Chain Low Enabled
   22       Side Chain Low Frequency            Side Chain Low Frequency
   23       Side Chain Low Slope                Side Chain Low Slope
   24       Side Chain Mid Auto                 Side Chain Mid Auto
   25       Side Chain Mid Enabled              Side Chain Mid Enabled
   26       Side Chain Mid Frequency            Side Chain Mid Frequency
   27       Side Chain Mid Gain                 Side Chain Mid Gain
   28       Side Chain Mid Q                    Side Chain Mid Q
   29       Side Chain Mid Shape                Side Chain Mid Shape
   30       Side Chain High Enabled             Side Chain High Enabled
   31       Side Chain High Frequency           Side Chain High Frequency
   32       Side Chain High Slope               Side Chain High Slope
   33       Audition Side Chain                 Audition Side Chain
   34       Audition Triggering                 Audition Triggering
   35       Mix                                 Mix
   36       Input Level                         Input Level
   37       Input Pan                           Input Pan
   38       Output Level                        Output Level
   39       Output Pan                          Output Pan
   40       Bypass                              Bypass
   41       Midi State                          Oversampling
   42                                           Lookahead Enabled
   43                                           Midi State
   44                                           Meter Scale
   45                                           Display Enabled
   46                                           Knee Display Enabled

The (essential part of the) loop enumerating the parameters looks like this:

local parameters = {}
for p = 1, table.getn(device.parameters) do
    local parameter = device:parameter(p)
    parameters[p] = parameter.name
end

Does anyone have an idea why the parameter list is different between VST2 and VST3 versions of the same plugin?

The output says there are in fact more VST3 params than VST2 ones.

Beyond that I’ve no clue. :slight_smile:

Renoise (and its API) simply returns the parameter names and their values contributed by the VSTi. I mean, this depends on the VSTi, not Renoise. In other words, the VST3 and the VST2 equivalent are not the same. Probably, when creating the VST3, it was not created completely the same as the VST2.

If you want to quickly experiment with the parameters of any VST / VSTi you can use the demo version of the MUC tool.

If this topic is very important to you, I suggest that you contact the VST3 creator directly.


A minor point. In your loop, you don’t need to define the “local” inside the loop. You can put it like this:

local parameters = {}
for p = 1, table.getn(device.parameters) do
    parameters[p] = device:parameter(p).name
end

A local has a performance advantage if you can place it outside the loop. Inside the loop you are creating a local each time the loop makes a pass. If the loop has 20 passes, you have created 20 locals. Using a local within the loop would be good if the local is used many times within the same pass.

1 Like

Correct, I had just labeled the columns wrong. Thanks for pointing it out!