VST 3 Interfaces  VST 3.7
SDK for developing VST plug-in
About MIDI in VST 3

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.

Related Concepts in MIDI and VST 3

Relationship of concepts in MIDI 1.0 to VST 3

MIDI 1.0 VST 3 Defined in
Port Bus of Steinberg::Vst::MediaType Steinberg::Vst::MediaTypes::kEvent ivstcomponent.h
Channel Channel of a Bus, Unit by Bus and Channel ivstcomponent.h, ivstunits.h
Note-On Steinberg::Vst::NoteOnEvent ivstevents.h
Note-Off Steinberg::Vst::NoteOffEvent ivstevents.h
Poly Key Pressure Steinberg::Vst::PolyPressureEvent ivstevents.h
Control Change Parameter, IMidiMapping ivstcomponent.h, ivstmidicontrollers.h
Channel Pressure Parameter, IMidiMapping ivstcomponent.h, ivstmidicontrollers.h
Pitch Bend Parameter, IMidiMapping ivstcomponent.h, ivstmidicontrollers.h
Program Change Parameter, kIsProgramChange, Steinberg::Vst::ProgramListInfo ivstcomponent.h, ivstunits.h
MPE (MIDI Polyphonic Expression) NoteExpression, PhysicalUI ivstnoteexpression.h, ivstphysicalui.h
System Exclusive Steinberg::Vst::DataEvent of Type Steinberg::Vst::DataEvent::kMidiSysEx ivstevents.h



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

MIDI 2.0 VST 3 Defined in / Comments
Group (of Channels) Bus of Steinberg::Vst::MediaType Steinberg::Vst::MediaTypes::kEvent ivstcomponent.h
Registered Per-Note Controller NoteExpression, PhysicalUI ivstnoteexpression.h, ivstphysicalui.h
Assignable Per-Note Controller NoteExpression ivstnoteexpression.h
System Exclusive 8-Bit indirect support the host may translate to 7-Bit, DataEvent of Type Steinberg::Vst::DataEvent::kMidiSysEx
Registered Controller not supported The host can do detailed tuning via NoteExpression
Assignable Controller not supported The host should offer mapping to parameters
Relative Registered Controller not supported The host is free to translate this to parameters
Relative Assignable Controller not supported The host is free to translate this to parameters
Per-Note Pitch Bend not supported The host can do detailed tuning via NoteExpression
Mixed Data Set not supported not 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.

Value MIDI 1.0 MIDI 2.0 VST 3
Velocity (On & Off) 7 Bit integer 16 Bit integer 32 Bit float
Poly Pressure 7 Bit integer 32 Bit integer 32 Bit float
Channel Pressure / Parameters 7 Bit integer 32 Bit integer 64 Bit float
Controllers / Parameters 7-14 Bit integer 32 Bit integer 64 Bit float
Pitch Bend / Parameters 14 Bit integer 32 Bit integer 64 Bit float
Note Attribute Tuning not available 16 Bit fixed point (7.9) 32 Bit float
Per-Note Controllers / NoteExpression not available 32 Bit integer 64 Bit float



Back to Contents

Empty

Copyright ©2020 Steinberg Media Technologies GmbH. All Rights Reserved. This documentation is under this license.