Hi There, I have setup a dedicated MIDI track with the input to be my MIDI footswitch controller and the output to be directed to the audio track with my plugin on it listed as Sidechain MIDI in. All CC messages pass fine to the plugin, but PC messages do not pass through. I have also verified that I don’t have any MIDI Program Change filters enabled, so I’m not sure what could be going on.
Some research has indicated that VST3 plugins do not have the ability to accept PC messages, and the work around is supposed to be the MIDI track.
Any suggestion is greatly appreciated! Thanks in advance!
EDIT: The Plugin I’m trying to control with PC commands is Neural DSP SLO 100 X. I should also indicate that the sandalone app accepts PC commands without issues, it’s only when within Cubase 15.
I should have indicated in my post that the standalone app accepts the PC commands fine…its just when in Cubase. I’ll update the main post for others too.
Cubase 15 is passing Program Change Events as expected.
My Test
One VST3 instance of bidule (a 3rd party plugin by Plogue) running as an effect insert on an external Rack Instrument (Input from an external analogue Tascam Mixer).
One MIDI track containing PC events with its output directed to the bidule instance.
I loop and play the sequence and the PC events are passed as expected.
Some plugins out there do ignore PC events. I’ve run across a few over the years. Sometimes they support it but it doesn’t work until properly configured or linked somehow in the plugin.
Example: Activating HALion Sonic Modes that support MIDI PC Events
Some plugins might even have a VST parameter listed that is called “MIDI Program Change” or something similar. If you see that and find that manipulating it with a VST lane works, but sending actual MIDI events don’t seem to be working, then you need to ‘link’ the parameter somehow in the Plugin itself (and I’ve found some that it’s simply broken…they’re still expecting the old VST2 way and haven’t properly built the plugin to support program changes).
I.E. Here is an instance of HALion Sonic, and I can see that Program Change gets listed as a VST Parameter for each instrument slot.
By default, Sonic will totally ignore MIDI program change events. It can be forced to accept and use them in various ways here in the options tab (PrgChanges):
Perhaps a better option is for you to use a VST lane to automate your plugin instead of sending PC Events over MIDI.
Automating VST Plugins
Plugins should list all of their parameters so they can be automated via VST lanes. For this example consider the reverb plugin that ships with Cubase called REVerence. When I first open the plugin’s GUI I see this…
With most VST plugins, if you can tweak it in the UI, you can automate it with a DAW. Each control in the plugin gets registered with the host as a ‘VST parameter’.
If I right click near the top right corner and choose “Remote Control Editor”:
I can pull up a generic list of all of the ‘VST parameters’ that Cubase can automate in this plugin, and see the names of the parameters. In short, this is just a generic view of every user editable control/parameter that the plugin registers with the host.
For now you don’t need to understand the deep possibilities and abilities and features of the generic panel. The point in my showing it above is simply to let you know you can look at it to quickly get an idea of what parameters the plugin has registered and what ‘names’ the host was given for them.
To automate them, click the down arrow that shows up in the bottom left of a track when hovering the mouse:
Change the lane to the parameter you wish to automate.
In this example I’ll go for the parameter that changes Presets in the REVerence plugin and draw in some events. I play my loop and I can see that the presets in REVerence change as expected.
Thanks for the input! My instance is similar to your trial, except on my MIDI track’s output mapping, I select the audio track with the plugin on it. It does say the name of the pluging with MIDI inpuyt following it, but it is also in the sidechain menu. Some issues I’ve read thus far indicate that some plugins without sidechain capability may not be able to accept the MIDI commands.
That said, the Plugin’s standalone app accepts PC commande without issue, and while in Cubase under my audio track, the plugin does see CC commands via the same approach mentioned, just not the PC commands.
If your situation absolutely demands MIDI control rather than VST control…or the plugin doesn’t grant VST access to a parameter to achieve the same goal…
Some plugins of old have been gradually converted from VST2 to VST3, and they didn’t do it right where PC events are concerned (they’re likely still expecting the instruction set dependent VST2 method…VST3 treats PC like any other VST parameter, they need to register and link it properly within the plugin as they did with all of the CC parameters, they might have even built the program with a dev kit like juice or whatever, that has been breaking PC in VST3 plugins for years yet…uggg).
Nothing you can do but contact the plugin developer, and in the meantime maybe revert to the VST2 version.
Yes, the stand alone version works because they control the host, and hardwired it somehow, or might even still be simply hosting their VST2 plugin in a small custom host.
I bet if you use a VST2 version of your plugin in Cubase instead it’d work. The drawback with that solution is VST2 in Cubase is no longer supported (still works really well but we’re on our own with it), and might just ‘go away’ at some point in the future. If possible, use VST3 automation instead for the short term, and lobby for the plugin maker to fix how their VST3 version handles PC events in VST3 hosts.
Consider doing direct VST automation instead of using MIDI events. It is possible through Quick Controls and Remote scripts to assign physical MIDI controllers to your VST lanes if desired.
Yeah, I’ve seen some articles detailing the same. It baffles me that the native plugin will accept the commands, but not within Cubase. I think that is when the VST2 vs VST3 comes into play.
Thanks, I think given the standalone works fine, and also that CC messages pass also fine, it is, in fact, an issue with the VST conversion.
Yes, that is where I’ve mapped PC program changes to test the standalone vs the instance in Cubase. Per another users comments, I think it’s an issue with VST3 conversion, and I think I’m dead in the water until the devs fix it. For the meantime, I’ll program my controller with CC commands. It suck becuase it limits me to half (128 CC & 128 PC)…so if I have say 24 user banks, all with 4 patches, it puts me pretty close to the limit leaving only 32 commands avalable for other switches such as pedal enable/disable per patch. I think I’ll be ok though…it’s pretty rare to need all of a devices patches.
It makes sense to me. Chances are high that the stand alone version is little more than the VST2 version (Perhaps AU for Macs) running in a small custom host.
For whatever reason(s), when they did a VST3 version they neglected (or used developer tools that neglect) to properly register a PC parameter and link it up. VST3 hosts will properly pump it (like our bidule test above), but they did not subsequently link it internally with whatever it’s supposed to do in the plugin.
I also have some plugins that register PC as a VST parameter but simply didn’t link it to anything internally in the plugin. Sometimes I can manually link it from inside the plugin with their various mapping controls, and sometimes I cannot.
I believe there is some confusion out there on how VST3 hosts and plugins should register and treat the PC parameter. It might simply be the developer tools a plugin maker is using to build the plugin doesn’t address it properly despite their ‘code’ being right. I can speculate all day as to reasons and excuses, but at the end of the day, I agree that it can be rather annoying.
To this day there are still a number of plugins that I go back to VST2 versions in some hosts for this very reason. I.E. If I want to use Arturia’s Analog Lab in a live setup built around bidule, I simply opt for the VST2 version rather than jump through the hoops of getting VST3 PC events working.
If you’re on Windows and absolutely need to control this stuff via MIDI PC events, give the VST2 version a try. It’s easy to enable VST2 support in Cubase for Windows. There’s a button for it in the plugin manager. For the newer ‘non intel’ Macs with Apple Silicon I think you’d need Rosetta involved to get VST2 plugins working
Sounds good, and thanks for your and Johnny’s input! I’ll give VST2 a go in the near future. I’ll have to program this via CC commands temporarily to get my jam sessions working for the interim, which may slow down my need for VST2 and PC compatibility, but I will come back here and post if I end up rolling back to VST2 and it works so others are informed as well. Thanks again!