VST plugins MIDI IO


I’m actually testing the VST processes in Score because I’d like to use a MIDI VST plugin I recently developed with JUCE.
Actually it seems that they only provide audio IO and access to plugin parameters, I was not able to find a way to process any incoming MIDI data, or to send any MIDI data anywhere from the plugin …

Is there a workaround I could use for now ?
Are there any plans for MIDI IO support in VST plugins for the future ?
The JUCE wrapper allows MIDI IO in both VST2 and VST3 so I guess it’s possible, but maybe it would require a special MIDI cable type to be pluggable with other MIDI processes or something like that ?

EDIT : hmm, I see that there actually is a MIDI cable type in Score, I think it would be great to have pluggable blue dots on the VST processes as well :slight_smile:


hi !

hmm this is weird, if a VST is an instrument it shows up correctly with the MIDI (blue) port here:

can you send your VST ?

Hi jm, thanks !

Sorry, not enough testing before posting …
I just managed to load the VST3 version and at first look it seems to work fine.

Only VST2 effect plugins seem to have issues : no MIDI IO and a buggy behaviour when expanding/collapsing the plugin window (I mean from the plugin itself, mine has an internal window resize control in the UI).
Only exception so far : the plugin window state (expanded/collapsed) is stored with the Score project and recalled correctly for the VST2 but not for the VST3.
It is the only parameter which is supposed to be stored and restored by the host, but which is not part of the exposed plugin parameters.

For my VST3 plugin to be found, I had to drop it manually into /Library/Audio/Plug-Ins/VST3 (Score didn’t find it in /Users/me/Library/Audio/Plug-Ins/VST3) and restart Score (rescanning from Preferences > Plugins didn’t update the list of plugins, and in fact only VST2 plugins show up in this window)

I’ll PM you both versions if you want to give them a try.

For info, the IDE projects with VST2 and VST3 targets are generated from JUCE’s projucer with the following settings :

  • Plugin is a synth : false
  • Plugin MIDI Input : true
  • Plugin MIDI Output : true
  • MIDI effect plugin : false

because these are the settings that proved to work best in Live and Reaper at the moment.
I tested a couple of other VST2 effect plugins in Score, and neither did any MIDI IO show up.
I mean all were classified as “VST2 effects” by Score (VST3 plugins don’t seem to be classified)
Also, VST2 instruments indeed have a MIDI input.

BTW, only tested on mac OS 10.15 with latest Score build

Hmmm I may have spoken too fast …
Trying locally with Max patches, I still can’t get any MIDI data to come in or go out the VST3 plugin despite I have the right MIDI IO selected everywhere in Score and Max.
I will try other plugins to see if mine is faulty, but it worked just fine in all other tested DAWs so far.
I will also try to run the plugin in debug mode from Score to check that nothing happens inside the plugin at all.

oh okay, I understand. For VST2 in score it only shows the midi in if it’s a synth. I will look in adding a normal MIDI port for MIDI control, I wasn’t aware of plug-ins doing this. Do you use the midi out too ?

Ah, with the VST3 version I’m able to receive note events ! I was probably tired yesterday and patched the wrong max inlet :expressionless:.

For some reason I didn’t succeed to build the VST2 version as a synth and get Score to detect it as “synth”, but it works with a fresh properly configured JUCE project, so I will give it another try.
I will have to check if using the synth version in other DAWS raises any issues.

At Steinberg they seem to think MIDI effect VST plugins are an aberration, but there are actually a few. I discovered all of this during the making of the plugin, and it is designed this way for now.
See this discussion for more insight.

I’m not sure I agree with them, but in my case the problem could be solved by using only plugin parameters (mapped or automated) and note events as input, and talking directly to the external MIDI device I want to control instead of forwarding the MIDI events to the host. There is already an ongoing discussion about this with the actual plugin users.

I will come back to this subject later, as I was just testing things and I have to work on more prioritary tasks right now, but to answer your last question : yes, currently the plugin uses midi out too, it receives and sends note, cc and pitchbend events.

Thanks again for your prompt answer :slight_smile:

Yes, with VST3 they completely dropped the ball wrt MIDI, it’s an abomination aha.

To be honest I think it makes sense, but alas is more restrictive.

However, it seems Steinberg received so many complaints that they reintroduced some “legacy” functionalities in the v3 standard, so you can still send MIDI CC out from VST3 plugins, and JUCE makes this transparent in the API.

In the end I’d prefer to follow the actual logic of VST3 (which would also apply to the VST2 version).
I’ll discuss this with the plugin users, but it looks like I’ll need to modify my plugin so that it talks directly to the MIDI hardware it is supposed to control, and make it a synth instead of an effect, as only note events from piano rolls are really needed anyway …

Cheers, and sorry for the noise