VST3 doesn’t support MIDI (*). This is a hack to get around that. Go bump this thread (been a problem for years) to annoy Steinberg into supporting MIDI instead of workarounds for input and output.
(*) there is a special output event that most hosts now support for plugins sourcing CC messages and this may not affect you, but it’s arguably a half measure, and there is no general support for MIDI i/o in VST3 plugins which is a problem, given that MIDI 2 is around the corner.
I don’t know why Arne Scheffler doesn’t just close the thread with a pinned message:
Steinberg have no intention of implementing MIDI in VST3, so stop asking
It’s kind of hilarious how every time someone gives a valid reason for some need for MIDI to be supported properly, there are frankly ridiculous “workarounds” proposed.
My plugin takes midi notes in.
But it creates new midi CC messages going out for pitch wheel and mod wheel etc.
It can also create new midi notes going out, to harmonize with the incoming notes.
I read this:
Add a Silent Audio Output to Ensure MIDI Routing Works
#ifndef JucePlugin_PreferredChannelConfigurations
: AudioProcessor (BusesProperties()
.withOutput ("Output", juce::AudioChannelSet::stereo(), true) // Always include an audio output
),
Any other tips? And what DAWs do I need to pay special attention to?
BitWig refuses to work with pitchbend messages coming out, at least in its default settings. If there is a way of setting up BitWig to let pitchbend messages coming out of your VST3 plugin be picked up by the next plugin in the chain, I’ve not discovered it. The “workaround” for this is to use the CLAP module and then it magically works1. It may work with VST2, but those are impossible for any new developer to publish.
Older versions of Live will remove “undefined” CCs from the output, but I believe they’ve fixed this now.
1 - by “magically”, I meant you build a CLAP version of the plugin, it should “just work” (has in my experience) and then pitchbend messages will be sent to the next plugin in the chain when using the CLAP version. VST3 still has the problem of course. This was probably obvious, but I thought I’d just clarify to be sure.
I mean they’ve essentially said that already. It seems they have no intention of releasing a MIDI plugin API that will be compatible in Cubase/Nuendo, so don’t hold your breath for making a MIDI plugin that works on top of their API.
Anyway, I know Ableton struggles with/doesn’t support MIDI plugins, Bitwig I believe supports them for Clap but have some kinks with VST3, and in FL you have to do something like create an instrument where the MIDI plugin is the instrument and route its MIDI output to another channel - I think the manual covers this. I’m not sure about other hosts, but MIDI plugin support is sparse.
I won’t say such words as I’m a friendly person. Would be nice if others do the same and be more polite to others. This would make the world a better place.
It’s kind of weird though, because I’ve developed a plugin that takes input and transforms it, and it “works” in all the major hosts just fine, albeit with some idiosyncracies in nearly every one.
The most annoying is probably Cubase which struggles with timing during realtime playback, but if you record the output to a MIDI channel, it’s absolutely spot on. Christ knows why that is, but ASIO Guard seems to have some bearing on it.
Something I’m running into with Cubase is that if I do want these CC parameters, they are showing up before all of my other parameters in the generic view, which is…not ideal.
I’m not sure if this has to do with them being added with kRootUnitId as their group, but so far haven’t found a way around it.