VST2 discrete parameters?

We are seeing all of our discrete parameters showing up as continuous in the VST2 versions (in both Cubase 10 and Studio One 4). Anyone know why that might be? I don’t see anything in the wrapper that is related to the parameters. When stepping through the startup code, the LegacyAudioParametersWrapper shows that it is not using forceLegacyParamIDs, and it is using usingManagedParameters, and the parameters reported have the correct isDiscrete and minValue and maxValue settings. So why are they showing up as if they are continuous (i.e., you can draw arbitrary curves using the pencil tool for them in automation lanes)?

They don’t happen to be “boolean” do they? We had some issues with that before:

What are the problem parameters reporting for getNumSteps()?

Some are boolean, some are not.
I don’t see that function ever being called in a VST2 plugin. Where can I set a breakpoint that will be called, and when will it be called? Every version of that that I can find so far never gets called for VST2 (at least in Cubase).

Hmm you’re right, I don’t see getNumSteps() or isDiscrete(), isBoolean(), etc. being used anywhere in the VST wrapper… :confused:

I’d have to take a deeper look on how VST parameters distinguish themselves in that regard, I know that we have working (tested in Repear & Mixbus) boolean parameters… so the DAWs are getting that information somehow

The VST API doesn’t provide any way of indicating the step size of a parameter. You can, however, provide a .vstxml file alongside your plugin to supply this information. The difficulty with this is that Steinberg have purged the documentation for this from the internet, so it’s very hard to work out what’s possible, and a lot of hosts don’t support it.

I thought even boolean parameters were unsupported. Are you using any VST extensions?

1 Like

@BenLoftis implemented it in our internal JUCE fork using effGetParameterProperties. Something like discussed here. This was mostly to get our boolean parameters working correctly on Ardour/Mixbus.

Also I was totally incorrect before, our discrete parameters are modified by the DAW as a continuous value :slight_smile: I must’ve just been confusing it with this specific boolean “switch” situation

Ah yes, it’s not a VST extension, but (a few years ago at least) host support was almost nonexistent, so it didn’t make it into JUCE.

1 Like