VST 3 Interfaces VST 3.6.11 SDK for developing VST Plug-in

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Groups Pages
VST 3 Locations / Format

Formats definition of a VST 3 Plug-in and its preset and where they are located on different platforms.

# Plug-in Format

## For the macOS platform

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)

## For the Windows platform

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 SDK's the Plug-in was defined as a single dll file with the vst3 extension. This is deprecated since version 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

## For the Linux platform

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,

## Snapshots

A VST3 bundle can contain prerendered snapshot images for a VST3 host as a visual representation of the Plug-in UI.
This snapshots must have a predefined format and filename so that a host can recognize it.

- The image format must be PNG
- The image needs to be located inside the bundle directory in the folder Resources/Snapshots/
- The filename must start with the unique ID of the audio processor printed in the form 84E8DE5F92554F5396FAE4133C935A18 followed by the string _snapshot and optionally followed by the HiDPI scale factor _2.0x and ending with the file extension .png.
  - For example again's snapshot must be named:
    - 84E8DE5F92554F5396FAE4133C935A18_snapshot.png
    - 84E8DE5F92554F5396FAE4133C935A18_snapshot_2.0x.png for the 2x scaled HiDPI variant.
  - If the HiDPI scale factor is omitted, a scale factor of 1 is used.

## Merged Bundle

Note that all the bundles could be merged to one.
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)

# Plug-in Locations

- VST 3 doesn't require a Plug-in registration like it is used with DirectX.
- A Plug-in should be installed at specific folder location (links, shortcuts could be used too); see below for different predefined locations.

## For the macOS platform

On the macOS platform, the host application expects VST 3 Plug-ins to be located in:

    -------------------------------------------------------------------------------------------------------------------
    Priority   Location             Path
    -------------------------------------------------------------------------------------------------------------------
    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).

## For the Windows platform

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

## For Linux platform

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/
    -------------------------------------------------------------------------------------------------------------------

# Preset Format

- The file extension has to be ".vstpreset".
- Specification of a VST 3 Preset file
- Check Steinberg::Vst::PresetFile source code which allow to read and write such preset.

# Preset Locations

- $COMPANY and $PLUGIN-NAME folder names contain only allowed characters for file naming (replace characters "\\*?/:<>|\" by "_").
  Note: Each path defined below should be scanned in the given priority, presets extracted and added to the preset list.

## For Mac platform

    --------------------------------------------------------------------------------------------------------------------------
    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, ...)
    --------------------------------------------------------------------------------------------------------------------------

## For Windows XP/2000 platform

    -----------------------------------------------------------------------------------------------------------------------------------------
    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, ...)
    -----------------------------------------------------------------------------------------------------------------------------------------

## For Windows Vista/7/8/10 platform

    ------------------------------------------------------------------------------------------------------------------------------
    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, ...)
    ------------------------------------------------------------------------------------------------------------------------------

## For Linux platform

    --------------------------------------------------------------------------------------------------------------------------
    Prio  Type         Scope  Writable  Path                                                           Comment
    --------------------------------------------------------------------------------------------------------------------------
    1     User         User      X      $HOME/.vst3/presets/$COMPANY/$PLUGIN-NAME/
    2    Global       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
    --------------------------------------------------------------------------------------------------------------------------

Back to Contents

Empty

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