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:
-
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.
-
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.
-
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.