AudioPluginInstance missing methods


#1

It seems there are a number of methods that have not been implemented for the various plugin formats (when creating a plugin host), presumably most of these could be implemented relatively easily.

I’ve looked at the AudioPluginInstance for AU(v2), VST, and VST3, and here are some methods that don’t appear to have been implemented as they are just returning the default from the base class AudioProcessor rather than the derived class…

getParameterID
getParameterDefaultValue
getParameterNumSteps
isMetaParameter
isParameterOrientationInverted

For context I’m working on a command line host so having implementations for all the methods for all the formats (where possible) is ideal.


#2

With a quick search through the VST2 code (grep for VstHostToPlugInOpcodes), it’s looking like none of those are supported by that format.

These two are not supported by VST3 (grep for ParameterInfo in the VST3 SDK):

isMetaParameter
isParameterOrientationInverted

I’m not very familiar with AUv2’s internals, but it does look like it somehow supports meta parameters.


#3

Yes I should have pointed out that I realise some formats might not support some of these.

getParameterDefaultValue() and getParameterNumSteps() are the ones that particularly took me by surprise - however is seems the VST2 wrapper never calls either of these so I guess you’re right VST2 doesn’t support these. However VST3 does this information, it gets passed to the host from the plugin but as a JUCE host these methods are not overridden in VST3PluginInstance and so return surprising results. AUv2 also supports both of these although the reporting of the number of parameter steps isn’t implemented in the JUCE AUv2 wrapper. isMetaParameter() is supported by both AUv2 and AUv3, but isParameterOrientationInverted() seems to be an AAX feature only.

I guess there is an argument for only implementing methods that are supported by all formats, maybe I could get to this information per format by calling getPlatformSpecificData(). Although I would suggest that they are implemented where possible - maybe even with jassert’s in the formats that don’t support them?