Host compatibility testing

Hi all,

I’m currently testing my plug-ins in Cubase versions 8 and 9 under macOS and Windows to ensure everything as expected.
I also run the VST3 test host unit tests from time to time, as well the VSTScanner that was posted here, and Wavelab LE.
I assume Nuendo uses the same engine as Cubase under the hood, so testing with Cubase should be sufficient (except with surround plug-ins).

I’d like to know what Steinberg recommendations / best practices are in that regard, and possibly what kind of tests you run for your own plug-ins.
I have bought a license for Cubase + regular updates, and it really is not possible to purchase a Nuendo license for testing purposes.

On this topic, Avid have published a detailed test sheet for testing AAX plug-ins inside ProTools etc., and I think that’s quite a neat idea.
Would you consider publishing some kind of recommended/required conformance, feature and stability test sheet for VST/VST3 ?



good idea, we will provide later on a kind of guideline for testing inside a host like Cubase.
For now you can use the one provided by Avid…

Hi Yvan, good to know thanks.
So in you opinion I can just skip testing Nuendo and I should be fine ?

Also I wanted to say the ‘Unit test’ feature in the VST3 Plugin Test Host is really great.
However I haven’t found a way to launch the unit test for a specific plug-in from the command line,
which would allow using it inside an automated build/testing environment.
Perhaps this could be put on the idea/todo list ?


Use the vstvalidator (included in the sdk, see public.sdk/samples/vst/validator/. It’s exactly what you want.


Arne, thanks, yes sorry I forgot about this one - I have built it and do use it too.

I’m just wondering if it performs the same checks as the UI version.
When I run vst3 validator (the one with sources in public.sdk/samples), it reports only 35 tests,
where as the binary UI version displays ‘Number of test: 16815’


The VST3PluginTestHost checks more speaker arrangement combinations and has more parameter change tests than the command line tool. And a few tests that we haven’t ported yet to the validator. We may do this in the future.

Thanks for the clarification, Arne.

One thing I noticed is my plug-ins all pass all tests, except for one in the GUI version:

Global Instance > VST3 Conformity > Persistence > Parameter Bypass persistence
-> The Bypass Parameter is not in sync in the controller !

What is strange is that everything works as expected in the host, especially bypassing.
I’ve double checked my code and the ParameterInfo::kIsBypass flag is indeed present for the master bypass.

How should I go about troubleshooting “the bypass parameter is not in sync with the controller!” error from the validator?
What scenarios would cause this?

The processor has implemented the
setState(IBStream*) method

and the EditController has implemented the
setParamNormalized(ParamID, ParamValue) methods

public.sdk\source\vst\testsuite\state\bypasspersistence provides “the bypass parameter is not in sync with the controller!” error message.

Found that the processor getState(IBStream*) was missing one of the parameters; issue resolved.