Revisiting VST 3


Progress update. The end of last week and early this week have been fairly hectic chasing down a couple of issues. There’s still one outstanding which I’m looking into, but in the meantime I’ve been reworking the handling of VST 3 parameters:

For a little background, VST 3 hosts have a lot more responsibility with regard to parameters than with VST 2. For VST 2 plugins, the host treats the plugin as single entity and parameters are just passed to it, and that’s it.

VST 3 plugins however are separated into two parts: the processor and the editor and all communications between the two parts go through the host. Technically not all plugins do this, but definitely the host needs to support plugins that depend on the host for this communication.

This functionality in Cantabile was written quite a while ago, but wasn’t working correctly with a couple of plugins. After some discussion on the VST dev forum, debugging a sample plugin in Cubase and discussions with a couple of plugin devs I revisited all this with a fresh understanding and those plugins are now all working perfectly.

That was this morning… and then took the afternoon off.


Some more progress: besides more testing I’ve now implemented the restartComponent() API that a plugin can call to indicate that information about the plugin has changed (number of inputs/outputs, parameters etc…)

I still need to find some plugins that use some of these features for testing, but from what I’ve seen so far it seems to be working, even using soft ramp down/up while suspending and resuming the plugin for some changes.

There’s also still some questions about how audio and MIDI ports map to plugins with changing number of inputs/outputs… that’s tomorrow’s job.

After that, the only real thing left to do is the ability upgrade existing VST 2 plugins to VST 3, review all the interfaces again to check for anything that might be missing and then a whole bunch of testing.

Back on the master branch all those menu bar/full screen mode changes seem to be stable now which is a relief and took some serious detective work.

(Actually on the full screen mode there is one outstanding issue when in full screen, with opengl enabled and the menu bar hidden where some display drivers go into this weird display mode. I’m in discussion with a dev at Microsoft about it, but in the meantime there’s an easy work around - just turn off OpenGL rendering).