Introduction


VST Module Architecture

The VST Module Architecture described in this document is an object-oriented, cross-platform and compiler-independent* interface model. It specifies what components must "look like" and how they are created by the host application.

We can separate the specification into 3 layers:

  1. Interface convention:

    Everything visible for both the host and the Plug-In is "wrapped" into interfaces. An interface in C++ is a class with virtual methods only. The basic interface is
    FUnknown. All other interfaces are directly or indirectly derived from it.

  2. Module Export Interface:

    A module (Windows: Dynamic Link Library, MAC: Mach-O Bundle) contains the implementation of one or more Plug-In classes (e.g. MIDI Effects). The only symbol searched for is GetPluginFactory, a C-style function to create the factory object of the module.

  3. Purpose-specific interfaces:

    Each Plug-In category (MIDI Effects, etc...) defines its own set of purpose-specific interfaces. Additionally, some basic interfaces are shared across all categories.


COM Compatibility

The first layer of VST Module Architecture is binary compatible to Microsoft® COM (Component Object Model). The Vtable and Interface Identifier of FUnknown match with the corresponding COM interface IUnknown. The main difference is the organization and creation of components by a host application. VST Module Architecture does not require any Microsoft® COM source file. It is currently available for Windows and Mac OS X.



* Source code is provided in C++ only!

Copyright ©2004 Steinberg Media Technologies GmbH. All Rights Reserved.
Last Modified: