/ VST Home / Technical Documentation
[3.0.0] Interfaces supported by the plug-in
On this page:
- IComponent
- IAudioProcessor
- IEditController
- IConnectionPoint
- IUnitInfo
- IProgramListData
- IUnitData
- IPlugView
Related pages
List of interfaces supported/implemented by the plug-in in VST 3.0.0
IComponent
Component base interface.
- [plug imp]
- [released: 3.0.0]
- [mandatory]
This is the basic interface for a VST component and must always be supported. It contains the common parts of any kind of processing class. The parts that are specific to a media type are defined in a separate interface. An implementation component must provide both the specific interface and IComponent.
See also IPluginBase.
IAudioProcessor
Audio processing interface.
- [plug imp]
- [extends IComponent]
- [released: 3.0.0]
- [mandatory]
This interface must always be supported by audio processing plug-ins.
IEditController
Edit controller component interface.
- [plug imp]
- [released: 3.0.0]
- [mandatory]
The controller part of an effect or instrument with parameter handling (export, definition, conversion...).
See also IComponent::getControllerClassId, IMidiMapping.
IConnectionPoint
Connect a component with another one.
- [plug imp]
- [host imp]
- [released: 3.0.0]
- [mandatory]
This interface is used for the communication of separate components. Note that some hosts will place a proxy object between the components so that they are not directly connected.
See also Communication between the components.
IUnitInfo
Edit controller extension to describe the plug-in structure.
- [plug imp]
- [extends IEditController]
- [released: 3.0.0]
- [optional]
IUnitInfo describes the internal structure of the plug-in.
- The root unit is the component itself, so getUnitCount must return 1 at least.
- The root unit id has to be 0 (kRootUnitId).
- Each unit can reference one program list - this reference must not change.
- Each unit that uses a program list references one program of the list.
See also VST 3 Units, IUnitHandler.
IProgramListData
Component extension to access program list data.
- [plug imp]
- [extends IComponent]
- [released: 3.0.0]
- [optional]
A component can support program list data via this interface or/and unit preset data (IUnitData).
See also IUnitData, Complex Plug-in Structures / Multi-timbral Instruments.
IUnitData
Component extension to access unit data.
- [plug imp]
- [extends IComponent]
- [released: 3.0.0]
- [optional]
A component can support unit preset data via this interface or program list data (IProgramListData).
See also Presets & Program Lists.
IPlugView
Plug-in definition of a view.
- [plug imp]
- [released: 3.0.0]
Sizing of a view
After the creation of a IPlugView, the plug-in must make sure that it returns the correct size if the host asks for it (IPlugView::getSize ()).
Usually, the size of a plug-in view is fixed. But both the host and the plug-in can cause a view to be resized:
-
Host: If IPlugView::canResize () returns kResultTrue, the host will set up the window so that the user can resize it. While the user resizes the window, IPlugView::checkSizeConstraint () is called, allowing the plug-in to change the size to a valid supported rectangle size. The host then resizes the window to this rect and has to call IPlugView::onSize ().
-
Plug-in: The plug-in can call IPlugFrame::resizeView () and cause the host to resize the window. Afterwards, in the same callstack, the host has to call IPlugView::onSize () if a resize is needed (size was changed).
ⓘ Note
Note that if the host calls IPlugView::getSize () before calling IPlugView::onSize () (if needed), it will get the old size, not the current one!
Here the calling sequence:
- plug-in->host: IPlugFrame::resizeView (newSize)
- host->plug-in (optional): IPlugView::getSize () returns the currentSize (not the newSize!)
- host->plug-in: if newSize is different from the current size: IPlugView::onSize (newSize)
- host->plug-in (optional): IPlugView::getSize () returns the newSize
ⓘ Note
Please only resize the platform representation of the view when IPlugView::onSize() is called.
Keyboard handling
The plug-in view receives keyboard events from the host. A view implementation must not handle keyboard events by the means of platform callbacks, but let the host pass them to the view. The host depends on a proper return value when IPlugView::onKeyDown is called, otherwise the plug-in view may cause a malfunction of the host's key command handling.
See also IPlugFrame, Platform UI Types.