/ VST Home / Technical Documentation

About MIDI in VST 3

On this page:

Related pages:

Unlike in VST 2, MIDI is not included in VST 3.

But VST 3 offers suitable concepts that can be translated to and from MIDI using Event:


Relationship of concepts in MIDI 1.0 to VST 3

MIDI 1.0VST 3Defined in
PortBus of Steinberg::Vst::MediaType, Steinberg::Vst::MediaTypes::kEventivstcomponent.h
ChannelChannel of a Bus, Unit by Bus and Channelivstcomponent.h, ivstunits.h
Poly Key PressureSteinberg::Vst::PolyPressureEventivstevents.h
Control ChangeParameter, IMidiMappingivstcomponent.h, ivstmidicontrollers.h
Channel PressureParameter, IMidiMappingivstcomponent.h, ivstmidicontrollers.h
Pitch BendParameter, IMidiMappingivstcomponent.h, ivstmidicontrollers.h
Program ChangeParameter, kIsProgramChange, Steinberg::Vst::ProgramListInfoivstcomponent.h, ivstunits.h
MPE (MIDI Polyphonic Expression)NoteExpression, PhysicalUIivstnoteexpression.h, ivstphysicalui.h
System ExclusiveSteinberg::Vst::DataEvent of Type Steinberg::Vst::DataEvent::kMidiSysExivstevents.h

Additional relationships of concepts introduced in MIDI 2.0 (https://www.midi.org/) to VST 3

MIDI 2.0VST 3Defined in/Comments
Group (of Channels)Bus of Steinberg::Vst::MediaType, Steinberg::Vst::MediaTypes::kEventivstcomponent.h
Registered Per-Note ControllerNoteExpression, PhysicalUIivstnoteexpression.h, ivstphysicalui.h
Assignable Per-Note ControllerNoteExpressionivstnoteexpression.h
System Exclusive 8-Bitindirect supportThe host can translate to 7-Bit, Steinberg::Vst::DataEventof Type Steinberg::Vst::DataEvent::kMidiSysEx
Registered Controllernot supportedThe host can do detailed tuning via NoteExpression
Assignable Controllernot supportedThe host should offer mapping to parameters
Relative Registered Controllernot supportedThe host is free to translate this to parameters
Relative Assignable Controllernot supportedThe host is free to translate this to parameters
Per-Note Pitch Bendnot supportedThe host can do detailed tuning via NoteExpression
Mixed Data Setnot supportednot supported

MIDI 2.0 Per-Note Controllers

There are many subtle differences between MIDI 2.0 Per-Note Controllers and VST 3 NoteExpression. The good thing is that plug-in developers do not have to do anything about it. It is the host's duty to translate from MIDI 2.0 to VST 3.

MIDI 2.0 Increased Resolution, compared to MIDI 1.0

MIDI 2.0 achieved a significant increase in resolution of many important values, like Velocity, Pressure, and Controllers compared to MIDI 1.0. Nevertheless, VST 3 still has superior resolution than MIDI 2.0. Plug-ins and hosts supporting VST 3 should make use of these capabilities and should not stick to a 0-127 mindset.

See the following tables to compare the resolution of specific values in MIDI 1.0, MIDI 2.0, and VST 3.

ValueMIDI 1.0MIDI 2.0VST 3
Velocity (On & Off)7 Bit integer16 Bit integer32 Bit float
Poly Pressure7 Bit integer32 Bit integer32 Bit float
Channel Pressure / Parameters7 Bit integer32 Bit integer64 Bit float
Controllers / Parameters7-14 Bit integer32 Bit integer64 Bit float
Pitch Bend / Parameters14 Bit integer32 Bit integer64 Bit float
Note Attribute Tuningnot available16 Bit fixed point (7.9)32 Bit float
Per-Note Controllers / NoteExpressionnot available32 Bit integer64 Bit float