VST 3 Interfaces  VST 3.7
SDK for developing VST plug-in
[3.0.0] Interfaces supported by the plug-in

Component base interface: Vst::IComponent.

IComponent

  • [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: Vst::IAudioProcessor.

  • [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: Vst::IEditController.

  • [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: Vst::IConnectionPoint.

  • [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: Vst::IUnitInfo.

  • [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, using a program list, references one program of the list.
See also
VST 3 Units, IUnitHandler

IProgramListData

Component extension to access program list data: Vst::IProgramListData.

  • [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, Multi-timbral Program Lists

IUnitData

Component extension to access unit data: Vst::IUnitData.

  • [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
Program Lists

IPlugView

Plug-in definition of a view.

  • [plug imp]
  • [released: 3.0.0]
Sizing of a view
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 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 that if the host calls IPlugView::getSize () before calling IPlugView::onSize () (if needed), it will get the current (old) size not the wanted 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
      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
Back to Contents
Empty

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