MIDI Clock and Program Change issues with VST3

I have a number of plugins that can process (send/receive and act on) Program Change messages and some that can send out MIDI Clock messages. With VST2 versions of these plugins, everything works perfectly, but with the VST3 versions the MIDI Program Change and MIDI Clock messages are completely ignored! This breaks the VST3 versions for use in many scenarios forcing continued use of the VST2 versions — and making this a permanent need until it is fixed for all VST3 plugins.

Surely the VST3 specification and development libraries should provide as good as, if not better, support for all MIDI messages as well as for other capabilities and, if not, how can Steinberg consider deprecating the VST2 libraries?

Given the continued growing use of physical hardware synthesizers and other devices these days together with the standardisation of MIDI 2.0, complete and responsive support for MIDI/MIDI 2.0 in the VST3 standards is critical for many musicians.

The VST3 standard (and development toolkits) needs to urgently add (back) capabilities that will support the complete MIDI and MIDI 2.0 standards - or Steinberg needs to confirm permanent continued support (and fixes/security patches) for the VST2 libraries.

Hi, please write down the use-cases for this. Who is sending these messages and who is receiving them? Have you considered using the system MIDI API when talking with MIDI hardware? If yes, why is it not appropriate?


Example #1. Want to generate (DAW sync’d) MIDI Clock to synchronise multiple external hardware synthesizers (sequencing, APR and other sync’d timings) from Gig Performer, which does not provide a native DAW Sync option. Using plugins like Cherry Audio’s Voltage Modular (also tried MIDI Lab) to use their internal modules to take the DAW clock, convert to MIDI Sync and output back out to the DAW and then route in the DAW to the relevant MIDI output(s). Have setup MIDI Monitor inside Gig Performer on the connection from the plugin to the MIDI Out. When using the VST2 versions of these plugins, works fine; when using the VST3 versions, no MIDI clock is coming into the MIDI Monitor or the output.

Example #2: Want plugin to respond to, or send out, Program Change commands. Similar setup as above (Cubase or Gig Perfomer, hosting Voltage Modular or other plugins). Want to have Voltage Modular to receive Program Change commands (which can then be processed by the modular synth in a way determined by the modules, or to change the preset), other plugins to respond to Program Change to change their presets. Also want to be able to send out Program Change messages programatically to the external synths - these Program Change messages could be generated in e.g. Voltage Modular as part of a wider complex setup/composition or in MIDI Lab. Again, if using the VST2 versions then all works fine; if using VST3 versions no Program Change messages get passed in to or out of the plugin.

I’m not the developer of the plugins, but feel that the VST3 standard should make it really easy for plugin developers to carry forward these capabilities from VST2 to VST3 without having to rewrite complete sections of code.

In both the examples, the specific use cases are around using modular plugins that can explicitly process MIDI data (e.g. Cherry Audio’s Voltage Modular, Soundoligy’s MIDI Lab, and I’m sure there’s plenty of other examples) for controlling external, MIDI-based devices when these tools are part of a wider setup inside a DAW such as Gig Performer or Cantabile for live performances or Cubase and others for recording.