VST 3 Interfaces
VST 3.7
SDK for developing VST plug-in
|
Formats definition of a VST 3 plug-in and its preset and where they are located on different platforms.
On the macOS platform, VST 3 plug-in is a standard macOS bundle, its file extension is ".vst3" and has the following folder structure:
MyPlugin.vst3/Contents/Resources/ => folder contains all additional resource files useful for the plug-in MyPlugin.vst3/Contents/MacOS/ => folder contains the plug-in’s macOS universal binary (Mach-O) MyPlugin.vst3/Contents/Info.plist => the plug-in’s property list MyPlugin.vst3/Contents/PkgInfo => specifies the type and creator codes of the bundle (optionnal)
On the Windows platform a VST 3 plug-in is organized as a bundle like package format (simple folder), its file extension is ".vst3" and has the following folder structure:
MyPlugin.vst3/Contents/Resources/ => folder can contain resource files useful for the plug-in MyPlugin.vst3/Contents/x86-win/MyPlugin.vst3 => folder contains the plug-in binary (32 bit dll for the i386 architecture) MyPlugin.vst3/Contents/x86_64-win/MyPlugin.vst3 => folder contains the plug-in binary (64 bit dll for the x86_64 architecture) MyPlugin.vst3/Contents/arm-win/MyPlugin.vst3 => Proposal: folder contains the plug-in binary (32 bit dll for the arm architecture) MyPlugin.vst3/Contents/arm_64-win/MyPlugin.vst3 => Proposal: folder contains the plug-in binary (64 bit dll for the arm64 architecture)
MyPlugin.vst3/desktop.ini => used to set custom icon in Windows Explorer MyPlugin.vst3/Plugin.ico => customized plug-in icon
In previous SDKs the VST 3 plug-in was defined as a single dll file with the vst3 extension. This is deprecated since VST 3.6.10.
The file desktop.ini should contain:
[.ShellClassInfo] IconResource=Plugin.ico,0
and you should then change their attributes with this command line (s for system to make sure that Windows will use it for the folder/bundle, r for read-only and h for hidden (optional)):
attrib +s +r +h desktop.ini attrib +r +h Plugin.ico
On Linux, a VST 3 plug-in is organized as a bundle like package format, its file extension is ".vst3", it follows this folder structure:
MyPlugin.vst3/Contents/Resources => folder contains all additional resource files useful for the plug-in MyPlugin.vst3/Contents/i386-linux => folder contains the plug-in binary (32 bit shared library .so for Kernel Architecture i386) MyPlugin.vst3/Contents/x86_64-linux => folder contains the plug-in binary (64 bit shared library .so for Kernel Architecture x86_64) MyPlugin.vst3/Contents/XXXX-linux => with XXXX the architecture name (based on the RPM Terminology + "-linux"), for example armv3l-linux, armv4b-linux, armv4l-linux, armv5tel-linux, armv5tejl-linux, armv6l-linux, armv7l-linux, armv8l-linux,
Since VST 3.6.10, a VST3 bundle can contain pre-rendered snapshot images for a VST3 host as a visual representation of the plug-in UI.
This snapshot must have a predefined format and file name so that a host can recognize it.
Note that all the bundles can be merged to one, which allows to have a cross-platform bundle/folder.
For example:
MyPlugin.vst3/ |_ Contents/ | |__ Resources/ | | |__ Snapshots/ | | | |__ 84E8DE5F92554F5396FAE4133C935A18_snapshot.png | | | |__ 84E8DE5F92554F5396FAE4133C935A18_snapshot_2.0x.png | | |__ Documentation/ | | | |__ Manual.pdf | | | |__ WhatsNew.pdf | | |__ Help/ | | |__ helpdoc.xml | | |__ MyPlugin.srf | | | |__ armv7l-linux/ | | |__ MyPlugin.so | | | |__ i686-linux/ | | |__ MyPlugin.so | | | |__ i386-linux/ | | |__ MyPlugin.so | | | |__ x86_64-linux/ | | |__ MyPlugin.so | | | |__ MacOS/ | | |__ MyPlugin | | | |__ x86-win/ | | |__ MyPlugin.vst3 | | | |__ x86_64-win/ | | |__ MyPlugin.vst3 | | | |__ Info.plist (macOS Only) | |__ PkgInfo (macOS Only) | |____desktop.ini (Windows only) |___ Plugin.ico (Windows only)
A VST 3 plug-in should be installed at specific folder location, the following tables specify these predefined locations for different operating system.
VST 3 does not require a plug-in registration like it is used with DirectX.
Links, Symbolic links or Shortcuts could be used from these predefined folders.
3 levels of folder location are defined:
On the macOS platform, the host application expects VST 3 plug-ins to be located in:
Priority | Location | Path | Comment |
---|---|---|---|
1 | User | /Users/$USERNAME/Library/Audio/Plug-ins/VST3/ | |
2 | Global | /Library/Audio/Plug-ins/VST3/ | |
3 | Global | /Network/Library/Audio/Plug-ins/VST3/ | |
4 | Application | $APPFOLDER/Contents/VST3/ |
Note: The host recursively scans these folders at startup in this order (User/Global/Application).
On the Windows platform, the host application expects VST 3 plug-ins to be located in:
Priority | Location | Path | Comment |
---|---|---|---|
1 | Global | /Program Files/Common Files/VST3/ | native bitdepth: 32bit plug-in on 32bit OS, 64bit on 64bit OS |
1 | Global | /Program Files (x86)/Common Files/VST3/ | 32bit Plug-ins on 64bit Windows |
2 | Application | $APPFOLDER/VST3/ |
Note: The host recursively scans these folders at startup in this order (Global/Application).
On the Linux platform, the host application expects VST 3 plug-ins to be located in:
Priority | Location | Path | Comment |
---|---|---|---|
1 | User | $HOME/.vst3/ | |
2 | Global | /usr/lib/vst3/ | native bitdepth: 32bit plug-in on 32bit OS, 64bit on 64bit OS |
2 | Global | /usr/lib32/vst3/ | 32bit Plug-ins on 64bit OS |
3 | Global | /usr/local/lib/vst3/ | native bitdepth: 32bit plug-in on 32bit OS, 64bit on 64bit OS |
3 | Global | /usr/local/lib32/vst3/ | 32bit Plug-ins on 64bit OS |
4 | Application | $APPFOLDER/vst3/ |
VST 3 presets are located at predefined folder locations on the computer, depending on the operating system.
Prio | Type | Scope | Writable | Path | Comment |
---|---|---|---|---|---|
1 | User | User | X | Users/$USERNAME/Library/Audio/Presets/$COMPANY/$PLUGIN-NAME/ | |
2 | Shared_Factory | Public | - | Library/Audio/Presets/$COMPANY/$PLUGIN-NAME/ | Computer shared FactoryROM |
3 | Shared_Factory | Public | - | Network/Library/Audio/Presets/$COMPANY/$PLUGIN-NAME/ | Network shared FactoryROM |
4 | App_Factory | Apps | - | [$APPFOLDER]/VST3 Presets/$COMPANY/$PLUGIN-NAME/ | Host Application (Cubase, ...) |
Prio | Type | Scope | Writable | Path | Comment |
---|---|---|---|---|---|
1 | User | user | X | [my documents]/vst3 presets/$company/$plugin-name/ | csidl_personal |
2 | User_Factory | user | X | [documents and settings/$username/application data]/vst3 presets/$company/$plugin-name/ | csidl_appdata |
3 | Shared_Factory | public | - | [documents and settings/$allusers/application data]/vst3 presets/$company/$plugin-name/ | csidl_common_appdata |
4 | App_Factory | Apps | - | [$APPFOLDER]/VST3 Presets/$COMPANY/$PLUGIN-NAME/ | Host Application (Cubase, ...) |
Prio | Type | Scope | Writable | Path | Comment |
---|---|---|---|---|---|
1 | User | User | X | [Users/$USERNAME/Documents]/VST3 Presets/$COMPANY/$PLUGIN-NAME/ | FOLDERID_Documents |
2 | User_Factory | User | X | [Users/$USERNAME/AppData/Roaming]/VST3 Presets/$COMPANY/$PLUGIN-NAME/ | FOLDERID_RoamingAppData |
3 | Shared_Factory | Public | - | [ProgramData]/VST3 Presets/$COMPANY/$PLUGIN-NAME/ | FOLDERID_ProgramData |
4 | App_Factory | Apps | - | [$APPFOLDER]/VST3 Presets/$COMPANY/$PLUGIN-NAME/ | Host Application (Cubase, ...) |
Prio | Type | Scope | Writable | Path | Comment |
---|---|---|---|---|---|
1 | User | User | X | $HOME/.vst3/presets/$COMPANY/$PLUGIN-NAME/ | |
2 | Shared_Factory | Public | - | /usr/share/vst3/presets/$COMPANY/$PLUGIN-NAME/ | |
3 | Shared_Factory | Public | - | /usr/local/share/vst3/presets/$COMPANY/$PLUGIN-NAME/ | |
4 | App_Factory | Apps | - | [$APPFOLDER]/vst3/presets/$COMPANY/$PLUGIN-NAME/ | Host Application |
See [3.5.0] Remote Representation of Parameters Support
Back to Contents