/ VST Home
Technical Documentation
Browse the VST 3 SDK's technical documentation. The full VST 3 API reference is only available in the VST 3 Package that you can download or find online here:
- VST 3 API Documentation
- VST Module Architecture
- Parameters and Automation
- VST 3 Units
- Presets & Program Lists
- Complex Plug-in Structures / Multi-timbral Instruments
- VST 3 Workflow Diagrams
- VST 3 Locations / Format
- About MIDI in VST 3
- Provide A Runloop On Linux
- [3.0.0] Interfaces supported by the plug-in
- [3.0.0] Multiple Dynamic I/O Support
- [3.0.0] Silence flags
- [3.0.0] Interfaces supported by the host
- [3.0.1] Parameter MIDI Mapping
- [3.0.2] Parameter Finder
- [3.1.0] Audio Presentation Latency
- [3.1.0] UI Group Editing, Dirty State & Open Editor Request
- [3.1.0] KnobMode, Open Help & Open Aboutbox
- [3.5.0] Note Expression
- [3.5.0] Key Switch
- [3.5.0] Remote Presentation of Parameters
- [3.5.0] Context Menu
- [3.5.0] Enhanced Linked Parameters
- [3.6.0] iOS Inter-App Audio
- [3.6.0] Preset Meta-Information
- [3.6.5] Channel Context Info
- [3.6.5] Unit-Bus Assignment Change
- [3.6.5] Prefetchable
- [3.6.5] Automation State
- [3.6.6] PlugView Content Scaling
- [3.6.8] Request Bus Activation
- [3.6.10] UI Snapshots
- [3.6.11] NoteExpression Physical UI Mapping
- [3.6.12] Legacy MIDI CC Out Event
- [3.6.12] MIDI Learn
- [3.6.12] Host Query Interface Support
- [3.6.12] MPE support for Wrappers
- [3.7.0] Parameter Function Name
- [3.7.0] Progress Display
- [3.7.0] Process Context Requirements
- [3.7.0] Control Voltage Bus Flag
- [3.7.5] Module Info
- [3.7.9] Get Current SystemTime
- [3.7.9] Data Transfert Between Processor/Controller
- [3.7.11] Remap Parameter ID
VST 3 API Documentation
The VST 3 API is an interface collection designed for realtime audio processing components. Such a component can be an audio effect or an audio instrument.
VST Module Architecture
VST-MA is a component model system which is used in all Steinberg host applications as the basic layer for plug-in support.
Parameters and Automation
Description of how parameters are defined and used in VST 3.
VST 3 Units
A unit is a logical section of the plug-in.
Presets & Program Lists
How presets and program lists are handled in VST 3.
Complex Plug-in Structures / Multi-timbral Instruments
How to handle complex plug-in structures and multi-timbrality.
Data Exchange
How to transfer data from the realtime process function to the edit controller.
VST 3 Workflow Diagrams
Some useful graphical call sequences a VST 3 compliant host should follow.
VST 3 Locations / Format
Formats definition of a VST 3 plug-in and its preset and where they are located on different platforms.
About MIDI in VST 3
Unlike in VST 2, MIDI is not included in VST 3.
Host Requirements for VST 3 Support
Minimum Host requirements for VST 3 support.
[3.0.0] Interfaces supported by the plug-in
List of interfaces supported/implemented by the plug-in in VST 3.0.0.
[3.0.0] Interfaces supported by the host
List of interfaces supported/implemented by the host in VST 3.0.0.
[3.0.1] Parameter MIDI Mapping
How the mapping works between MIDI CCs and parameters.
[3.0.2] Parameter Finder
How the host can retrieve the parameter where the mouse cursor is located.
[3.1.0] Audio Presentation Latency
Inform the plug-in about how long from the moment of generation/acquiring (from file or from Input) it will take for its input to arrive, and how long it will take for its output to be presented (to output or to speaker).
[3.1.0] UI Group Editing, Dirty State & Open Editor Request
Improvement of the plug-in's integration in the host (dirty state, request Open Editor, group editing).
[3.1.0] KnobMode, openHelp & openAboutBox
Extension to allow the host to inform the plug-in about the host knob mode.
[3.5.0] Note Expression
A new way to control / modify / change a specific played note during playback.
[3.5.0] Key Switch
Allows information exchange between the plug-in and the host about which key switches are currently used.
[3.5.0] Remote Presentation of Parameters
How to better support remote devices/controllers (UI and hardware) for parameters.
[3.5.0] Context Menu
A plug-in can ask the host to create a context menu for a given exported parameter ID or a generic context menu.
[3.5.0] Enhanced Linked Parameters
This allows the host to start a parameter editing action which can generate other parameter changes (like linked parameters) and this in one session (between a beginEdit and endEdit).
[3.6.0] iOS Inter-App Audio
iOS InterApp-Audio application out of your VST 3 plug-in.
[3.6.0] Preset Meta-Information
Interface to access preset meta information from stream, used, for example, in setState in order to inform the plug-in about the current context in which the preset loading occurs.
[3.6.5] Channel Context Info
Allows the host to inform the plug-in about the context in which the plug-in is instantiated, mainly channel based info (color, name, index, ...).
[3.6.5] Unit-Bus Assignment Change
The plug-in has the possibility to inform the host with notifyUnitByBusChange that something has changed in the bus - unit assignment.
[3.6.5] Prefetchable
Indicates if the plug-in supports prefetch (dynamically).
[3.6.5] Automation State
Hosts can inform the plug-in about its current automation state (Read/Write/Nothing).
[3.6.6] PlugView Content Scaling
This interface communicates the content scale factor from the host to the plug-in view on systems where plug-ins cannot get this information directly like Microsoft Windows.
[3.6.8] Request Bus Activation
Allows the plug-in to request the host to activate or deactivate a specific bus.
[3.6.10] UI Snapshots
A VST 3 bundle can contain pre-rendered snapshot images for a VST 3 host as a visual representation of the plug-in UI.
[3.6.11] NoteExpression Physical UI Mapping
With this plug-in interface, the host can retrieve the preferred physical mapping associated to note expression supported by the plug-in.
[3.6.12] Legacy MIDI CC Out Event
This kind of event is reserved for generating MIDI CC as output event for kEvent Bus during the process call.
[3.6.12] MIDI Learn
If this interface is implemented by the edit controller, the host will call this method whenever there is live MIDI-CC input for the plug-in.
[3.6.12] Host Query Interface Support
Allows a plug-in to ask the host if a given plug-in interface is supported/used by the host.
[3.6.12] MPE support for Wrappers
Implemented on wrappers that support MPE (MIDI Polyphonic Expression) to Note Expression translation.
[3.7.0] Parameter Function Name
This interface allows the host to get a parameter associated to a specific meaning (a functionName) for a given unit.
[3.7.0] Progress Display
This interface allows the plug-in to ask the host to create a progress for specific tasks which take some time.
[3.7.0] Process Context Requirements
To get accurate process context information (Vst::ProcessContext), it is now required to implement this interface.
[3.7.5] Module Info
The moduleinfo.json describes the contents of the plug-in in a JSON5 compatible format.
[3.7.9] Get Current SystemTime
This interface allows a plug-in to ask the host for the current system time.
[3.7.9] Data Transfert Between Processor/Controller
These interfaces allow you to send data with a direct and thread-safe connection from the realtime audio context of the audio processor to the non-realtime audio context of the edit controller.
[3.7.11] Remap Parameter ID
This interface allows the plug-in to ask the host to remap some parameter ID if needed.