Creating a Midi Effect


I’m new to the vst sdk and want to create a midi effect, something like an arpeggiator.
I’ve looked a bit at the example included in VST Module Architecture, but from what I can read online it seems to have limited support in hosts.
People seem to recommend using VST 2.4 when creating midi plugins.
Is this still the case? Could someone point me to some examples of midi effects?


Did you manage to write a MIDI-effect?

VST3 does not directly support MIDI. You can create note events and send them to an output queue.

Does this mean plugins like Cableguys MIDIshaper or Xfer LFO Tool aren’t going to be able to be VST3 compatible?

If that’s the case… what is the replacement? We no longer get to have MIDI plugins/Effects in Cubase beyond the old ones offered by Steinberg?

Is there some kind of replacement on the way? Are we going to see MIDI plugins open to 3rd party development? VSTm?

@LoveGames now maybe understand what I was talking about on that other thread.

I will just say that you can MOSTLY still make midi plugins with VST3, Steinberg is simply saying, they don’t intend for midi plugins to be a valid use case of VST, but just something that some people have done with VST2 on their own and perhaps some people will continue to do with VST3 if they can get away with it, but its not their intention to provide support for midi plugins in VST.

VST2 was more capable for this purpose in some ways because you had a simple raw midi buffer of all midi events in exactly the order they are provided by the host in the buffer, and you can in a plugin modify the buffer with the exact order of any midi events you see fit.

VST3 has attempted to abstract things so that theoretically inside a VST3 plugins there is no notion of a midi event, but rather other kinds of abstracted data, that more or less represent midi data…but these abstracted data are not limited by midiV1 byte sizes, among other things…so there are advantages of this.

VST3 also abstracted certain concepts that Steinberg found useful such as NoteExpressions, etc…

now the bad news, because the data is not provided in a single buffer, the exact ordering between various midi events that happen to have the same timestamp cannot be determined nor specified by a VST3 plugin. This is a problem for midi plugins related to, for example, articulation management.

Originally, there were problems related to ProgramChange messages and also no ability to output CC messages from a plugin…though Steinberg did later add a special function for that, but unfortunately not all hosts recognize it…so its still problematic.

Also, its not possible in a VST3 to easily setup midi learn type features, etc.

There are many simple midi plugins that can be handled by VST3. If you just want to make an arpeggiator for example, that is perfectly well possible, since at least VST3 will give you a buffer full of note events…and you can work with that to create an arp. For example. Its just that if you get into certain situations where it will be problematic as is.

Steinberg’s official stance has been, they never intended VST to be used for midi this way, so you’re on your own, and unfortunately VST3 has made this difficult to provide certain midi solutions that were previously possible with VST2.

And the problem is further complicated by the fact that certain MIDI plugin scenarios would only be possible if and when the host is using 100% all features of VST3, including NoteExpressions, articulation mapping, etc…which is simply not the case in 2021 that most hosts are. Most are not. So any intention to have everyone follow VST3 completely is simply not current reality, this heavily affects midi oriented plugins.

1 Like

Still not entirely clear

Is there any comment? Can a plugin like Xfer LFO Tool or Cable Guys MIDIshaper exist as VST3, or are those developers out of luck?

Silence on this means one of two things. 1.) it’s completely abandoned. or 2.) There is something on the way of which can’t be discussed publicly yet.

I am wanting to make a VST of this type dealing with MIDI CC.

Have you gotten any answers yet?

Over on the Cubase forum there has been a lot of animosity toward Steinberg over dropping VST2 support. I didn’t understand it. I had been learning VST again after many years and had just assumed that VST3 would have ADDED features for MIDI not removed them.

Now I am so disappointed. The picture is staring to become clear.

Why? Why would Steinberg to this just as MIDI 2.0 becomes a reality? Everything about working in a DAW is trying to figure out workarounds because MIDI is treated so different than Audio, and that just isn’t the way musicians think!

Musicians think, I put a Performance into the DAW, Now I want to manipulate and route that Performance. MIDI Note, MIDI CC, and Audio are all different representations of the same abstraction in a musician’s brain. Why treat them so differently?

Maybe if Steinberg could explain themselves.
Why Steinberg would you create this limitation?

Please explain.

VST3 already supports most of MIDI 2.0 out of the box. Please read the documentation to get an overview.

1 Like

Thanks, Ill switch away from JUCE to the VST3 SDK.