Page tree
Skip to end of metadata
Go to start of metadata

Introduction

This small application (Win/macOS) allows you to generate easily a new VST 3 plug-in project by just entering in a GUI some parameters.

Check the folder "VST3_Project_Generator" of the SDK!

Start the VST 3 Project Generator Application


The first time you start the application, you will ask to define 2 folders where are located the VST SDK and the CMake tool. It still possible to change these folders afterward in the Preferences Tab, see Setting the Preferences.

The Visit us: menu includes some useful links.

Locate CMake

If you have already downloaded the CMake tool, you just have to indicate the Project Generator where it is located, for this click on Locate CMake and choose with the file selector the cmake.exe file:

If you do not have previously installed the CMake tool, you could download it, just click on Download CMake, an internet browser will open the dedicated CMake webpage, check the Download section and install CMake.

Locate VST SDK

If you have already downloaded the VST SDK, you just have to indicate the Project Generator where it is located, for this click on Locate VST SDK and choose with the folder selector the VST3_SDK folder:

If you do not have previously installed the VST SDK, you could download it, just click on Download VST SDK, a dialog appears:


You have 2 possibilities to download the VST 3 SDK:

VST SDK and cmake successfully located

As soon as the requested 2 locations are founded, the user interface of the application should like this:


The next time you start the Project Generator application you will not asked to relocate them!

Setting the Preferences

Before creating any plug-in project, you have to define some global preferences which will be automatically saved when closing the application.


Company Information

The information included in this subsection will be used for generating Factory information associated to all plug-ins you will generate. This will be read by the host application loading your plug-ins and the host may display it to an user.

  • Vendor: this is your Company name: e.g. "Steinberg Media Technologies GmbH"
  • E-Mail: your email, which could be used by the host to redirect an user to your support for example: e.g. "support@steinberg.net"
  • URL: the URL of your Company: e.g. "https://www.steinberg.net"
  • C++ Namespace: this allows you to predefine a namespace which will be used to surround your plug-in source code: e.g. "MyWantedNamespace":
//...
namespace MyWantedNamespace {

//------------------------------------------------------------------------
MyPluginController::MyPluginController ()
{
	//...
}
} // end namespace

Path Preferences

Like mentioned above in the subsection Path Preferences you could change several locations:

  • VST3 SDK Path: the current used VST 3 SDK you have previously downloaded.
  • CMake Executable Path: the current used CMake tool

Setting and creating a plug-in project

In this tab you are defining some information for the creation of a new plug-in:

  • Name: the name of the plug-in which is displayed in a host: e.g. "AGain"
  • Type: this specifies the main VST 3 Sub-Category (PlugType) of your plug-in:
    • Audio Effect: (kFx) a simple audio effect Stereo→Stereo
    • Instrument: (kInstrument) a simple instrument with 1 Event input and 1 stereo Audio output
  • Use VSTGUI: check this if you want to use VSTGUI as UI framework


  • C++Class Name: this specifies the basename of your plug-in classes: e.g. "AGain"
class AGainProcessor : public AudioEffect
{
	//...
};

class AGainController : public EditControllerEx1
{
	//...
};
  • Bundle ID: this is the ID needed for example for the Info.plist of macOS: e.g. "com.steinberg.again"
  • Filename Prefix: (optional) this will be added as file prefix to the created files: e.g. "AGain" => AGainProcessor.cpp / AGainController.h / ...
  • Output Directory: you define here in which folder your project will be created
  • CMake Generator: CMake tool required to define a generator in order to create configuration files for a specific build system: there are 2 kinds of generators: Command-Line and IDE. Choose the one you need for example:
    • on Windows: Visual Studio 16 2019
    • on macOS: Xcode


Once all information is setup, you could click on Create, a script will created and CMake will be used and the chosen IDE will be opened. In the bottom area the script output is displayed, you have the possibility to copy it by using the dedicated button: Copy Script Output To Clipboard.

Example of script Output
C:\Program Files\CMake\bin\CMake.exe C:\Users\YGrabit\Desktop\SDKs\VST3_SDKs\3.7.1\VST_SDK\VST3_Project_Generator\Windows\Resources\GenerateVST3Plugin.cmake -DSMTG_VST3_SDK_SOURCE_DIR_CLI="C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/VST_SDK/VST3_SDK" -DSMTG_GENERATOR_OUTPUT_DIRECTORY_CLI="C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1" -DSMTG_PLUGIN_NAME_CLI="AGain" -DSMTG_PLUGIN_CATEGORY_CLI="Fx" -DSMTG_CMAKE_PROJECT_NAME_CLI="AGain" -DSMTG_PLUGIN_BUNDLE_NAME_CLI="AGain" -DSMTG_PLUGIN_IDENTIFIER_CLI="com.steinberg.again" -DSMTG_VENDOR_NAME_CLI="Steinberg Media Technologies" -DSMTG_VENDOR_HOMEPAGE_CLI="www.steinberg.net" -DSMTG_VENDOR_EMAIL_CLI="info@steinberg.net" -DSMTG_PREFIX_FOR_FILENAMES_CLI="" -DSMTG_PLUGIN_CLASS_NAME_CLI="AGain" -DSMTG_ENABLE_VSTGUI_SUPPORT_CLI=ON -P "C:\Users\YGrabit\Desktop\SDKs\VST3_SDKs\3.7.1\VST_SDK\VST3_Project_Generator\Windows\Resources\GenerateVST3Plugin.cmake"
==================================================

 Steinberg Media Technologies GmbH
 VST3 Project Generator

==================================================

-- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.9.2.windows.1") 
-- SMTG_CMAKE_SCRIPT_DIR           : C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/VST_SDK/VST3_Project_Generator/Windows/Resources
-- SMTG_ENABLE_VSTGUI_SUPPORT      : ON
-- SMTG_GENERATOR_OUTPUT_DIRECTORY : C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1
-- SMTG_TEMPLATE_FILES_PATH        : C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/VST_SDK/VST3_Project_Generator/Windows/Resources/cmake/templates
-- SMTG_VST3_SDK_SOURCE_DIR        : C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/VST_SDK/VST3_SDK

-- SMTG_VENDOR_NAME            : Steinberg Media Technologies
-- SMTG_VENDOR_HOMEPAGE        : www.steinberg.net
-- SMTG_VENDOR_EMAIL           : info@steinberg.net
-- SMTG_SOURCE_COPYRIGHT_HEADER: Copyright(c) 2020 Steinberg Media Technologies.
-- SMTG_PLUGIN_NAME            : AGain
-- SMTG_PREFIX_FOR_FILENAMES   : e.g. myplugincontroller.h
-- SMTG_PLUGIN_IDENTIFIER      : com.steinberg.again, used e.g. in Info.plist
-- SMTG_PLUGIN_BUNDLE_NAME     : AGain

-- SMTG_CMAKE_PROJECT_NAME     : e.g. AGain will output AGain.vst3
-- SMTG_VENDOR_NAMESPACE       : e.g. namespace MyCompanyName {...}
-- SMTG_PLUGIN_CLASS_NAME      : e.g. class AGainProcessor : public AudioEffect {...}
-- SMTG_PLUGIN_CATEGORY        : Fx

-- SMTG_Processor_UUID         : 0x36D8F6FA, 0x0ABC50C3, 0xAEE42A75, 0x685482C3
-- SMTG_Controller_UUID        : 0x5F2BD906, 0x14B8552D, 0x87FEBAEA, 0x22EFEBEF

-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/CMakeLists.txt
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/resource/Info.plist
-- Copied    : C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/resource/36D8F6FA0ABC50C3AEE42A75685482C3_snapshot.png
-- Copied    : C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/resource/36D8F6FA0ABC50C3AEE42A75685482C3_snapshot_2.0x.png
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/resource/myplugineditor.uidesc
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/resource/win32resource.rc
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/source/version.h
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/source/myplugincids.h
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/source/myplugincontroller.cpp
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/source/myplugincontroller.h
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/source/mypluginentry.cpp
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/source/mypluginprocessor.cpp
-- Configured: C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/AGain/source/mypluginprocessor.h

C:\Program Files\CMake\bin\CMake.exe -G "Visual Studio 16 2019" -S "C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1\AGain" -B "C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1\AGain\build" -DSMTG_ADD_VSTGUI=ON 
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.18363.
-- The C compiler identification is MSVC 19.27.29112.0
-- The CXX compiler identification is MSVC 19.27.29112.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SMTG_PLUGIN_TARGET_PATH is set to : C:/Program Files/Common Files/VST3
-- Could NOT find EXPAT (missing: EXPAT_LIBRARY EXPAT_INCLUDE_DIR) 
-- VSTGUI will use the embedded Expat package!
-- SMTG_VSTGUI_ROOT is set to : C:/Users/YGrabit/Desktop/SDKs/VST3_SDKs/3.7.1/VST_SDK/VST3_SDK
-- SMTG_AAX_SDK_PATH is not set. If you need it, please download the AAX SDK!
-- Setup running validator for AGain
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/XXX/VST3_SDKs/3.7/TestGenerator/AGain/build

That´s it!

On this page:

Related pages:

  • No labels