diff --git a/src/.vst3_tutorials/README.md b/src/.vst3_tutorials/README.md
index a035a4aa..8e011a66 100644
--- a/src/.vst3_tutorials/README.md
+++ b/src/.vst3_tutorials/README.md
@@ -5,6 +5,7 @@ Here, you will find VST 3 tutorial projects
You can find the tutorials in the Readme files of the following sub-directories:
- [Advanced Techniques Tutorial](advanced-techniques-tutorial/)
+- [Audio Unit Tutorial](audiounit-tutorial/)
- [Data Exchange Tutorial](dataexchange-tutorial/)
----
diff --git a/src/.vst3_tutorials/advanced-techniques-tutorial/CMakeLists.txt b/src/.vst3_tutorials/advanced-techniques-tutorial/CMakeLists.txt
index 9e6ab2df..991314c6 100644
--- a/src/.vst3_tutorials/advanced-techniques-tutorial/CMakeLists.txt
+++ b/src/.vst3_tutorials/advanced-techniques-tutorial/CMakeLists.txt
@@ -10,7 +10,7 @@ project(advanced-techniques-tutorial
# Version number symbols usable in C++ can be found in
# source/version.h and ${PROJECT_BINARY_DIR}/projectversion.h.
VERSION 1.0.0.0
- DESCRIPTION "advanced-techniques-tutorial VST 3 Plug-in"
+ DESCRIPTION "advanced-techniques-tutorial VST 3 plug-in"
)
set(SMTG_ENABLE_VST3_HOSTING_EXAMPLES 0)
diff --git a/src/.vst3_tutorials/audiounit-tutorial/.gitignore b/src/.vst3_tutorials/audiounit-tutorial/.gitignore
new file mode 100644
index 00000000..567609b1
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/.gitignore
@@ -0,0 +1 @@
+build/
diff --git a/src/.vst3_tutorials/audiounit-tutorial/CMakeLists.txt b/src/.vst3_tutorials/audiounit-tutorial/CMakeLists.txt
new file mode 100644
index 00000000..a743863d
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/CMakeLists.txt
@@ -0,0 +1,114 @@
+cmake_minimum_required(VERSION 3.14.0)
+
+option(SMTG_ENABLE_VST3_PLUGIN_EXAMPLES "Enable VST 3 Plug-in Examples" OFF)
+option(SMTG_ENABLE_VST3_HOSTING_EXAMPLES "Enable VST 3 Hosting Examples" OFF)
+
+set(CMAKE_OSX_DEPLOYMENT_TARGET 10.13 CACHE STRING "")
+
+set(vst3sdk_SOURCE_DIR "../../")
+if(NOT vst3sdk_SOURCE_DIR)
+ message(FATAL_ERROR "Path to VST3 SDK is empty!")
+endif()
+
+project(VST3_AU_PlugIn
+ # This is your plug-in version number. Change it here only.
+ # Version number symbols usable in C++ can be found in
+ # source/version.h and ${PROJECT_BINARY_DIR}/projectversion.h.
+ VERSION 1.2.1.8
+ DESCRIPTION "VST3_AU_PlugIn VST 3 Plug-in"
+)
+
+# -- AudioUnitSDK --
+include(FetchContent)
+FetchContent_Declare(
+ AudioUnitSDK
+ GIT_REPOSITORY https://github.com/apple/AudioUnitSDK.git
+ GIT_TAG HEAD
+)
+FetchContent_MakeAvailable(AudioUnitSDK)
+FetchContent_GetProperties(
+ AudioUnitSDK
+ SOURCE_DIR SMTG_AUDIOUNIT_SDK_PATH
+)
+# -------------------
+
+set(SMTG_VSTGUI_ROOT "${vst3sdk_SOURCE_DIR}")
+
+add_subdirectory(${vst3sdk_SOURCE_DIR} ${PROJECT_BINARY_DIR}/vst3sdk)
+smtg_enable_vst3_sdk()
+
+smtg_add_vst3plugin(VST3_AU_PlugIn
+ source/version.h
+ source/cids.h
+ source/processor.h
+ source/processor.cpp
+ source/controller.h
+ source/controller.cpp
+ source/entry.cpp
+)
+
+#- VSTGUI Wanted ----
+if(SMTG_ENABLE_VSTGUI_SUPPORT)
+ target_sources(VST3_AU_PlugIn
+ PRIVATE
+ resource/editor.uidesc
+ )
+ target_link_libraries(VST3_AU_PlugIn
+ PRIVATE
+ vstgui_support
+ )
+ smtg_target_add_plugin_resources(VST3_AU_PlugIn
+ RESOURCES
+ "resource/editor.uidesc"
+ )
+endif(SMTG_ENABLE_VSTGUI_SUPPORT)
+# -------------------
+
+smtg_target_add_plugin_snapshots (VST3_AU_PlugIn
+ RESOURCES
+ resource/301DF339AFA3533FB5053B1B41367137_snapshot.png
+ resource/301DF339AFA3533FB5053B1B41367137_snapshot_2.0x.png
+)
+
+target_link_libraries(VST3_AU_PlugIn
+ PRIVATE
+ sdk
+)
+
+smtg_target_configure_version_file(VST3_AU_PlugIn)
+
+if(SMTG_MAC)
+ smtg_target_set_bundle(VST3_AU_PlugIn
+ BUNDLE_IDENTIFIER com.steinberg.vst3sdk.audiounit-tutorial
+ COMPANY_NAME "Steinberg Media Technologies"
+ )
+ smtg_target_set_debug_executable(VST3_AU_PlugIn
+ "/Applications/VST3PluginTestHost.app"
+ "--pluginfolder;$(BUILT_PRODUCTS_DIR)"
+ )
+elseif(SMTG_WIN)
+ target_sources(VST3_AU_PlugIn PRIVATE
+ resource/win32resource.rc
+ )
+ if(MSVC)
+ set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT VST3_AU_PlugIn)
+
+ smtg_target_set_debug_executable(VST3_AU_PlugIn
+ "$(ProgramW6432)/Steinberg/VST3PluginTestHost/VST3PluginTestHost.exe"
+ "--pluginfolder \"$(OutDir)/\""
+ )
+ endif()
+endif(SMTG_MAC)
+
+# -- Add the AUv2 target
+if (SMTG_MAC AND XCODE AND SMTG_ENABLE_AUV2_BUILDS)
+ list(APPEND CMAKE_MODULE_PATH "${vst3sdk_SOURCE_DIR}/cmake/modules")
+ include(SMTG_AddVST3AuV2)
+ smtg_target_add_auv2(VST3_AU_PlugIn_AU
+ BUNDLE_NAME audiounit_tutorial
+ BUNDLE_IDENTIFIER com.steinberg.vst3sdk.audiounit_tutorial.audiounit
+ INFO_PLIST_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/resource/au-info.plist
+ VST3_PLUGIN_TARGET VST3_AU_PlugIn)
+ smtg_target_set_debug_executable(VST3_AU_PlugIn_AU "/Applications/Reaper.app")
+endif(SMTG_MAC AND XCODE AND SMTG_ENABLE_AUV2_BUILDS)
+
diff --git a/src/.vst3_tutorials/audiounit-tutorial/README.md b/src/.vst3_tutorials/audiounit-tutorial/README.md
new file mode 100644
index 00000000..6b1b263f
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/README.md
@@ -0,0 +1,140 @@
+# AudioUnit Version 2 Tutorial
+
+In this tutorial you will learn how to add AudioUnit Version 2 support to your **VST 3** plug-in.
+
+First of all, you need a **VST 3** plug-in project. For this tutorial we have generated one via the [VST 3 Project Generator](https://steinbergmedia.github.io/vst3_dev_portal/pages/What+is+the+VST+3+SDK/Project+Generator.html) from the SDK.
+
+# Adding the AudioUnit Version 2 Target
+
+## Obtaining the required AudioUnit SDK
+
+The *AudioUnit Version 2* target needs the official *AudioUnit SDK* from Apple.
+As of this writing you can find it on GitHub: [https://github.com/apple/AudioUnitSDK](https://github.com/apple/AudioUnitSDK)
+
+How you obtain and store the SDK is up to you, for the reproducibility of this tutorial, we will download it via *CMake* when generating the project.
+So we add the following text to the *CMakeLists.txt* directly before we include the **VST 3 SDK**.
+
+```
+include(FetchContent)
+FetchContent_Declare(
+ AudioUnitSDK
+ GIT_REPOSITORY https://github.com/apple/AudioUnitSDK.git
+ GIT_TAG HEAD
+)
+FetchContent_MakeAvailable(AudioUnitSDK)
+FetchContent_GetProperties(
+ AudioUnitSDK
+ SOURCE_DIR SMTG_AUDIOUNIT_SDK_PATH
+)
+```
+
+It is important to set the `SMTG_AUDIOUNIT_SDK_PATH` variable to tell the **VST 3 SDK** where to find the AudioUnit SDK.
+
+## Creating the property list
+
+For *AudioUnit Version 2* you need a manufacturer OSType registered with Apple.
+How to do this is out of the scope for this tutorial, please search the web on how this is done.
+
+Besides the manufacturer OSType you also need a subtype OSType which you can choose by yourself.
+Both the manufacturer and subtype account for the uniqueness of your *AudioUnit Version 2*.
+
+Now you can generate the required property list file:
+
+```
+
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ BNDL
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ CSResourcesFileMapped
+ yes
+ AudioComponents
+
+
+ factoryFunction
+ AUWrapperFactory
+ description
+ AudioUnit Tutorial
+ manufacturer
+ Stgb
+ name
+ Steinberg: AudioUnit Tutorial
+ subtype
+ 0002
+ type
+ aufx
+ version
+ 1
+
+
+
+
+```
+
+Make sure to change the strings for `description`, `manufacturer`, `name`, `subtype` and `type`.
+The type must be one of:
+- aufx (Audio Effect)
+- aumu (Instrument)
+- aumf (Audio Effect with MIDI Input/Output)
+
+If you build an audio effect you also need to add the supported channel layouts to the list:
+
+```
+AudioUnit SupportedNumChannels
+
+
+ Outputs
+ 2
+ Inputs
+ 2
+
+
+ Outputs
+ 2
+ Inputs
+ 1
+
+
+ Outputs
+ 1
+ Inputs
+ 1
+
+
+```
+
+Save it to a file called `au-info.plist` inside the resource directory.
+
+## Adding the AudioUnit Version 2 Target
+
+Now you can add the AudioUnit target to the end of your *CMakeLists.txt* file:
+
+```
+if (SMTG_MAC AND XCODE AND SMTG_COREAUDIO_SDK_PATH)
+ list(APPEND CMAKE_MODULE_PATH "${vst3sdk_SOURCE_DIR}/cmake/modules")
+ include(SMTG_AddVST3AuV2)
+ smtg_target_add_auv2(VST3_AU_PlugIn_AU
+ BUNDLE_NAME audiounit_tutorial
+ BUNDLE_IDENTIFIER com.steinberg.vst3sdk.audiounit_tutorial.audiounit
+ INFO_PLIST_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/resource/au-info.plist
+ VST3_PLUGIN_TARGET VST3_AU_PlugIn)
+ smtg_target_set_debug_executable(VST3_AU_PlugIn_AU "/Applications/Reaper.app")
+endif(SMTG_MAC AND XCODE AND SMTG_COREAUDIO_SDK_PATH)
+```
+
+Now after generating and building the project the "audiounit_tutorial" plug-in should be available in any AudioUnit host.
diff --git a/src/.vst3_tutorials/audiounit-tutorial/resource/301DF339AFA3533FB5053B1B41367137_snapshot.png b/src/.vst3_tutorials/audiounit-tutorial/resource/301DF339AFA3533FB5053B1B41367137_snapshot.png
new file mode 100644
index 00000000..76d08453
Binary files /dev/null and b/src/.vst3_tutorials/audiounit-tutorial/resource/301DF339AFA3533FB5053B1B41367137_snapshot.png differ
diff --git a/src/.vst3_tutorials/audiounit-tutorial/resource/301DF339AFA3533FB5053B1B41367137_snapshot_2.0x.png b/src/.vst3_tutorials/audiounit-tutorial/resource/301DF339AFA3533FB5053B1B41367137_snapshot_2.0x.png
new file mode 100644
index 00000000..5d62236e
Binary files /dev/null and b/src/.vst3_tutorials/audiounit-tutorial/resource/301DF339AFA3533FB5053B1B41367137_snapshot_2.0x.png differ
diff --git a/src/.vst3_tutorials/audiounit-tutorial/resource/au-info.plist b/src/.vst3_tutorials/audiounit-tutorial/resource/au-info.plist
new file mode 100644
index 00000000..a274374c
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/resource/au-info.plist
@@ -0,0 +1,64 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ BNDL
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ CSResourcesFileMapped
+ yes
+ AudioComponents
+
+
+ factoryFunction
+ AUWrapperFactory
+ description
+ AudioUnit Tutorial
+ manufacturer
+ Stgb
+ name
+ Steinberg: AudioUnit Tutorial
+ subtype
+ 0002
+ type
+ aufx
+ version
+ 1
+
+
+ AudioUnit SupportedNumChannels
+
+
+ Outputs
+ 2
+ Inputs
+ 2
+
+
+ Outputs
+ 2
+ Inputs
+ 1
+
+
+ Outputs
+ 1
+ Inputs
+ 1
+
+
+
+
diff --git a/src/.vst3_tutorials/audiounit-tutorial/resource/editor.uidesc b/src/.vst3_tutorials/audiounit-tutorial/resource/editor.uidesc
new file mode 100644
index 00000000..060e064c
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/resource/editor.uidesc
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/.vst3_tutorials/audiounit-tutorial/resource/win32resource.rc b/src/.vst3_tutorials/audiounit-tutorial/resource/win32resource.rc
new file mode 100644
index 00000000..32946777
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/resource/win32resource.rc
@@ -0,0 +1,44 @@
+#include
+#include "../source/version.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Version
+/////////////////////////////////////////////////////////////////////////////
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT
+ PRODUCTVERSION MAJOR_VERSION_INT,SUB_VERSION_INT,RELEASE_NUMBER_INT,BUILD_NUMBER_INT
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040004e4"
+ BEGIN
+ VALUE "FileVersion", FULL_VERSION_STR"\0"
+ VALUE "ProductVersion", FULL_VERSION_STR"\0"
+ VALUE "OriginalFilename", stringOriginalFilename"\0"
+ VALUE "FileDescription", stringFileDescription"\0"
+ VALUE "InternalName", stringFileDescription"\0"
+ VALUE "ProductName", stringFileDescription"\0"
+ VALUE "CompanyName", stringCompanyName"\0"
+ VALUE "LegalCopyright", stringLegalCopyright"\0"
+ VALUE "LegalTrademarks", stringLegalTrademarks"\0"
+ //VALUE "PrivateBuild", " \0"
+ //VALUE "SpecialBuild", " \0"
+ //VALUE "Comments", " \0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x400, 1252
+ END
+END
diff --git a/src/.vst3_tutorials/audiounit-tutorial/source/cids.h b/src/.vst3_tutorials/audiounit-tutorial/source/cids.h
new file mode 100644
index 00000000..9ea20baf
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/source/cids.h
@@ -0,0 +1,18 @@
+//------------------------------------------------------------------------
+// Copyright(c) 2024 Steinberg Media Technologies.
+//------------------------------------------------------------------------
+
+#pragma once
+
+#include "pluginterfaces/base/funknown.h"
+#include "pluginterfaces/vst/vsttypes.h"
+
+namespace Steinberg::Vst {
+//------------------------------------------------------------------------
+static const Steinberg::FUID kVST3AUPlugInProcessorUID (0x301DF339, 0xAFA3533F, 0xB5053B1B, 0x41367137);
+static const Steinberg::FUID kVST3AUPlugInControllerUID (0x473E512F, 0x68875B49, 0xB2EEFB2D, 0x886C33C6);
+
+#define VST3AUPlugInVST3Category "Fx"
+
+//------------------------------------------------------------------------
+} // namespace Steinberg::Vst
diff --git a/src/.vst3_tutorials/audiounit-tutorial/source/controller.cpp b/src/.vst3_tutorials/audiounit-tutorial/source/controller.cpp
new file mode 100644
index 00000000..c0054435
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/source/controller.cpp
@@ -0,0 +1,82 @@
+//------------------------------------------------------------------------
+// Copyright(c) 2024 Steinberg Media Technologies.
+//------------------------------------------------------------------------
+
+#include "controller.h"
+#include "cids.h"
+#include "vstgui/plugin-bindings/vst3editor.h"
+
+using namespace Steinberg;
+
+namespace Steinberg::Vst {
+
+//------------------------------------------------------------------------
+// VST3AUPlugInController Implementation
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInController::initialize (FUnknown* context)
+{
+ // Here the Plug-in will be instantiated
+
+ //---do not forget to call parent ------
+ tresult result = EditControllerEx1::initialize (context);
+ if (result != kResultOk)
+ {
+ return result;
+ }
+
+ // Here you could register some parameters
+
+ return result;
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInController::terminate ()
+{
+ // Here the Plug-in will be de-instantiated, last possibility to remove some memory!
+
+ //---do not forget to call parent ------
+ return EditControllerEx1::terminate ();
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInController::setComponentState (IBStream* state)
+{
+ // Here you get the state of the component (Processor part)
+ if (!state)
+ return kResultFalse;
+
+ return kResultOk;
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInController::setState (IBStream* state)
+{
+ // Here you get the state of the controller
+
+ return kResultTrue;
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInController::getState (IBStream* state)
+{
+ // Here you are asked to deliver the state of the controller (if needed)
+ // Note: the real state of your plug-in is saved in the processor
+
+ return kResultTrue;
+}
+
+//------------------------------------------------------------------------
+IPlugView* PLUGIN_API VST3AUPlugInController::createView (FIDString name)
+{
+ // Here the Host wants to open your editor (if you have one)
+ if (FIDStringsEqual (name, Vst::ViewType::kEditor))
+ {
+ // create your editor here and return a IPlugView ptr of it
+ auto* view = new VSTGUI::VST3Editor (this, "view", "editor.uidesc");
+ return view;
+ }
+ return nullptr;
+}
+
+//------------------------------------------------------------------------
+} // namespace Steinberg::Vst
diff --git a/src/.vst3_tutorials/audiounit-tutorial/source/controller.h b/src/.vst3_tutorials/audiounit-tutorial/source/controller.h
new file mode 100644
index 00000000..6e4e9953
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/source/controller.h
@@ -0,0 +1,49 @@
+//------------------------------------------------------------------------
+// Copyright(c) 2024 Steinberg Media Technologies.
+//------------------------------------------------------------------------
+
+#pragma once
+
+#include "public.sdk/source/vst/vsteditcontroller.h"
+
+namespace Steinberg::Vst {
+
+//------------------------------------------------------------------------
+// VST3AUPlugInController
+//------------------------------------------------------------------------
+class VST3AUPlugInController : public Steinberg::Vst::EditControllerEx1
+{
+public:
+//------------------------------------------------------------------------
+ VST3AUPlugInController () = default;
+ ~VST3AUPlugInController () SMTG_OVERRIDE = default;
+
+ // Create function
+ static Steinberg::FUnknown* createInstance (void* /*context*/)
+ {
+ return (Steinberg::Vst::IEditController*)new VST3AUPlugInController;
+ }
+
+ //--- from IPluginBase -----------------------------------------------
+ Steinberg::tresult PLUGIN_API initialize (Steinberg::FUnknown* context) SMTG_OVERRIDE;
+ Steinberg::tresult PLUGIN_API terminate () SMTG_OVERRIDE;
+
+ //--- from EditController --------------------------------------------
+ Steinberg::tresult PLUGIN_API setComponentState (Steinberg::IBStream* state) SMTG_OVERRIDE;
+ Steinberg::IPlugView* PLUGIN_API createView (Steinberg::FIDString name) SMTG_OVERRIDE;
+ Steinberg::tresult PLUGIN_API setState (Steinberg::IBStream* state) SMTG_OVERRIDE;
+ Steinberg::tresult PLUGIN_API getState (Steinberg::IBStream* state) SMTG_OVERRIDE;
+
+ //---Interface---------
+ DEFINE_INTERFACES
+ // Here you can add more supported VST3 interfaces
+ // DEF_INTERFACE (Vst::IXXX)
+ END_DEFINE_INTERFACES (EditController)
+ DELEGATE_REFCOUNT (EditController)
+
+//------------------------------------------------------------------------
+protected:
+};
+
+//------------------------------------------------------------------------
+} // namespace Steinberg::Vst
diff --git a/src/.vst3_tutorials/audiounit-tutorial/source/entry.cpp b/src/.vst3_tutorials/audiounit-tutorial/source/entry.cpp
new file mode 100644
index 00000000..6b8e6e1c
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/source/entry.cpp
@@ -0,0 +1,50 @@
+//------------------------------------------------------------------------
+// Copyright(c) 2024 Steinberg Media Technologies.
+//------------------------------------------------------------------------
+
+#include "processor.h"
+#include "controller.h"
+#include "cids.h"
+#include "version.h"
+
+#include "public.sdk/source/main/pluginfactory.h"
+
+#define stringPluginName "VST3 AU PlugIn"
+
+using namespace Steinberg::Vst;
+using namespace Steinberg::Vst;
+
+//------------------------------------------------------------------------
+// VST Plug-in Entry
+//------------------------------------------------------------------------
+
+BEGIN_FACTORY_DEF ("Steinberg Media Technologies",
+ "https://steinberg.net",
+ "mailto:info@steinberg.de")
+
+ //---First Plug-in included in this factory-------
+ // its kVstAudioEffectClass component
+ DEF_CLASS2 (INLINE_UID_FROM_FUID(kVST3AUPlugInProcessorUID),
+ PClassInfo::kManyInstances, // cardinality
+ kVstAudioEffectClass, // the component category (do not changed this)
+ stringPluginName, // here the Plug-in name (to be changed)
+ Vst::kDistributable, // means that component and controller could be distributed on different computers
+ VST3AUPlugInVST3Category, // Subcategory for this Plug-in (to be changed)
+ FULL_VERSION_STR, // Plug-in version (to be changed)
+ kVstVersionString, // the VST 3 SDK version (do not changed this, use always this define)
+ VST3AUPlugInProcessor::createInstance) // function pointer called when this component should be instantiated
+
+ // its kVstComponentControllerClass component
+ DEF_CLASS2 (INLINE_UID_FROM_FUID (kVST3AUPlugInControllerUID),
+ PClassInfo::kManyInstances, // cardinality
+ kVstComponentControllerClass,// the Controller category (do not changed this)
+ stringPluginName "Controller", // controller name (could be the same than component name)
+ 0, // not used here
+ "", // not used here
+ FULL_VERSION_STR, // Plug-in version (to be changed)
+ kVstVersionString, // the VST 3 SDK version (do not changed this, use always this define)
+ VST3AUPlugInController::createInstance)// function pointer called when this component should be instantiated
+
+ //----for others Plug-ins contained in this factory, put like for the first Plug-in different DEF_CLASS2---
+
+END_FACTORY
diff --git a/src/.vst3_tutorials/audiounit-tutorial/source/processor.cpp b/src/.vst3_tutorials/audiounit-tutorial/source/processor.cpp
new file mode 100644
index 00000000..04f21b97
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/source/processor.cpp
@@ -0,0 +1,180 @@
+//------------------------------------------------------------------------
+// Copyright(c) 2024 Steinberg Media Technologies.
+//------------------------------------------------------------------------
+
+#include "processor.h"
+#include "cids.h"
+
+#include "base/source/fstreamer.h"
+#include "pluginterfaces/vst/ivstparameterchanges.h"
+
+using namespace Steinberg;
+
+namespace Steinberg::Vst {
+//------------------------------------------------------------------------
+// VST3AUPlugInProcessor
+//------------------------------------------------------------------------
+VST3AUPlugInProcessor::VST3AUPlugInProcessor ()
+{
+ //--- set the wanted controller for our processor
+ setControllerClass (kVST3AUPlugInControllerUID);
+}
+
+//------------------------------------------------------------------------
+VST3AUPlugInProcessor::~VST3AUPlugInProcessor ()
+{}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInProcessor::initialize (FUnknown* context)
+{
+ // Here the Plug-in will be instantiated
+
+ //---always initialize the parent-------
+ tresult result = AudioEffect::initialize (context);
+ // if everything Ok, continue
+ if (result != kResultOk)
+ {
+ return result;
+ }
+
+ //--- create Audio IO ------
+ addAudioInput (STR16 ("Stereo In"), Steinberg::Vst::SpeakerArr::kStereo);
+ addAudioOutput (STR16 ("Stereo Out"), Steinberg::Vst::SpeakerArr::kStereo);
+
+ /* If you don't need an event bus, you can remove the next line */
+ addEventInput (STR16 ("Event In"), 1);
+
+ return kResultOk;
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInProcessor::terminate ()
+{
+ // Here the Plug-in will be de-instantiated, last possibility to remove some memory!
+
+ //---do not forget to call parent ------
+ return AudioEffect::terminate ();
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInProcessor::setActive (TBool state)
+{
+ //--- called when the Plug-in is enable/disable (On/Off) -----
+ return AudioEffect::setActive (state);
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInProcessor::process (Vst::ProcessData& data)
+{
+ //--- First : Read inputs parameter changes-----------
+
+ /*if (data.inputParameterChanges)
+ {
+ int32 numParamsChanged = data.inputParameterChanges->getParameterCount ();
+ for (int32 index = 0; index < numParamsChanged; index++)
+ {
+ if (auto* paramQueue = data.inputParameterChanges->getParameterData (index))
+ {
+ Vst::ParamValue value;
+ int32 sampleOffset;
+ int32 numPoints = paramQueue->getPointCount ();
+ switch (paramQueue->getParameterId ())
+ {
+ }
+ }
+ }
+ }*/
+
+ //--- Here you have to implement your processing
+
+ if (data.numSamples > 0)
+ {
+ //--- ------------------------------------------
+ // here as example a default implementation where we try to copy the inputs to the outputs:
+ // if less input than outputs then clear outputs
+ //--- ------------------------------------------
+
+ int32 minBus = std::min (data.numInputs, data.numOutputs);
+ for (int32 i = 0; i < minBus; i++)
+ {
+ int32 minChan = std::min (data.inputs[i].numChannels, data.outputs[i].numChannels);
+ for (int32 c = 0; c < minChan; c++)
+ {
+ // do not need to be copied if the buffers are the same
+ if (data.outputs[i].channelBuffers32[c] != data.inputs[i].channelBuffers32[c])
+ {
+ memcpy (data.outputs[i].channelBuffers32[c], data.inputs[i].channelBuffers32[c],
+ data.numSamples * sizeof (Vst::Sample32));
+ }
+ }
+ data.outputs[i].silenceFlags = data.inputs[i].silenceFlags;
+
+ // clear the remaining output buffers
+ for (int32 c = minChan; c < data.outputs[i].numChannels; c++)
+ {
+ // clear output buffers
+ memset (data.outputs[i].channelBuffers32[c], 0,
+ data.numSamples * sizeof (Vst::Sample32));
+
+ // inform the host that this channel is silent
+ data.outputs[i].silenceFlags |= ((uint64)1 << c);
+ }
+ }
+ // clear the remaining output buffers
+ for (int32 i = minBus; i < data.numOutputs; i++)
+ {
+ // clear output buffers
+ for (int32 c = 0; c < data.outputs[i].numChannels; c++)
+ {
+ memset (data.outputs[i].channelBuffers32[c], 0,
+ data.numSamples * sizeof (Vst::Sample32));
+ }
+ // inform the host that this bus is silent
+ data.outputs[i].silenceFlags = ((uint64)1 << data.outputs[i].numChannels) - 1;
+ }
+ }
+
+ return kResultOk;
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInProcessor::setupProcessing (Vst::ProcessSetup& newSetup)
+{
+ //--- called before any processing ----
+ return AudioEffect::setupProcessing (newSetup);
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInProcessor::canProcessSampleSize (int32 symbolicSampleSize)
+{
+ // by default kSample32 is supported
+ if (symbolicSampleSize == Vst::kSample32)
+ return kResultTrue;
+
+ // disable the following comment if your processing support kSample64
+ /* if (symbolicSampleSize == Vst::kSample64)
+ return kResultTrue; */
+
+ return kResultFalse;
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInProcessor::setState (IBStream* state)
+{
+ // called when we load a preset, the model has to be reloaded
+ IBStreamer streamer (state, kLittleEndian);
+
+ return kResultOk;
+}
+
+//------------------------------------------------------------------------
+tresult PLUGIN_API VST3AUPlugInProcessor::getState (IBStream* state)
+{
+ // here we need to save the model
+ IBStreamer streamer (state, kLittleEndian);
+
+ return kResultOk;
+}
+
+//------------------------------------------------------------------------
+} // namespace Steinberg::Vst
diff --git a/src/.vst3_tutorials/audiounit-tutorial/source/processor.h b/src/.vst3_tutorials/audiounit-tutorial/source/processor.h
new file mode 100644
index 00000000..80fb8808
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/source/processor.h
@@ -0,0 +1,57 @@
+//------------------------------------------------------------------------
+// Copyright(c) 2024 Steinberg Media Technologies.
+//------------------------------------------------------------------------
+
+#pragma once
+
+#include "public.sdk/source/vst/vstaudioeffect.h"
+
+namespace Steinberg::Vst {
+
+//------------------------------------------------------------------------
+// VST3AUPlugInProcessor
+//------------------------------------------------------------------------
+class VST3AUPlugInProcessor : public Steinberg::Vst::AudioEffect
+{
+public:
+ VST3AUPlugInProcessor ();
+ ~VST3AUPlugInProcessor () SMTG_OVERRIDE;
+
+ // Create function
+ static Steinberg::FUnknown* createInstance (void* /*context*/)
+ {
+ return (Steinberg::Vst::IAudioProcessor*)new VST3AUPlugInProcessor;
+ }
+
+ //--- ---------------------------------------------------------------------
+ // AudioEffect overrides:
+ //--- ---------------------------------------------------------------------
+ /** Called at first after constructor */
+ Steinberg::tresult PLUGIN_API initialize (Steinberg::FUnknown* context) SMTG_OVERRIDE;
+
+ /** Called at the end before destructor */
+ Steinberg::tresult PLUGIN_API terminate () SMTG_OVERRIDE;
+
+ /** Switch the Plug-in on/off */
+ Steinberg::tresult PLUGIN_API setActive (Steinberg::TBool state) SMTG_OVERRIDE;
+
+ /** Will be called before any process call */
+ Steinberg::tresult PLUGIN_API setupProcessing (Steinberg::Vst::ProcessSetup& newSetup) SMTG_OVERRIDE;
+
+ /** Asks if a given sample size is supported see SymbolicSampleSizes. */
+ Steinberg::tresult PLUGIN_API canProcessSampleSize (Steinberg::int32 symbolicSampleSize) SMTG_OVERRIDE;
+
+ /** Here we go...the process call */
+ Steinberg::tresult PLUGIN_API process (Steinberg::Vst::ProcessData& data) SMTG_OVERRIDE;
+
+ /** For persistence */
+ Steinberg::tresult PLUGIN_API setState (Steinberg::IBStream* state) SMTG_OVERRIDE;
+ Steinberg::tresult PLUGIN_API getState (Steinberg::IBStream* state) SMTG_OVERRIDE;
+
+//------------------------------------------------------------------------
+protected:
+
+};
+
+//------------------------------------------------------------------------
+} // namespace Steinberg::Vst
diff --git a/src/.vst3_tutorials/audiounit-tutorial/source/version.h b/src/.vst3_tutorials/audiounit-tutorial/source/version.h
new file mode 100644
index 00000000..3f5cb7cb
--- /dev/null
+++ b/src/.vst3_tutorials/audiounit-tutorial/source/version.h
@@ -0,0 +1,20 @@
+//------------------------------------------------------------------------
+// Copyright(c) 2024 Steinberg Media Technologies.
+//------------------------------------------------------------------------
+
+#pragma once
+
+#include "pluginterfaces/base/fplatform.h"
+
+// Plain project version file generated by cmake
+#include "projectversion.h"
+
+#define stringOriginalFilename "VST3 AU PlugIn.vst3"
+#if SMTG_PLATFORM_64
+#define stringFileDescription "VST3 AU PlugIn VST3 (64Bit)"
+#else
+#define stringFileDescription "VST3 AU PlugIn VST3"
+#endif
+#define stringCompanyName "Steinberg Media Technologies\0"
+#define stringLegalCopyright "Copyright(c) 2024 Steinberg Media Technologies."
+#define stringLegalTrademarks "VST is a trademark of Steinberg Media Technologies GmbH"
diff --git a/src/.vst3_tutorials/dataexchange-tutorial/CMakeLists.txt b/src/.vst3_tutorials/dataexchange-tutorial/CMakeLists.txt
index 94c86a66..0e214fd6 100644
--- a/src/.vst3_tutorials/dataexchange-tutorial/CMakeLists.txt
+++ b/src/.vst3_tutorials/dataexchange-tutorial/CMakeLists.txt
@@ -10,7 +10,7 @@ project(dataexchange_tutorial
# Version number symbols usable in C++ can be found in
# source/version.h and ${PROJECT_BINARY_DIR}/projectversion.h.
VERSION 1.0.0.0
- DESCRIPTION "dataexchange_tutorial VST 3 Plug-in"
+ DESCRIPTION "dataexchange_tutorial VST 3 plug-in"
)
set(SMTG_ENABLE_VST3_HOSTING_EXAMPLES 0)
diff --git a/src/.vst3_tutorials/dataexchange-tutorial/README.md b/src/.vst3_tutorials/dataexchange-tutorial/README.md
index 70ad7347..80e0019c 100644
--- a/src/.vst3_tutorials/dataexchange-tutorial/README.md
+++ b/src/.vst3_tutorials/dataexchange-tutorial/README.md
@@ -1,6 +1,6 @@
# Data Exchange Tutorial Plug-in
-This tutorial explains how to use the Data Exchange API via the backwards-compatible wrapper class, which either uses the API directly, if available, or an alternative IMessage based method to provide the same functionality for hosts not implementing the API.
+This tutorial shows how to use the *Data Exchange API* via the backwards compatible wrapper class which either uses the API directly if available or uses an alternative IMessage based method to provide the same functionality for hosts not implementing the API.
In this example, the audio processor sends the samples it processes to the controller in chunks, each with a duration of one second.
@@ -30,7 +30,7 @@ In this example, the audio processor sends the samples it processes to the contr
## Tutorial - How to use the Data Exchange API
-In this tutorial, you learn how to use the Data Exchange API to send data from the realtime audio
+In this tutorial you learn how to use the *Data Exchange API* to send data from the realtime audio
process method to the edit controller of your plug-in.
### Sending data from the audio processor
@@ -125,8 +125,8 @@ tresult PLUGIN_API DataExchangeProcessor::setActive (TBool state)
}
```
-Now we prepare the data that we want to send to the controller. To make this a little bit easier, we
-define a struct that specifies what should look like and move this into its own header "dataexchange.h":
+Now we prepare the data that we want to send to the controller. To make this a little bit easier we
+define a struct how this data should look like and move this into its own header "*dataexchange.h*":
```c++
// dataexchange.h
@@ -167,7 +167,7 @@ inline DataBlock* toDataBlock (const Vst::DataExchangeBlock& block)
One thing remains to be done before we can start sending the data: We need a
member variable of the Vst::DataExchangeBlock struct where we store the actual block we work with
-while processing the audio. So we add this to our processor defintion:
+while processing the audio. So we add this to our processor definition:
```c++
@@ -336,12 +336,12 @@ public:
tresult PLUGIN_API notify (Vst::IMessage* message) override;
void PLUGIN_API queueOpened (Vst::DataExchangeUserContextID userContextID,
uint32 blockSize,
- bool& dispatchOnBackgroundThread) override;
+ TBool& dispatchOnBackgroundThread) override;
void PLUGIN_API queueClosed (Vst::DataExchangeUserContextID userContextID) override;
void PLUGIN_API onDataExchangeBlocksReceived (Vst::DataExchangeUserContextID userContextID,
uint32 numBlocks,
Vst::DataExchangeBlock* blocks,
- bool onBackgroundThread) override;
+ TBool onBackgroundThread) override;
DEFINE_INTERFACES
DEF_INTERFACE (Vst::IDataExchangeReceiver)
@@ -369,7 +369,7 @@ In the next step, we can implement the `IDataExchangeReceiver` methods:
```c++
void PLUGIN_API DataExchangeController::queueOpened (Vst::DataExchangeUserContextID userContextID,
uint32 blockSize,
- bool& dispatchOnBackgroundThread)
+ TBool& dispatchOnBackgroundThread)
{
FDebugPrint ("Data Exchange Queue opened.\n");
}
@@ -381,7 +381,7 @@ void PLUGIN_API DataExchangeController::queueClosed (Vst::DataExchangeUserContex
void PLUGIN_API DataExchangeController::onDataExchangeBlocksReceived (
Vst::DataExchangeUserContextID userContextID, uint32 numBlocks, Vst::DataExchangeBlock* blocks,
- bool onBackgroundThread)
+ TBool onBackgroundThread)
{
for (auto index = 0u; index < numBlocks; ++index)
{
diff --git a/src/.vst3_tutorials/dataexchange-tutorial/source/controller.cpp b/src/.vst3_tutorials/dataexchange-tutorial/source/controller.cpp
index 731f2e03..b7531865 100644
--- a/src/.vst3_tutorials/dataexchange-tutorial/source/controller.cpp
+++ b/src/.vst3_tutorials/dataexchange-tutorial/source/controller.cpp
@@ -20,7 +20,7 @@ tresult PLUGIN_API DataExchangeController::notify (Vst::IMessage* message)
//------------------------------------------------------------------------
void PLUGIN_API DataExchangeController::queueOpened (Vst::DataExchangeUserContextID userContextID,
uint32 blockSize,
- bool& dispatchOnBackgroundThread)
+ TBool& dispatchOnBackgroundThread)
{
FDebugPrint ("Data Exchange Queue opened.\n");
}
@@ -34,7 +34,7 @@ void PLUGIN_API DataExchangeController::queueClosed (Vst::DataExchangeUserContex
//------------------------------------------------------------------------
void PLUGIN_API DataExchangeController::onDataExchangeBlocksReceived (
Vst::DataExchangeUserContextID userContextID, uint32 numBlocks, Vst::DataExchangeBlock* blocks,
- bool onBackgroundThread)
+ TBool onBackgroundThread)
{
for (auto index = 0u; index < numBlocks; ++index)
{
diff --git a/src/.vst3_tutorials/dataexchange-tutorial/source/controller.h b/src/.vst3_tutorials/dataexchange-tutorial/source/controller.h
index 2e2bc315..83fbc982 100644
--- a/src/.vst3_tutorials/dataexchange-tutorial/source/controller.h
+++ b/src/.vst3_tutorials/dataexchange-tutorial/source/controller.h
@@ -27,11 +27,11 @@ class DataExchangeController : public Vst::EditControllerEx1, public Vst::IDataE
// IDataExchangeReceiver
void PLUGIN_API queueOpened (Vst::DataExchangeUserContextID userContextID, uint32 blockSize,
- bool& dispatchOnBackgroundThread) override;
+ TBool& dispatchOnBackgroundThread) override;
void PLUGIN_API queueClosed (Vst::DataExchangeUserContextID userContextID) override;
void PLUGIN_API onDataExchangeBlocksReceived (Vst::DataExchangeUserContextID userContextID,
uint32 numBlocks, Vst::DataExchangeBlock* blocks,
- bool onBackgroundThread) override;
+ TBool onBackgroundThread) override;
//---Interface---------
DEFINE_INTERFACES
// Here, you can add more supported VST 3 interfaces
diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index a2042a13..3beaaa02 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -50,6 +50,7 @@
- [Creating a cmake plug-in project from scratch](pages/Tutorials/Creating+a+plug-in+from+scratch.md)
- [Creating a plug-in with VST 3 SDK as an external project](pages/Tutorials/Creating+a+plug-in+with+VST+3+SDK+as+an+external+project.md)
- [Switching to another VSTGUI submodule or branch](pages/Tutorials/Switching+to+another-VSTGUI+submodule+or+branch.md)
+ - [How to add AUv2 support to your VST 3 plug-in](pages/Tutorials/Audio+Unit.md)
- [Technical Documentation](pages/Technical+Documentation/Index.md)
- [VST 3 API Documentation](pages/Technical+Documentation/API+Documentation/Index.md)
- [VST Module Architecture](pages/Technical+Documentation/VST+Module+Architecture/Index.md)
@@ -118,6 +119,7 @@
# Additional Resources
- [Change History](pages/Versions/Index.md)
+ - [Version 3.7.12 (2024/07/23)](pages/Versions/Version+3.7.12.md)
- [Version 3.7.11 (2024/04/22)](pages/Versions/Version+3.7.11.md)
- [Version 3.7.10 (2024/01/18)](pages/Versions/Version+3.7.10.md)
- [Version 3.7.9 (2023/10/09)](pages/Versions/Version+3.7.9.md)
diff --git a/src/pages/README.md b/src/pages/README.md
index 823d2248..e1b19e7a 100644
--- a/src/pages/README.md
+++ b/src/pages/README.md
@@ -50,6 +50,7 @@ The **VST 3 SDK** (Virtual Studio Technology Software Development Kit) is a coll
- [Creating a cmake plug-in project from scratch](Tutorials/Creating+a+plug-in+from+scratch.md)
- [Creating a plug-in with VST 3 SDK as an external project](Tutorials/Creating+a+plug-in+with+VST+3+SDK+as+an+external+project.md)
- [Switching to another VSTGUI submodule or branch](Tutorials/Switching+to+another-VSTGUI+submodule+or+branch.md)
+- [How to add AUv2 support to your VST 3 plug-in](Tutorials/Audio+Unit.md)
## [VST 3 Forum](Forum/Index.md)
diff --git a/src/pages/Technical+Documentation/API+Documentation/Index.md b/src/pages/Technical+Documentation/API+Documentation/Index.md
index 3566a4c4..8cab1ec8 100644
--- a/src/pages/Technical+Documentation/API+Documentation/Index.md
+++ b/src/pages/Technical+Documentation/API+Documentation/Index.md
@@ -54,8 +54,7 @@ The context parameter passed to [Steinberg::IPluginBase::initialize](https://ste
//-----------------------------------------------------------------------
tresult PLUGIN_API MyPluginProcessor::initialize (FUnknown*context)
{
- FUnknownPtr hostApp (hostContext);
- if (hostApp)
+ if (auto hostApp = Steinberg::U::cast (hostContext))
{
String128 name;
if (hostApp->getName (name) == kResultTrue)
diff --git a/src/pages/Technical+Documentation/Change+History/3.1.0/IComponentHandler2.md b/src/pages/Technical+Documentation/Change+History/3.1.0/IComponentHandler2.md
index 88c1de36..2c3d376b 100644
--- a/src/pages/Technical+Documentation/Change+History/3.1.0/IComponentHandler2.md
+++ b/src/pages/Technical+Documentation/Change+History/3.1.0/IComponentHandler2.md
@@ -26,8 +26,7 @@ This allows the plug-in to tell the host that its internal state is dirty or not
``` c++
void MyPluginController::informHostAboutMyDirtyState (bool dirty)
{
- FUnknownPtr componentHandler2 (componentHandler);
- if (componentHandler2)
+ if (auto componentHandler2 = Steinberg::U::cast (componentHandler))
componentHandler2->setDirty (dirty);
}
```
@@ -39,8 +38,7 @@ Requesting the host to open the plug-in´s editor the next time it's possible. Y
``` c++
void MyPluginController::requestHostToOpenEditor()
{
- FUnknownPtr componentHandler2 (componentHandler);
- if (componentHandler2)
+ if (auto componentHandler2 = Steinberg::U::cast (componentHandler))
componentHandler2->requestOpenEditor ();
}
```
diff --git a/src/pages/Technical+Documentation/Change+History/3.5.0/IComponentHandler3.md b/src/pages/Technical+Documentation/Change+History/3.5.0/IComponentHandler3.md
index 7080d96b..472c162f 100644
--- a/src/pages/Technical+Documentation/Change+History/3.5.0/IComponentHandler3.md
+++ b/src/pages/Technical+Documentation/Change+History/3.5.0/IComponentHandler3.md
@@ -81,11 +81,10 @@ void popupContextMenu (IComponentHandler* componentHandler, IPlugView* view, con
{
if (componentHandler == 0 || view == 0)
return;
- FUnknownPtr handler (componentHandler);
- if (handler == 0)
+ auto handler = Steinberg::U::cast (componentHandler);
+ if (handler == nullptr)
return;
- IContextMenu* menu = handler->createContextMenu (view, paramID);
- if (menu)
+ if (IContextMenu* menu = handler->createContextMenu (view, paramID))
{
// here, you can add your entries (optional)
PluginContextMenuTarget* target = new PluginContextMenuTarget ();
diff --git a/src/pages/Technical+Documentation/Change+History/3.6.0/IAA.md b/src/pages/Technical+Documentation/Change+History/3.6.0/IAA.md
index babf843a..6982a9fe 100644
--- a/src/pages/Technical+Documentation/Change+History/3.6.0/IAA.md
+++ b/src/pages/Technical+Documentation/Change+History/3.6.0/IAA.md
@@ -81,8 +81,7 @@ IPlugView* PLUGIN_API MyEditController::createView (FIDString _name)
ConstString name (_name);
if (name == ViewType::kEditor)
{
- FUnknownPtr interAudioApp (getHostContext ());
- if (interAudioApp)
+ if (auto interAudioApp = Steinberg::U::cast (getHostContext ()))
{
// create and return the view for iOS
}
diff --git a/src/pages/Technical+Documentation/Change+History/3.6.0/IStreamAttributes.md b/src/pages/Technical+Documentation/Change+History/3.6.0/IStreamAttributes.md
index 4e720645..bcae0474 100644
--- a/src/pages/Technical+Documentation/Change+History/3.6.0/IStreamAttributes.md
+++ b/src/pages/Technical+Documentation/Change+History/3.6.0/IStreamAttributes.md
@@ -28,8 +28,7 @@ Interface to access preset meta information from stream, used, for example, in [
tresult PLUGIN_API MyPluginProcessor::setState (IBStream* state)
{
- FUnknownPtr stream (state);
- if (stream)
+ if (auto stream = Steinberg::U::cast (state))
{
IAttributeList* list = stream->getAttributes ();
if (list)
diff --git a/src/pages/Technical+Documentation/Change+History/3.6.12/IPlugInterfaceSupport.md b/src/pages/Technical+Documentation/Change+History/3.6.12/IPlugInterfaceSupport.md
index 308ed729..b26eb0be 100644
--- a/src/pages/Technical+Documentation/Change+History/3.6.12/IPlugInterfaceSupport.md
+++ b/src/pages/Technical+Documentation/Change+History/3.6.12/IPlugInterfaceSupport.md
@@ -25,8 +25,7 @@ Allows a plug-in to ask the host if a given plug-in interface is supported/used
tresult PLUGIN_API MyPluginController::initialize (FUnknown* context)
{
// ...
- FUnknownPtr plugInterfaceSupport (context);
- if (plugInterfaceSupport)
+ if (auto plugInterfaceSupport = Steinberg::U::cast (context)
{
if (plugInterfaceSupport->isPlugInterfaceSupported (IMidiMapping::iid) == kResultTrue)
// IMidiMapping is used by the host
diff --git a/src/pages/Technical+Documentation/Change+History/3.6.8/IComponentHandlerBusActivation.md b/src/pages/Technical+Documentation/Change+History/3.6.8/IComponentHandlerBusActivation.md
index 57864b7d..b981e3f2 100644
--- a/src/pages/Technical+Documentation/Change+History/3.6.8/IComponentHandlerBusActivation.md
+++ b/src/pages/Technical+Documentation/Change+History/3.6.8/IComponentHandlerBusActivation.md
@@ -28,8 +28,7 @@ See also [IComponentHandler](https://steinbergmedia.github.io/vst3_doc/vstinterf
``` c++
// somewhere in your code when you need to inform the host to enable a specific Bus.
-FUnknownPtr busActivation (componentHandler);
-if (busActivation)
+if (auto busActivation = Steinberg::U::cast (componentHandler))
{
// here we want to activate our audio input Side-chain (the 2cd input bus: index 1)
busActivation->requestBusActivation (kAudio, kInput, 1, true);
diff --git a/src/pages/Technical+Documentation/Change+History/3.7.0/IParameterFunctionName.md b/src/pages/Technical+Documentation/Change+History/3.7.0/IParameterFunctionName.md
index c7c606ca..4aaf8d60 100644
--- a/src/pages/Technical+Documentation/Change+History/3.7.0/IParameterFunctionName.md
+++ b/src/pages/Technical+Documentation/Change+History/3.7.0/IParameterFunctionName.md
@@ -74,8 +74,7 @@ tresult PLUGIN_API MyController::getParameterIDFromFunctionName (UnitID unitID,
**Example of host implementation**
``` c++
-FUnknownPtr functionName (mEditController->getIEditController ());
-if (functionName)
+if (auto functionName = Steinberg::U::cast (mEditController->getIEditController ())
{
Vst::ParamID paramID;
if (functionName->getParameterIDFromFunctionName (Vst::FunctionNameType::kCompGainReduction, paramID) == kResultTrue)
diff --git a/src/pages/Technical+Documentation/Change+History/3.7.0/IProcessContextRequirements.md b/src/pages/Technical+Documentation/Change+History/3.7.0/IProcessContextRequirements.md
index 987747af..586baf4f 100644
--- a/src/pages/Technical+Documentation/Change+History/3.7.0/IProcessContextRequirements.md
+++ b/src/pages/Technical+Documentation/Change+History/3.7.0/IProcessContextRequirements.md
@@ -24,4 +24,4 @@ The host asks for this information once between initialize and setActive. It can
This gives the host the opportunity to better optimize the audio process graph when it knows which plug-ins need which information.
>⚠️ **Warning**\
->Plug-Ins built with an earlier SDK version (< 3.7) will still get the old information, but the information may not be as accurate as when using this interface.
+>Plug-ins built with an earlier SDK version (< 3.7) will still get the old information, but the information may not be as accurate as when using this interface.
diff --git a/src/pages/Technical+Documentation/Change+History/3.7.0/IProgress.md b/src/pages/Technical+Documentation/Change+History/3.7.0/IProgress.md
index 8bcc45c8..2da554fb 100644
--- a/src/pages/Technical+Documentation/Change+History/3.7.0/IProgress.md
+++ b/src/pages/Technical+Documentation/Change+History/3.7.0/IProgress.md
@@ -28,19 +28,16 @@ Allows the plug-in to ask the host to create a progress for specific tasks which
// we are in the editcontroller:
// as member: IProgress::ID mProgressID;
-FUnknownPtr progress (componentHandler);
-if (progress)
+if (auto progress = Steinberg::U::cast (componentHandler))
progress->start (IProgress::ProgressType::UIBackgroundTask, STR ("Load Samples..."), mProgressID);
// ...
myProgressValue += incProgressStep;
-FUnknownPtr progress (componentHandler);
-if (progress)
+if (auto progress = Steinberg::U::cast (componentHandler))
progress->update (mProgressID, myProgressValue);
// ...
-FUnknownPtr progress (componentHandler);
-if (progress)
+if (auto progress = Steinberg::U::cast (componentHandler))
progress->finish (mProgressID);
```
diff --git a/src/pages/Technical+Documentation/Change+History/3.7.9/IComponentHandlerSystemTime.md b/src/pages/Technical+Documentation/Change+History/3.7.9/IComponentHandlerSystemTime.md
index d821bd1c..c8ac9ed4 100644
--- a/src/pages/Technical+Documentation/Change+History/3.7.9/IComponentHandlerSystemTime.md
+++ b/src/pages/Technical+Documentation/Change+History/3.7.9/IComponentHandlerSystemTime.md
@@ -25,8 +25,7 @@
int64 systemTime = 0;
-FUnknownPtr handlerSystemTime (componentHandler);
-if (handlerSystemTime)
+if (auto handlerSystemTime = Steinberg::U::cast (componentHandler))
handlerSystemTime->getSystemTime (systemTime);
```
\ No newline at end of file
diff --git a/src/pages/Technical+Documentation/Index.md b/src/pages/Technical+Documentation/Index.md
index acde9f05..e4de8601 100644
--- a/src/pages/Technical+Documentation/Index.md
+++ b/src/pages/Technical+Documentation/Index.md
@@ -56,6 +56,9 @@ Browse the **VST 3 SDK**'s technical documentation. The full **VST 3 API** refer
- [\[3.7.0\] Process Context Requirements](Change+History/3.7.0/IProcessContextRequirements.md)
- [\[3.7.0\] Control Voltage Bus Flag](Change+History/3.7.0/Control+Voltage.md)
- [\[3.7.5\] Module Info](Change+History/3.7.5/ModuleInfo.md)
+- [\[3.7.9\] Get Current SystemTime](Change+History/3.7.9/IComponentHandlerSystemTime.md)
+- [\[3.7.9\] Data Transfert Between Processor/Controller](Change+History/3.7.9/IDataExchangeHandler.md)
+- [\[3.7.11\] Remap Parameter ID](Change+History/3.7.11/IRemapParamID.md)
---
diff --git a/src/pages/Technical+Documentation/Provide+A+Runloop+On+Linux/Index.md b/src/pages/Technical+Documentation/Provide+A+Runloop+On+Linux/Index.md
index c1384dae..f5e663fc 100644
--- a/src/pages/Technical+Documentation/Provide+A+Runloop+On+Linux/Index.md
+++ b/src/pages/Technical+Documentation/Provide+A+Runloop+On+Linux/Index.md
@@ -20,8 +20,7 @@ The host application must provide the [Linux::IRunLoop](https://steinbergmedia.g
tresult PLUGIN_API MyPlugView::setFrame (Steinberg::IPlugFrame* frame)
{
...
- Steinberg::FUnknownPtr runLoop (plugFrame);
- if (runLoop)
+ if (auto runLoop = Steinberg::U::cast (plugFrame))
{
runLoop->registerEventHandler (...);
}
@@ -35,7 +34,7 @@ tresult PLUGIN_API MyPlugView::setFrame (Steinberg::IPlugFrame* frame)
A plug-in also needs a way to query for an [Linux::IRunLoop](https://steinbergmedia.github.io/vst3_doc/base/classSteinberg_1_1Linux_1_1IRunLoop.html) without [IPlugFrame](https://steinbergmedia.github.io/vst3_doc/base/classSteinberg_1_1IPlugFrame.html). This allows to register timers in case the editor is closed or unavailable.
-These timers can be used inside [Vst::IAudioProcessor](https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IAudioProcessor.html) for extra computations or sending messages within the UI thread.
+These timers can be used inside [Vst::IAudioProcessor](https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IAudioProcessor.html) for extra computations or sending messages within the UI thread, like any method of Edit Controller in UI Thread (see [Edit Controller Call Sequence](../Workflow+Diagrams/Edit+Controller+Call+Sequence.md)).
The host application must call [Vst::IPlugFactory3::setHostContext (context)](https://steinbergmedia.github.io/vst3_doc/base/classSteinberg_1_1IPluginFactory3.html#a7fa0087a5cb612e3aeeefa4c91f638c7) for this and provide a ```context```. This ```context``` can be used to query an [Linux::IRunLoop](https://steinbergmedia.github.io/vst3_doc/base/classSteinberg_1_1Linux_1_1IRunLoop.html) interface.
@@ -44,8 +43,7 @@ The host application must call [Vst::IPlugFactory3::setHostContext (context)](ht
tresult PLUGIN_API MyPlugFactory::setHostContext (FUnknown* context)
{
...
- Steinberg::FUnknownPtr runLoop (context);
- if (runLoop)
+ if (auto runLoop = Steinberg::U::cast (context))
{
runLoop->registerTimer (...);
}
diff --git a/src/pages/Technical+Documentation/VST+Module+Architecture/Index.md b/src/pages/Technical+Documentation/VST+Module+Architecture/Index.md
index 8747d4db..356574a8 100644
--- a/src/pages/Technical+Documentation/VST+Module+Architecture/Index.md
+++ b/src/pages/Technical+Documentation/VST+Module+Architecture/Index.md
@@ -99,7 +99,7 @@ In addition to the **GetPluginFactory** function the plug-in may has to export a
>**On Windows**\
>On *Windows* the entry/exit functions are named **InitDll** / **ExitDll** and are ***optional!***
>
->A Plug-In can export these functions and a host has to call the **InitDll** function directly after loading the plug-in via LoadLibrary and before calling **GetPluginFactory**. The **ExitDll** function must be called before the plug-in is unloaded via *FreeLibrary* or on program termination without *FreeLibrary*.
+>A Plug-in can export these functions and a host has to call the **InitDll** function directly after loading the plug-in via LoadLibrary and before calling **GetPluginFactory**. The **ExitDll** function must be called before the plug-in is unloaded via *FreeLibrary* or on program termination without *FreeLibrary*.
>
>As *Windows* already has this feature (see [DllMain](https://docs.microsoft.com/en-us/cpp/build/run-time-library-behavior?view=msvc-170) in Microsofts documentation) the above functions are optional.
diff --git a/src/pages/Technical+Documentation/Workflow+Diagrams/Bus+Arrangement+Setting+Sequence.md b/src/pages/Technical+Documentation/Workflow+Diagrams/Bus+Arrangement+Setting+Sequence.md
index e61273f8..29ac44c7 100644
--- a/src/pages/Technical+Documentation/Workflow+Diagrams/Bus+Arrangement+Setting+Sequence.md
+++ b/src/pages/Technical+Documentation/Workflow+Diagrams/Bus+Arrangement+Setting+Sequence.md
@@ -8,7 +8,7 @@
---
-## Plug-In does accepts what the host wants as Bus Arrangements
+## Plug-in does accepts what the host wants as Bus Arrangements
```mermaid
sequenceDiagram
@@ -34,7 +34,7 @@ sequenceDiagram
P-->>-H: return
```
-## Plug-In does not accept what the host wants as Bus Arrangements
+## Plug-in does not accept what the host wants as Bus Arrangements
```mermaid
sequenceDiagram
diff --git a/src/pages/Technical+Documentation/Workflow+Diagrams/Resize+View+Call+Sequence.md b/src/pages/Technical+Documentation/Workflow+Diagrams/Resize+View+Call+Sequence.md
index 98fa982a..0c83d4c1 100644
--- a/src/pages/Technical+Documentation/Workflow+Diagrams/Resize+View+Call+Sequence.md
+++ b/src/pages/Technical+Documentation/Workflow+Diagrams/Resize+View+Call+Sequence.md
@@ -8,7 +8,7 @@
---
-## Initiated from Plug-In
+## Initiated from Plug-in
```mermaid
sequenceDiagram
@@ -69,7 +69,7 @@ sequenceDiagram
H->>+P: setContentScaleFactor(factor)
P-->>-H: return
Note right of H: From here, same sequence
- Note right of H: than "Initiated from Plug-In"
+ Note right of H: than "Initiated from Plug-in"
P->>+H: resizeView(size)
H-->>-P: return
```
\ No newline at end of file
diff --git a/src/pages/Tutorials/Audio+Unit.md b/src/pages/Tutorials/Audio+Unit.md
new file mode 100644
index 00000000..b6853126
--- /dev/null
+++ b/src/pages/Tutorials/Audio+Unit.md
@@ -0,0 +1,19 @@
+>/ [VST Home](../) / [Tutorials](Index.md)
+>
+># AudioUnit Tutorial - How to add AUv2 support to your VST 3 plug-in
+
+**On this page:**
+
+[[_TOC_]]
+
+**Related pages:**
+
+- [AudioUnit v2 Wrapper](../What+is+the+VST+3+SDK/Wrappers/AUv2+Wrapper.md)
+
+---
+
+>You'll find the source for this tutorial in the [tutorial repository](https://github.com/steinbergmedia/vst3_tutorials/blob/master/audiounit-tutorial)
+
+{{#include ../../.vst3_tutorials/audiounit-tutorial/README.md:2:}}
+
+
diff --git a/src/pages/Tutorials/Data+Exchange.md b/src/pages/Tutorials/Data+Exchange.md
index 34cdb75c..5db639d2 100644
--- a/src/pages/Tutorials/Data+Exchange.md
+++ b/src/pages/Tutorials/Data+Exchange.md
@@ -15,5 +15,3 @@
>You'll find the source for this tutorial in the [tutorial repository](https://github.com/steinbergmedia/vst3_tutorials/blob/master/dataexchange-tutorial)
{{#include ../../.vst3_tutorials/dataexchange-tutorial/README.md:31:}}
-
-
diff --git a/src/pages/Tutorials/Generate+new+plug-in+with+Project+Generator.md b/src/pages/Tutorials/Generate+new+plug-in+with+Project+Generator.md
index be41b1a3..b708fba2 100644
--- a/src/pages/Tutorials/Generate+new+plug-in+with+Project+Generator.md
+++ b/src/pages/Tutorials/Generate+new+plug-in+with+Project+Generator.md
@@ -29,7 +29,7 @@ You have the following possibilities to start a new project:
## Part 2: Using the [VST 3 plug-in **Project Generator** application](../What+is+the+VST+3+SDK/Project+Generator.md)
-The [**VST3 Project Generator**](../What+is+the+VST+3+SDK/Project+Generator.md) application included in the **VST 3 SDK** is available for Windows and for macOS.
+The [**VST 3 Project Generator**](../What+is+the+VST+3+SDK/Project+Generator.md) application included in the **VST 3 SDK** is available for Windows and for macOS.
Start the application located in the *VST3_Project_Generator* folder of the **VST 3 SDK**.
diff --git a/src/pages/Tutorials/Index.md b/src/pages/Tutorials/Index.md
index 73b6f63a..5450dfe8 100644
--- a/src/pages/Tutorials/Index.md
+++ b/src/pages/Tutorials/Index.md
@@ -69,9 +69,9 @@ This tutorial explains how to send data from the realtime process to the edit co
In this tutorial, you will learn:
-- How to add nearly sample-accurate parameter changes to an audio effect
-- How to use C++ templates to write one algorithm supporting 32 bit and 64 bit audio processing
-- How to set the state of the audio effect in a thread safe manner
+- How to add nearly sample-accurate parameter changes to an audio effect.
+- How to use C++ templates to write one algorithm supporting 32 bit and 64 bit audio processing.
+- How to set the state of the audio effect in a thread safe manner.
## How to use the silence flags
@@ -109,6 +109,11 @@ This is a simple Hello World **VST 3 SDK** plug-in to demonstrate how to use the
Sometimes it is necessary to switch to another **VSTGUI** submodule or branch for testing purpose. This tutorial explains how to do that.
+## How to add AUv2 support to your VST 3 plug-in
+
+[Link](Audio+Unit.md)
+
+
## Tutorials on Youtube from 3rd Party developers
### How to setup the VST 3 SDK's Sample Plugin Projects
diff --git a/src/pages/Tutorials/Strings+Conversion+Helper.md b/src/pages/Tutorials/Strings+Conversion+Helper.md
index 3c730fed..e04660f2 100644
--- a/src/pages/Tutorials/Strings+Conversion+Helper.md
+++ b/src/pages/Tutorials/Strings+Conversion+Helper.md
@@ -22,8 +22,7 @@ Here some code examples:
#include "public.sdk/source/vst/utility/stringconvert.h"
//...
-FUnknownPtr hostApp (hostContext);
-if (hostApp)
+if (auto hostApp = Steinberg::U::cast (hostContext))
{
Vst::String128 name;
if (hostApp->getName (name) == kResultTrue)
diff --git a/src/pages/Tutorials/Using+cmake+for+building+plug-ins.md b/src/pages/Tutorials/Using+cmake+for+building+plug-ins.md
index bd3f0f3b..41f1986c 100644
--- a/src/pages/Tutorials/Using+cmake+for+building+plug-ins.md
+++ b/src/pages/Tutorials/Using+cmake+for+building+plug-ins.md
@@ -106,28 +106,42 @@ cmake -DCMAKE_C_COMPILER=/usr/bin/gcc-DCMAKE_CXX_COMPILER=/usr/bin/g++
## Available SMTG cmake options
-- **SMTG_AAX_SDK_PATH**: Here, you can define where the AAX SDK is located (if needed)
-- **SMTG_ENABLE_VST3_HOSTING_EXAMPLES**: Enable **VST 3** Hosting Examples (default ON)
-- **SMTG_ENABLE_VST3_PLUGIN_EXAMPLES**: Enable **VST 3** Plug-in Examples (default ON)
-- **SMTG_ENABLE_VSTGUI_SUPPORT**: Enable VSTGUI Support (default ON)
-- **SMTG_BUILD_UNIVERSAL_BINARY**: Build universal binary (32 & 64 bit) (Mac only)
-- **SMTG_COREAUDIO_SDK_PATH**: Here, you can define where the COREAUDIO SDK is located (Mac only, if needed)
-- **SMTG_CREATE_BUNDLE_FOR_WINDOWS**: Create bundle on Windows for the **VST 3** plug-ins (new since 3.6.10! Windows only) (default ON)
-- **SMTG_CREATE_MODULE_INFO**: Create the moduleinfo.json file (default ON)
-- **SMTG_CREATE_PLUGIN_LINK**: Create symbolic link for each **VST 3** plug-in in ${VST3_FOLDER_NAME} folder (you need to have Administrator rights on Windows or change the Local Group Policy to allow the creation of symbolic links) (default ON)
-- **SMTG_CUSTOM_BINARY_LOCATION**: Customize output location for binaries
-- **SMTG_CXX_STANDARD**: C++ standard version used for plugins: 14, 17, 20
-- **SMTG_ENABLE_ADDRESS_SANITIZER**: Enable Address Sanitizer
-- **SMTG_ENABLE_TARGET_VARS_LOG**: Enables to log target variables for debugging (new since 3.6.11!) (default OFF)
-- **SMTG_ENABLE_USE_OF_JACK**: Allows you to create the audiohost application using Jack (default OFF)
-- **SMTG_MDA_VST3_VST2_COMPATIBLE**: Build the MDA examples as a replacement for their **VST 2** counterpart (default ON)
-- **SMTG_IOS_DEVELOPMENT_TEAM**: Needed for building the InterAppAudio and AUv3 examples for iOS (Mac only)
-- **SMTG_MYPLUGINS_SRC_PATH**: Here, you can add your **VST 3** plug-ins folder
-- **SMTG_PLUGIN_TARGET_PATH**: Here, you can redefine the **VST 3** plug-ins folder
-- **SMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON**: use FOLDERID_UserProgramFilesCommon as **VST 3** target path (Windows only) (default ON)
-- **SMTG_RENAME_ASSERT**: Rename ASSERT to SMTG_ASSERT to avoid conflicts with 3rd party libraries (default ON)
-- **SMTG_RUN_VST_VALIDATOR**: Run the VST validator on **VST 3** plug-ins each time they are built (default ON)
-- **SMTG_USE_STATIC_CRT**: Use static CRuntime on Windows (option /MT) (default OFF: /MD is used) (Windows only)
+- `SMTG_AAX_SDK_PATH`: Here, you can define where the AAX SDK is located (if needed)
+- `SMTG_ADD_VST3_UTILITIES`: Build VST Utilities (default ON)
+- `SMTG_CREATE_MODULE_INFO`: Create the moduleinfo.json file (default ON)
+- `SMTG_CUSTOM_BINARY_LOCATION`: Customize output location for binaries
+- `SMTG_CXX_STANDARD`: C++ standard version used for plugins: 14, 17, 20, 23
+- `SMTG_ENABLE_ADDRESS_SANITIZER`: Enable Address Sanitizer (default OFF)
+- `SMTG_ENABLE_TARGET_VARS_LOG`: Enables to log target variables for debugging (new since 3.6.11!) (default OFF)
+- `SMTG_ENABLE_VST3_HOSTING_EXAMPLES`: Enable **VST 3** Hosting Examples (default ON)
+- `SMTG_ENABLE_VST3_PLUGIN_EXAMPLES`: Enable **VST 3** Plug-in Examples (default ON)
+- `SMTG_ENABLE_VSTGUI_SUPPORT`: Enable VSTGUI Support (default ON)
+- `SMTG_MDA_VST3_VST2_COMPATIBLE`: Build the MDA examples as a replacement for their **VST 2** counterpart (default ON)
+- `SMTG_PLUGIN_TARGET_USER_PATH`: Here, you can redefine the **VST 3** plug-ins folder
+- `SMTG_RENAME_ASSERT`: Rename ASSERT to SMTG_ASSERT to avoid conflicts with 3rd party libraries (default ON)
+- `SMTG_RUN_VST_VALIDATOR`: Run the VST validator on **VST 3** plug-ins each time they are built (default ON)
+
+### Specific Windows
+
+- `SMTG_CREATE_BUNDLE_FOR_WINDOWS`: Create bundle on Windows for the **VST 3** plug-ins (new since 3.6.10!) (default ON)
+- `SMTG_CREATE_PLUGIN_LINK`: Create symbolic link for each **VST 3** plug-in in ${VST3_FOLDER_NAME} folder (you need to have Administrator rights on Windows or change the Local Group Policy to allow the creation of symbolic links) (default ON)
+- `SMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON`: use FOLDERID_UserProgramFilesCommon as **VST 3** target path (default ON)
+- `SMTG_USE_STATIC_CRT`: Use static CRuntime on Windows (option /MT) (default OFF: /MD is used)
+
+### Specific macOS/iOS
+
+- `SMTG_AUDIOUNIT_SDK_PATH`: Path to AudioUnit SDK
+- `SMTG_BUILD_INTERAPPAUDIO`: Enable building the iOS InterAppAudio examples (deprecated) (default OFF)
+- `SMTG_BUILD_UNIVERSAL_BINARY`: Build universal binary (32 & 64 bit)
+- `SMTG_CODE_SIGN_IDENTITY_IOS`: iOS Code Sign Identity
+- `SMTG_CODE_SIGN_IDENTITY_MAC`: macOS Code Sign Identity
+- `SMTG_COREAUDIO_SDK_PATH`: Here, you can define where the COREAUDIO SDK is located
+- `SMTG_DISABLE_CODE_SIGNING`: Disable Al Code Signing (default OFF)
+- `SMTG_ENABLE_IOS_TARGETS`: Enable building iOS targets (default OFF)
+- `SMTG_IOS_DEVELOPMENT_TEAM`: Needed for building the InterAppAudio and AUv3 examples for iOS
+- `SMTG_VSTSDK_GENERATE_MACOS_IOS_COLLECTION_TARGETS`: Create macOS and iOS collection targets (default OFF)
+- `SMTG_XCODE_MANUAL_CODE_SIGN_STYLE`: Manual Xcode sign style (default OFF)
+- `SMTG_XCODE_OTHER_CODE_SIGNING_FLAGS`: Other code signing floag [Xcode] (default --timestamp)
---
diff --git a/src/pages/Versions/Index.md b/src/pages/Versions/Index.md
index d385af66..391fb0c6 100644
--- a/src/pages/Versions/Index.md
+++ b/src/pages/Versions/Index.md
@@ -6,7 +6,8 @@
All released versions of the **VST 3 SDK** with changes and dates:
-- [Version 3.7.11 (2024/05/??)](Version+3.7.11.md)
+- [Version 3.7.12 (2024/07/23)](Version+3.7.12.md)
+- [Version 3.7.11 (2024/04/22)](Version+3.7.11.md)
- [Version 3.7.10 (2024/01/18)](Version+3.7.10.md)
- [Version 3.7.9 (2023/10/09)](Version+3.7.9.md)
- [Version 3.7.8 (2023/05/15)](Version+3.7.8.md)
diff --git a/src/pages/Versions/Version+3.0.1.md b/src/pages/Versions/Version+3.0.1.md
index b15fd20d..b4416794 100644
--- a/src/pages/Versions/Version+3.0.1.md
+++ b/src/pages/Versions/Version+3.0.1.md
@@ -5,21 +5,26 @@
## Version 3.0.1 (2008/03/19)
- Interface Changes:
- - [Steinberg::Vst::IMidiMapping](https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IMidiMapping.html) : allowing to support MIDI Controllers and Pitchbend
+ - [Steinberg::Vst::IMidiMapping](https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IMidiMapping.html) : allowing to support MIDI Controllers and Pitchbend.
+
- New Flags/Enums:
- - Add new restart flag: Steinberg::Vst::kMidiCCAssignmentChanged
+ - Add new restart flag: Steinberg::Vst::kMidiCCAssignmentChanged.
+
- Restructuring of the SDK:
- - Move RestartFlags from vstTypes.h to ivsteditcontroller.h
- - Restructured helper classes by adding new files vstbus.cpp and vstparameters.cpp
- - Change the default refcount implementation of Steinberg::FUnknown (IMPLEMENT_REFCOUNT) to use atomic operations
- - Change InitModule/ExitModule to be called from host and not in DllMain (Cubase 4.2 needed)
- - Rename Steinberg::Vst::IUnitData to Steinberg::Vst::IProgramListData and introduce new interface Steinberg::Vst::IUnitData
+ - Move RestartFlags from vstTypes.h to ivsteditcontroller.h.
+ - Restructured helper classes by adding new files vstbus.cpp and vstparameters.cpp.
+ - Change the default refcount implementation of Steinberg::FUnknown (IMPLEMENT_REFCOUNT) to use atomic operations.
+ - Change InitModule/ExitModule to be called from host and not in DllMain (Cubase 4.2 needed).
+ - Rename Steinberg::Vst::IUnitData to Steinberg::Vst::IProgramListData and introduce new interface Steinberg::Vst::IUnitData.
+
- Helpers Classes:
- - Add new helper class EditControllerEx1: extend of EditController with Unit support
- - Add new helper class Steinberg::Vst::SingleComponentEffect for single component effects
+ - Add new helper class EditControllerEx1: extend of EditController with Unit support.
+ - Add new helper class Steinberg::Vst::SingleComponentEffect for single component effects.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - AGain example has been extended: supports IMidiMapping, [Side-chain](../Technical+Documentation/Change+History/3.0.0/Multiple+Dynamic+IO.md#what-is-a-side-chain) and Unit
- - Add Visual Studio 2008 solution
+ - AGain example has been extended: supports IMidiMapping, [Side-chain](../Technical+Documentation/Change+History/3.0.0/Multiple+Dynamic+IO.md#what-is-a-side-chain) and Unit.
+ - Add Visual Studio 2008 solution.
+
- Documentation
- - Rework
- - Add some new FAQs
+ - Rework.
+ - Add some new FAQs.
diff --git a/src/pages/Versions/Version+3.0.2.md b/src/pages/Versions/Version+3.0.2.md
index 60f202d2..196c5ebf 100644
--- a/src/pages/Versions/Version+3.0.2.md
+++ b/src/pages/Versions/Version+3.0.2.md
@@ -5,7 +5,9 @@
## Version 3.0.2 (2009/01/15)
- Interface Changes:
- - [Steinberg::Vst::IParameterFinder](https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IParameterFinder.html) : Extension for [IPlugView](https://steinbergmedia.github.io/vst3_doc/base/classSteinberg_1_1IPlugView.html) to find view parameters (lookup value under mouse support)
+ - [Steinberg::Vst::IParameterFinder](https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IParameterFinder.html) : Extension for [IPlugView](https://steinbergmedia.github.io/vst3_doc/base/classSteinberg_1_1IPlugView.html) to find view parameters (lookup value under mouse support).
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - Adaptation of AGain example for support of interface IParameterFinder
-- Some documentation changes
+ - Adaptation of AGain example for support of interface IParameterFinder.
+
+- Some documentation changes.
diff --git a/src/pages/Versions/Version+3.1.0.md b/src/pages/Versions/Version+3.1.0.md
index c04e3638..68c29958 100644
--- a/src/pages/Versions/Version+3.1.0.md
+++ b/src/pages/Versions/Version+3.1.0.md
@@ -5,30 +5,38 @@
## Version 3.1.0 (2010/06/25)
- Restructuring of the SDK:
- - new Base Module (many useful classes, such as templates and containers)
- - Renamed the file public.sdk/source/main/pluginfactory.cpp to public.sdk/source/main/pluginfactoryvst3.cpp
- - Renamed the file public.sdk/source/main/pluginfactory.h to public.sdk/source/main/pluginfactoryvst3.h
- - Renaming Microsoft Visual Projects
+ - new Base Module (many useful classes, such as templates and containers).
+ - Renamed the file public.sdk/source/main/pluginfactory.cpp to public.sdk/source/main/pluginfactoryvst3.cpp.
+ - Renamed the file public.sdk/source/main/pluginfactory.h to public.sdk/source/main/pluginfactoryvst3.h.
+ - Renaming Microsoft Visual Projects.
+
- New Interfaces:
- - Steinberg::Vst::IEditController2: support for setKnobMode/openHelp/openAboutBox
- - Steinberg::Vst::IComponentHandler2: support for parameter group editing from plug-in UI, dirty state and request host to open the plug-in editor
- - Steinberg::Vst::IAudioPresentationLatency: informs the plug-in about the Audio Presentation Latencies (in/out)
+ - Steinberg::Vst::IEditController2: support for setKnobMode/openHelp/openAboutBox.
+ - Steinberg::Vst::IComponentHandler2: support for parameter group editing from plug-in UI, dirty state and request host to open the plug-in editor.
+ - Steinberg::Vst::IAudioPresentationLatency: informs the plug-in about the Audio Presentation Latencies (in/out).
+
- New Event Structure:
- - Steinberg::Vst::PolyPressureEvent: Polypressure event support
+ - Steinberg::Vst::PolyPressureEvent: Polypressure event support.
+
- New Flags/Enums:
- - New plug-in Types used for subCategories: PlugType::kMono, PlugType::kStereo, PlugType::kSurround
- - New parameter flag ParameterInfo::kIsList: flags the parameter as a list of discrete string values
- - New IoModes enum: Steinberg::Vst::IoModes::kOfflineProcessing used with setIoMode when the plug-in is used in an offline processing context
+ - New plug-in Types used for subCategories: PlugType::kMono, PlugType::kStereo, PlugType::kSurround.
+ - New parameter flag ParameterInfo::kIsList: flags the parameter as a list of discrete string values.
+ - New IoModes enum: Steinberg::Vst::IoModes::kOfflineProcessing used with setIoMode when the plug-in is used in an offline processing context.
+
- [Plug-in wrappers](../What+is+the+VST+3+SDK/Wrappers/index.md):
- New VST 3 - VST 2.x Wrapper: by just adding small initializing code, you can provide a **VST 2.x** version of your **VST 3** plug-in
- New VST 3 - Audio Unit Wrapper with just a few build settings, you can provide AU support with your **VST 3** plug-in
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - New **VST 3 Plug-ins** examples: ADelay plug-in, mda **VST 3 Plug-ins** (thanks Paul Kellet and Arne Scheffler)
+ - New **VST 3 plug-ins** examples: ADelay plug-in, mda **VST 3 Plug-ins** (thanks Paul Kellet and Arne Scheffler)
- Remove Visual Studio 2003 projects
- Clean up AGain and add separate version supporting [side-chain](../Technical+Documentation/Change+History/3.0.0/Multiple+Dynamic+IO.md#what-is-a-side-chain)
-- New features of the VST 3 Plug-in Test Host:
- - MIDI Input support
- - better ASIO support
- - Mac 64 bit support (Cocoa view support also in 32 bit)
+
+- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md):
+ - Add MIDI Input support.
+ - Better ASIO support.
+ - Add Mac 64 bit support (Cocoa view support also in 32 bit).
+
- Fixes in [Validator](../What+is+the+VST+3+SDK/Index.md#validator-command-line)
-- Some documentation changes
+
+- Some documentation changes.
diff --git a/src/pages/Versions/Version+3.5.0.md b/src/pages/Versions/Version+3.5.0.md
index b5e61e07..a20f338b 100644
--- a/src/pages/Versions/Version+3.5.0.md
+++ b/src/pages/Versions/Version+3.5.0.md
@@ -10,20 +10,27 @@
- Steinberg::Vst::IXmlRepresentationController: [\[3.5.0\] Remote Representation](../Technical+Documentation/Change+History/3.5.0/IXmlRepresentationController.md) of Parameters Support (allows to define different parameter mappings for different remotes device).
- Steinberg::Vst::IEditControllerHostEditing: Parameter editing from host/remote control (better support of linked parameters when editing from remote control)
- Steinberg::Vst::IComponentHandler3 / Steinberg::Vst::IContextMenu / Steinberg::Vst::IContextMenuTarget: [\[3.5.0\] Context Menu Support](../Technical+Documentation/Change+History/3.5.0/IComponentHandler3.md) (allows the plug-in to create a context menu for a given parameter, partially filled by the host).
+
- New Flags/Enums:
- Add new restart flag: Steinberg::Vst::kIoTitlesChanged: informing the host about titles changes of busses.
+
- Helpers Classes:
- New Steinberg::Vst::XmlRepresentationHelper: helper for constructing a remote representation (xml based). See [\[3.5.0\] Remote Representation of Parameters Support](../Technical+Documentation/Change+History/3.5.0/IXmlRepresentationController.md).
- Steinberg::Vst::EditControllerEx1: support of ProgramPitchNames added.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- New VST 3 instrument examples:
- - Instrument "Note Expression Synth" supporting Note Expression Events
- - Effect showing support of pitchnames (ProgramPitchNames)
+ - Instrument "Note Expression Synth" supporting Note Expression Events.
+ - Effect showing support of pitchnames (ProgramPitchNames).
+
- [Validator](../What+is+the+VST+3+SDK/Index.md#validator-command-line):
- - More command line options
- - Possibility to add custom tests by the plug-in
+ - More command line options.
+ - Possibility to add custom tests by the plug-in.
+
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.0
- - preview version of VSTGUI with optimal **VST 3** support
+ - preview version of VSTGUI with optimal **VST 3** support.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- - VST 3 - Audio Unit Wrapper fixes and support of Program changes
-- Some documentation changes
+ - VST 3 - Audio Unit Wrapper fixes and support of Program changes.
+
+- Some documentation changes.
diff --git a/src/pages/Versions/Version+3.5.1.md b/src/pages/Versions/Version+3.5.1.md
index b6fe9591..c778145d 100644
--- a/src/pages/Versions/Version+3.5.1.md
+++ b/src/pages/Versions/Version+3.5.1.md
@@ -6,22 +6,27 @@
- Interface Changes:
- due to a missing calling convention in IContextMenu interfaces, we had to generate new iids for this set of interfaces, Steinberg hosts will be updated (from 6.0.5) in order to support correctly this interface set. The old interfaces when already used will continue to be supported in Steinberg hosts. Sorry for this issue...
+
- Helpers Classes:
- - EditController is now one of the base classes of SingleComponentEffect
- - If you have used the SingleComponentEffect before, make sure that you must exclude vsteditcontroller.cpp now if it was in your project
- - EditControllerEx1 has a new function: setProgramName
- - ProgramList has a new function: setProgramName
+ - EditController is now one of the base classes of SingleComponentEffect.
+ - If you have used the SingleComponentEffect before, make sure that you must exclude vsteditcontroller.cpp now if it was in your project.
+ - EditControllerEx1 has a new function: setProgramName.
+ - ProgramList has a new function: setProgramName.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - Add Visual Studio 2010 projects
- - Remove Visual Studio 2003 projects
- - Fix AGain Single Component Effect
+ - Add Visual Studio 2010 projects.
+ - Remove Visual Studio 2003 projects.
+ - Fix AGain Single Component Effect.
+
- VSTGUI 4.0
- - Update to the final 4.0 release
+ - Update to the final 4.0 release.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- VST 3 - VST 2.x Wrapper:
- - fix an issue with destroying the editor
+ - fix an issue with destroying the editor.
- VST 3 - Audio Unit Wrapper:
- - fix initial editor size issue
- - optimization for GetParameterInfo
+ - fix initial editor size issue.
+ - optimization for GetParameterInfo.
+
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md):
- - New feature: Convert **VST 3** Preset to **VST 2** preset (fxp or fxb)
+ - New feature: Convert **VST 3** Preset to **VST 2** preset (fxp or fxb).
diff --git a/src/pages/Versions/Version+3.5.2.md b/src/pages/Versions/Version+3.5.2.md
index 05410171..11e365bf 100644
--- a/src/pages/Versions/Version+3.5.2.md
+++ b/src/pages/Versions/Version+3.5.2.md
@@ -5,27 +5,34 @@
## Version 3.5.2 (2012/09/25)
- Interface Changes:
- - Note Expression supports a new event type: NoteExpressionTextEvent
+ - Note Expression supports a new event type: NoteExpressionTextEvent.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- Fix Visual Studio 2010 projects (filters added)
- - Adaptation for XCode4 (The again sample project uses [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 3.6 which needs the 10.6 SDK for the 32 bit build, in later Xcode tools this SDK is not available. If you use VSTGUI 3.6 you need to use a Xcode version which has the 10.6 SDK or earlier included.)
+ - Adaptation for XCode4 (The again sample project uses [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 3.6 which needs the 10.6 SDK for the 32 bit build, in later Xcode tools this SDK is not available. If you use VSTGUI 3.6 you need to use a Xcode version which has the 10.6 SDK or earlier included.).
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- VST 3 - Audio Unit Wrapper:
- - fix noteOn and noteOff offset
- - fix RestoreState with IO bus changes
- - MIDI PolyPressure support added
- - non-automatable parameters have now FlagAudioUnitParameterFlag_NonRealTime AU flag
- - fix under Logic where sample rate was not set for mono track
+ - fix noteOn and noteOff offset.
+ - fix RestoreState with IO bus changes.
+ - MIDI PolyPressure support added.
+ - non-automatable parameters have now FlagAudioUnitParameterFlag_NonRealTime AU flag.
+ - fix under Logic where sample rate was not set for mono track.
+
- VST 3 - VST 2.x Wrapper:
- - fix getMidiProgramCategory
+ - fix getMidiProgramCategory.
+
- New Flags/Enums:
- New predefined Speaker Arrangements: 9.0/9.1/10.0/10.1/11.0/11.1/13.0/13.1 based on Auro 3D definition ().
+
- Helpers Classes:
- New in Base:
- - class Steinberg::Region
- - class Steinberg::IStreamWrapper
- - Helper Steinberg::HexBinary: HexBinary encoding and decoding
+ - class Steinberg::Region.
+ - class Steinberg::IStreamWrapper.
+ - Helper Steinberg::HexBinary: HexBinary encoding and decoding.
+
- Some documentation changes
- [Steinberg::Vst::IParameterFinder](https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IParameterFinder.html): To enable important functionalities (like AI Knob) a recommendation to implement this interface was added.
- The VST 3 plug-in locations priority has been changed: Application level should be scanned from host after Global level.
-- Licensing change for example source code files
+
+- Licensing change for example source code files.
diff --git a/src/pages/Versions/Version+3.6.0.md b/src/pages/Versions/Version+3.6.0.md
index 1f3be183..c94af4e6 100644
--- a/src/pages/Versions/Version+3.6.0.md
+++ b/src/pages/Versions/Version+3.6.0.md
@@ -7,23 +7,31 @@
- Interface Changes:
- Preset meta information via Steinberg::Vst::IStreamAttributes
- New Event Types: Steinberg::Vst::ChordEvent, Steinberg::Vst::ScaleEvent
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- \[3.6.0\] iOS Inter-App Audio support
- VST 3 - VST 2.x Wrapper:
- - fix when changing from host between single and double precision processing
- - fix setProgram and processMidiEvent for kProgramChangeStatus where the wrong idx was used for programChange Parameter
+ - fix when changing from host between single and double precision processing.
+ - fix setProgram and processMidiEvent for kProgramChangeStatus where the wrong idx was used for programChange Parameter.
- VST 3 - Audio Unit Wrapper:
- - update to new AUPlugIn API in macOS X 10.7
- - virtual destructor for NSDataIBStream
+ - update to new AUPlugIn API in macOS X 10.7.
+ - virtual destructor for NSDataIBStream.
+
- New Flags/Enums:
- - New predefined 3D Speaker Arrangements: k81MPEG3D, k222
+ - New predefined 3D Speaker Arrangements: k81MPEG3D, k222.
+
- Helpers Classes:
- - fix compilation for UNICODE_OFF enable
+ - fix compilation for UNICODE_OFF enable.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - New VST 3 HostChecker Plug-in
+ - New VST 3 HostChecker Plug-in.
+
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.2
- - Update to the final 4.2 release including iOS support
+ - Update to the final 4.2 release including iOS support.
+
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md):
- - New feature: Overwrite plug-in Name in VST 3 Presets
+ - New feature: Overwrite plug-in Name in VST 3 Presets.
+
- Licensing has changed! Please read the new license agreement [VST 3 Licensing Issues](../VST+3+Licensing/Index.md).
+
- Xcode 5 note: To successfully build the examples for macOS X you need to change the SDKROOT variable in base/mac/config/settings/sdk_deployment_10_6.xcconfig to macosx10.8.
diff --git a/src/pages/Versions/Version+3.6.10.md b/src/pages/Versions/Version+3.6.10.md
index 8a99a016..049af7d6 100644
--- a/src/pages/Versions/Version+3.6.10.md
+++ b/src/pages/Versions/Version+3.6.10.md
@@ -4,17 +4,21 @@
## Version 3.6.10 (2018/06/11)
-- New definition of plug-in format for Windows including icon support (VST 3 Bundle: [VST 3 Locations / Format](../Technical+Documentation/Locations+Format/Plugin+Locations.md))
-- Support of Snapshots inside the VST 3 Bundle
+- New definition of plug-in format for Windows including icon support (VST 3 Bundle: [VST 3 Locations / Format](../Technical+Documentation/Locations+Format/Plugin+Locations.md)).
+
+- Support of Snapshots inside the VST 3 Bundle.
+
- cmake:
- - adapt cmake files for better integration of users projects
- - fix support Universal Binary for AudioUnit
+ - adapt cmake files for better integration of users projects.
+ - fix support Universal Binary for AudioUnit.
+
- [Plug-in wrappers](../What+is+the+VST+3+SDK/Wrappers/index.md):
- - refactoring AAX/VST 2 Wrappers
+ - refactoring AAX/VST 2 Wrappers.
- AAX Wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)):
- - fix Bypass behavior
- - fix initial signal latency
- - fix indexing of parameter, conflicting with VST 2
+ - fix Bypass behavior.
+ - fix initial signal latency.
+ - fix indexing of parameter, conflicting with VST 2.
+
- Helpers classes:
- - fix activateBus issue in class SingleComponentEffect
- - fix Ring Buffer class issue
+ - fix activateBus issue in class SingleComponentEffect.
+ - fix Ring Buffer class issue.
diff --git a/src/pages/Versions/Version+3.6.11.md b/src/pages/Versions/Version+3.6.11.md
index e74095ee..5b81994b 100644
--- a/src/pages/Versions/Version+3.6.11.md
+++ b/src/pages/Versions/Version+3.6.11.md
@@ -4,25 +4,30 @@
## Version 3.6.11 (2018/10/22)
-- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.7
- - update to VSTGUI 4.7
- - move from GTK++ to XCB for Linux support
- - redesigned drag'n drop
- - drags with bitmaps are now supported on Windows
- - standalone library support for Windows 7
- - new ImageStitcher tool
- - the GDI+ draw backend was removed, the Direct2D backend is the replacement
-- New icon for VST 3 bundles: VST_Logo_Steinberg.ico and VST_Logo_Steinberg.icns (located in VST_SDK/VST3_SDK/doc/artwork folder)
+- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.7:
+ - update to VSTGUI 4.7.
+ - move from GTK++ to XCB for Linux support.
+ - redesigned drag'n drop.
+ - drags with bitmaps are now supported on Windows.
+ - standalone library support for Windows 7.
+ - new ImageStitcher tool.
+ - the GDI+ draw backend was removed, the Direct2D backend is the replacement.
+
+- New icon for VST 3 bundles: VST_Logo_Steinberg.ico and VST_Logo_Steinberg.icns (located in VST_SDK/VST3_SDK/doc/artwork folder).
+
- Interface changes:
- VST 2 interface not available anymore!
- New [Steinberg::Vst::INoteExpressionPhysicalUIMapping](../Technical+Documentation/Change+History/3.6.11/INoteExpressionPhysicalUIMapping.md) (plug-in): allowing the host to retrieve the preferred physical mapping associated to note expression supported by the plug-in.
+
- cmake:
- further improvement for users projects
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- AAX Wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)):
- - fix UI resizing
- - fix issue for default blocksize
+ - fix UI resizing.
+ - fix issue for default blocksize.
- VST 2 Wrapper:
- - fix for instruments which were not visible as instrument
+ - fix for instruments which were not visible as instrument.
+
- Helpers classes:
- - make virtual some functions of class parameter (set/getUnitID, getInfo, set/getPrecision)
+ - make virtual some functions of class parameter (set/getUnitID, getInfo, set/getPrecision).
diff --git a/src/pages/Versions/Version+3.6.12.md b/src/pages/Versions/Version+3.6.12.md
index fbc98292..9573d5a5 100644
--- a/src/pages/Versions/Version+3.6.12.md
+++ b/src/pages/Versions/Version+3.6.12.md
@@ -5,35 +5,40 @@
## Version 3.6.12 (2018/12/03)
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.7
- - redesigned drag and drop (drags with bitmaps are now supported on Windows)
- - standalone library support for Windows 7
- - new ImageStitcher tool
- - the GDI+ draw backend was removed, the Direct2D backend is the replacement
- - fix crash with splash screen
- - fix compilation for VSTGUI Tools on win32
- - clean up
+ - redesigned drag and drop (drags with bitmaps are now supported on Windows).
+ - standalone library support for Windows 7.
+ - new ImageStitcher tool.
+ - the GDI+ draw backend was removed, the Direct2D backend is the replacement.
+ - fix crash with splash screen.
+ - fix compilation for VSTGUI Tools on win32.
+ - clean up.
+
- Interfaces changes:
- - New LegacyMIDICCOutEvent (plug-in): allow a plug-in to generate MIDI CC as output event.
- - New IMidiLearn (plug-in): allow a plug-in to get the currently live playing MIDI CC to implement custom MIDI learning.
- - New IPlugInterfaceSupport (host): allow a plug-in to ask the host if a given plug-in interface is supported/used by the host.
- - New IVst3WrapperMPESupport (wrapper): allow a plug-in to set up MPE support in wrappers.
+ - New *LegacyMIDICCOutEvent* (plug-in): allow a plug-in to generate MIDI CC as output event.
+ - New *IMidiLearn* (plug-in): allow a plug-in to get the currently live playing MIDI CC to implement custom MIDI learning.
+ - New *IPlugInterfaceSupport* (host): allow a plug-in to ask the host if a given plug-in interface is supported/used by the host.
+ - New *IVst3WrapperMPESupport* (wrapper): allow a plug-in to set up MPE support in wrappers.
+
- cmake:
- - minor refactoring (like renaming WIN to SMTG_WIN)
- - fix WIN_ARCHITECTURE_NAME for Windows 32bits
- - fix SMTG_PACKAGE_ICON_PATH selection
- - split WIN_PDB into WIN_PDB32 and WIN_PDB64
+ - minor refactoring (like renaming WIN to SMTG_WIN).
+ - fix *WIN_ARCHITECTURE_NAME* for Windows 32bits.
+ - fix `SMTG_PACKAGE_ICON_PATH` selection.
+ - split *WIN_PDB* into *WIN_PDB32* and *WIN_PDB64*.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - New LegacyMIDICCOut **VST 3** plug-in showing the use of LegacyMIDICCOutEvent
- - Add IMidiLearn support for NoteExpressionSynth
- - Add Audio Unit v3 NoteExpressionSynth example with MPE support
+ - New *LegacyMIDICCOut* **VST 3** plug-in showing the use of LegacyMIDICCOutEvent.
+ - Add *IMidiLearn* support for NoteExpressionSynth.
+ - Add Audio Unit v3 NoteExpressionSynth example with MPE support.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- Audio Unit v3 (AUv3) Wrapper (VST 3 - Audio Unit v3 Wrapper):
- out of the box MPE support. As MPE is a limited subset of the Note Expression feature, the three expressions are simply mapped to the note expressions returned via the [INoteExpressionPhysicalUIMapping](../Technical+Documentation/Change+History/3.6.11/INoteExpressionPhysicalUIMapping.md) interface.
- - note that you must have certificates to sign on macOS/iOS for AUv3
- - complete folder restructuring for easy adaption
+ - note that you must have certificates to sign on macOS/iOS for AUv3.
+ - complete folder restructuring for easy adaption.
- AAX Wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)):
- fix automation update after loading a preset
- VST 2 Wrapper:
- - fix double release of editor
+ - fix double release of editor.
+
- Helpers classes:
- - New file with some helpers for event: vsteventshelper.h
+ - New file with some helpers for event: vsteventshelper.h.
diff --git a/src/pages/Versions/Version+3.6.13.md b/src/pages/Versions/Version+3.6.13.md
index 27e8998d..ea569153 100644
--- a/src/pages/Versions/Version+3.6.13.md
+++ b/src/pages/Versions/Version+3.6.13.md
@@ -5,19 +5,24 @@
## Version 3.6.13 (2019/04/08)
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.8
- - new VSTGUI::CSegmentButton selection mode kSingleToggle and styles kHorizontalInverse and kVerticalInverse
+ - new VSTGUI::CSegmentButton selection mode kSingleToggle and styles kHorizontalInverse and kVerticalInverse.
+
- Interfaces changes:
- - new PluginType kInstrumentPiano (instrument for piano sounds)
+ - new PluginType kInstrumentPiano (instrument for piano sounds).
+
- cmake:
- - minor refactoring
- - add Visual Studio 2020 support
+ - minor refactoring.
+ - add Visual Studio 2020 support.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - add some more checks in HostChecker plug-in
- - add some debug output for editorhost
+ - add some more checks in HostChecker plug-in.
+ - add some debug output for editorhost.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- AAX Wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)):
- - loading of preset should not overwrite the current Bypass state
+ - loading of preset should not overwrite the current Bypass state.
+
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md):
- - support of IPlugInterfaceSupport
- - support of MPE
- - possibility to open the same plug-in editor twice
+ - support of IPlugInterfaceSupport.
+ - support of MPE.
+ - possibility to open the same plug-in editor twice.
diff --git a/src/pages/Versions/Version+3.6.14.md b/src/pages/Versions/Version+3.6.14.md
index ae78c744..104910c1 100644
--- a/src/pages/Versions/Version+3.6.14.md
+++ b/src/pages/Versions/Version+3.6.14.md
@@ -7,24 +7,28 @@
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.9
- new control: VSTGUI::CListControl in play with VSTGUI::CStringList
- custom font support: VSTGUI now supports using fonts embedded in its Bundle/Package at Resources/Fonts. Note that this works on Windows only when building with the Windows 10 SDK and it does also only work on Windows 10. There is no such restriction on macOS or Linux.
+
- cmake:
- - minor refactoring
- - add file SMTG_VST3_SDK.cmake
- - better FindJack support
- - better Cross-compiler support for Linux
+ - minor refactoring.
+ - add file SMTG_VST3_SDK.cmake.
+ - better FindJack support.
+ - better Cross-compiler support for Linux.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - add more checks and 64 bit processing support in HostChecker plug-in
- - add AAX version of "HostChecker Plug-in"
+ - add more checks and 64 bit processing support in HostChecker plug-in.
+ - add AAX version of "HostChecker Plug-in".
- add new test in Validator:
- - threaded process, bypass persistence
- - new option to run more tests (optExtensiveTests, "Run extensive tests (may take a long time)")
- - improvement to MidiMappingTest performance
+ - threaded process, bypass persistence.
+ - new option to run more tests (optExtensiveTests, "Run extensive tests (may take a long time)").
+ - improvement to MidiMappingTest performance.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- The InterAppAudio Wrapper is deprecated and may be removed in the next SDK update. Please switch to AudioUnit V3 on iOS.
- AAX Wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)):
- - add SMPTE support
+ - add SMPTE support.
+
- Helpers classes:
- clear programLists, programIndexMap and units in EditControllerEx1 when terminating
-- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v2.8.10
- - menu change on Windows
- - add new tests
+- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v2.8.10.
+ - menu change on Windows.
+ - add new tests.
diff --git a/src/pages/Versions/Version+3.6.5.md b/src/pages/Versions/Version+3.6.5.md
index aa1ff018..149ef095 100644
--- a/src/pages/Versions/Version+3.6.5.md
+++ b/src/pages/Versions/Version+3.6.5.md
@@ -5,22 +5,26 @@
## Version 3.6.5 (2015/08/28)
- Interface changes:
- - New [Steinberg::Vst::ChannelContext::IInfoListener](../Technical+Documentation/Change+History/3.6.5/IInfoListener.md) interface: informing the plug-in about the channel in which it is instantiated (name, color...)
- - New Steinberg::Vst::IPrefetchableSupport interface: allowing a plug-in to inform the host that it does not support prefetch/ASIO Guard (could be dynamically)
- - New Steinberg::Vst::IUnitHandler2 interface: allowing a plug-in to inform the host that an assignment Unit-Bus defined by IUnitInfo::getUnitByBus has changed
- - New Steinberg::Vst::IAutomationState interface: informing the plug-in about its current automation state
- - use "#pragma once" instead of "#ifndef"
+ - New [Steinberg::Vst::ChannelContext::IInfoListener](../Technical+Documentation/Change+History/3.6.5/IInfoListener.md) interface: informing the plug-in about the channel in which it is instantiated (name, color...).
+ - New Steinberg::Vst::IPrefetchableSupport interface: allowing a plug-in to inform the host that it does not support prefetch/ASIO Guard (could be dynamically).
+ - New Steinberg::Vst::IUnitHandler2 interface: allowing a plug-in to inform the host that an assignment Unit-Bus defined by IUnitInfo::getUnitByBus has changed.
+ - New Steinberg::Vst::IAutomationState interface: informing the plug-in about its current automation state.
+ - use "#pragma once" instead of "#ifndef".
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - New **VST 3 Plug-ins** examples:
- - New **VST 3 Plug-in** ChannelContext showing how Steinberg::Vst::ChannelContext::IInfoListener interface is working
- - New **VST 3 Plug-in** PrefetchableSupport showing how Steinberg::Vst::IPrefetchableSupport interface is working
- - "VST 3 Host Checker" plug-in updated with new checks
+ - New **VST 3 plug-ins** examples:
+ - New **VST 3 plug-in** ChannelContext showing how Steinberg::Vst::ChannelContext::IInfoListener interface is working.
+ - New **VST 3 plug-in** PrefetchableSupport showing how Steinberg::Vst::IPrefetchableSupport interface is working.
+ - "VST 3 Host Checker" plug-in updated with new checks.
+
- [Plug-in wrappers](../What+is+the+VST+3+SDK/Wrappers/index.md):
- VST 3 - Audio Unit Wrapper:
- - support MIDI output
- - fix crash with namespace conflict with macOS X 10.10
- - add PresetAttributes::StateType support in AUWrapper::restoreState
+ - support MIDI output.
+ - fix crash with namespace conflict with macOS X 10.10.
+ - add PresetAttributes::StateType support in AUWrapper::restoreState.
+
- New Flags/Enums:
- - New predefined 3D Speaker Arrangements: k91Atmos
+ - New predefined 3D Speaker Arrangements: k91Atmos.
+
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md):
- add some new unit tests: Bypass parameter support is mandatory for FX Plug-in (not Instrument)!
diff --git a/src/pages/Versions/Version+3.6.6.md b/src/pages/Versions/Version+3.6.6.md
index d4c19907..807ed700 100644
--- a/src/pages/Versions/Version+3.6.6.md
+++ b/src/pages/Versions/Version+3.6.6.md
@@ -5,29 +5,36 @@
## Version 3.6.6 (2016/06/17)
- Interface changes:
- - New Steinberg::IPlugViewContentScaleSupport: plug-in view content scale support
+ - New Steinberg::IPlugViewContentScaleSupport: plug-in view content scale support.
+
- New Flags/Enums:
- - New RestartFlags: kRoutingInfoChanged informing the host that the Routing Info (IComponent) has changed
+ - New RestartFlags: kRoutingInfoChanged informing the host that the Routing Info (IComponent) has changed.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - New **VST 3 Plug-ins** examples:
- - New **VST 3 Plug-in** Program Change showing how handling its own Program List is working
- - Remove Visual Projects version 8 and 9
+ - New **VST 3 plug-ins** examples:
+ - New **VST 3 plug-in** Program Change showing how handling its own Program List is working.
+ - Remove Visual Projects version 8 and 9.
+
- [Plug-in wrappers](../What+is+the+VST+3+SDK/Wrappers/index.md):
- VST 3 - Audio Unit Wrapper:
- - update to last Audio Core update
+ - update to last Audio Core update.
- VST 3 - VST 2.x Wrapper:
- - add support of version (VST 3 -> VST 2)
+ - add support of version (VST 3 -> VST 2).
+
- Helpers classes:
- - add support for bypass including delay compensation (vstbypassprocessor.h)
- - add helpers for events/parameters iterator (vstaudioprocessoralgo.h)
+ - add support for bypass including delay compensation (vstbypassprocessor.h).
+ - add helpers for events/parameters iterator (vstaudioprocessoralgo.h).
- add helpers for SpeakerArr:
- - Speaker getSpeaker (const SpeakerArrangement& arr, int32 index)
- - bool isSubsetOf (const SpeakerArrangement& arrSubSet, const SpeakerArrangement& arr)
-- VSTGUI 4.3
- - update to VSTGUI 4.3.1 (available here too:
- - the [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) repository was moved to github:
- - Please use github if you want to contribute to VSTGUI.
+ - Speaker getSpeaker (const SpeakerArrangement& arr, int32 index).
+ - bool isSubsetOf (const SpeakerArrangement& arrSubSet, const SpeakerArrangement& arr).
+
+- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.3
+ - update to VSTGUI 4.3.1 (available here too: .
+ - the [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) repository was moved to github: .
+ - Please use github if you want to contribute to [VSTGUI github](https://github.com/steinbergmedia/vstgui).
+
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md):
- fix support of SingleComponent
+
- new Developer Forum:
- - finally, we get our VST forum at start, please check and use it as new communication platform, the VST mailing list will be kept as archive mailing list
+ - finally, we get our VST forum at start, please check and use it as new communication platform, the VST mailing list will be kept as archive mailing list.
diff --git a/src/pages/Versions/Version+3.6.7.md b/src/pages/Versions/Version+3.6.7.md
index 0a538f5a..3285d485 100644
--- a/src/pages/Versions/Version+3.6.7.md
+++ b/src/pages/Versions/Version+3.6.7.md
@@ -8,6 +8,7 @@
- Licensing has changed! Please read the new [VST 3 Licensing Issues](../VST+3+Licensing/Index.md).
- Use cmake as project generator: [How to use cmake for Building VST 3 plug-ins](../Tutorials/Using+cmake+for+building+plug-ins.md)
- This is the last version of the SDK supporting C++98, future versions will use C++11.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- New **VST 3** host implementation example:
- New HostEditor application: Cross-platform (Win/macOS/Linux) standalone which opens the UI of a **VST 3** plug-in
@@ -20,9 +21,10 @@
- Removed Xcode and Visual Studio projects, please use cmake now!
- On Windows, we link **VST 3** plug-ins with the MultiThreaded DLL runtime libraries (it will use Universal C Runtime Libraries, for older Windows version than Win 8.1 you may have to install these libraries from: )
- VSTGUI 3.x is not supported anymore (removed from the SDK), but you can still download it from github:
+
- [Plug-in wrappers](../What+is+the+VST+3+SDK/Wrappers/index.md):
- VST 3 - Audio Unit Wrapper:
- - fix AU Wrapper MIDI Program Change issue (data1 instead of data2)
+ - fix AU Wrapper MIDI Program Change issue (data1 instead of data2).
- VST 3 - VST 2.x Wrapper:
- - fix resize issue on macOS
- - fix mapping between **VST 3** ParamID and VST 2 paramID when bypass parameter is used
+ - fix resize issue on macOS.
+ - fix mapping between **VST 3** ParamID and VST 2 paramID when bypass parameter is used.
diff --git a/src/pages/Versions/Version+3.6.8.md b/src/pages/Versions/Version+3.6.8.md
index 3aef7fb2..c953f818 100644
--- a/src/pages/Versions/Version+3.6.8.md
+++ b/src/pages/Versions/Version+3.6.8.md
@@ -7,16 +7,20 @@
- Changes in the Licensing Agreement! Please check it ([VST 3 Licensing Issues](../VST+3+Licensing/Index.md)).
- [New Steinberg VST usage guidelines](../VST+3+Licensing/Usage+guidelines.md) PDF
- This SDK version required compilers supporting C++11. It requires on Windows Visual Studio 2015 minimum!
-- Linux support in Beta
+- Linux support in Beta.
+
- Interfaces changes:
- - New Steinberg::Vst::IComponentHandlerBusActivation (host): allowing a plug-in to request the host to activate or deactivate a specific bus (useful for instrument with multiple outputs)
+ - New Steinberg::Vst::IComponentHandlerBusActivation (host): allowing a plug-in to request the host to activate or deactivate a specific bus (useful for instrument with multiple outputs).
+
- New Flags/Enums:
- - New predefined Ambisonic Speaker Arrangements: 1st, 2cd and 3rd order (ACN ordering and SN3D normalization): kAmbi1stOrderACN, kAmbi2cdOrderACN, kAmbi3rdOrderACN with their associated speakers: kSpeakerACN0...kSpeakerACN15
- - New predefined 3D speaker arrangements: k70_4, k71_4
+ - New predefined Ambisonic Speaker Arrangements: 1st, 2cd and 3rd order (ACN ordering and SN3D normalization): kAmbi1stOrderACN, kAmbi2cdOrderACN, kAmbi3rdOrderACN with their associated speakers: kSpeakerACN0...kSpeakerACN15.
+ - New predefined 3D speaker arrangements: k70_4, k71_4.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- New VST 3 Host implementation examples:
- - Folder reorganization: hosting examples are in a separate folder: public.sdk/samples/vst-hosting
+ - Folder reorganization: hosting examples are in a separate folder: public.sdk/samples/vst-hosting.
- New AudioHost (AudioHost - cross-platform standalone) showing how integrate a VST 3 plug-in in a Jack world! This required Jack Audio (), only tested under Linux but should work on Windows 32bits and Mac.
+
- [Plug-in wrappers](../What+is+the+VST+3+SDK/Wrappers/index.md):
- - New Audio Unit v3 (AUv3) Wrapper (VST 3 - Audio Unit v3 Wrapper)
- - New AAX wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)): Note that in order to use this AAX wrapper for your plug-in, you have to download the AAX SDK (contact AVID), tested with AAX SDK Version 2.3.0
+ - New Audio Unit v3 (AUv3) Wrapper (VST 3 - Audio Unit v3 Wrapper).
+ - New AAX wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)). Note that in order to use this AAX wrapper for your plug-in, you have to download the AAX SDK (contact AVID), tested with AAX SDK Version 2.3.0.
diff --git a/src/pages/Versions/Version+3.6.9.md b/src/pages/Versions/Version+3.6.9.md
index 2fb0c57b..e6ef238c 100644
--- a/src/pages/Versions/Version+3.6.9.md
+++ b/src/pages/Versions/Version+3.6.9.md
@@ -5,26 +5,31 @@
## Version 3.6.9 (2018/03/01)
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.6
- - update to VSTGUI 4.6
- - including a new UI element: KeyboardView supporting Note Expression
+ - update to VSTGUI 4.6.
+ - including a new UI element: KeyboardView supporting Note Expression.
+
- Interfaces changes:
- rename some defines:
- - PLATFORM_64 => SMTG_PLATFORM_64
- - WINDOWS => SMTG_OS_WINDOWS
- - MAC => SMTG_OS_MACOS
- - LINUX => SMTG_OS_LINUX
- - extract Speaker Arrangement from vsttypes.h to vstspeaker.h
- - new kNoParamId constant for uninitialized parameter id
+ - PLATFORM_64 => `SMTG_PLATFORM_64`
+ - WINDOWS => `SMTG_OS_WINDOWS`
+ - MAC => `SMTG_OS_MACOS`
+ - LINUX => `SMTG_OS_LINUX`
+ - extract Speaker Arrangement from vsttypes.h to vstspeaker.h.
+ - new kNoParamId constant for uninitialized parameter id.
+
- cmake:
- - reorganization of cmake files
+ - reorganization of cmake files.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - fix [Validator](../What+is+the+VST+3+SDK/Index.md#validator-command-line) State test
- - NoteExpressionSynth uses the new KeyboardView
+ - fix [Validator](../What+is+the+VST+3+SDK/Index.md#validator-command-line) State test.
+ - NoteExpressionSynth uses the new KeyboardView.
- New HelloWorld **VST 3** plug-ins (template).
+
- [Plug-in wrappers](../What+is+the+VST+3+SDK/Wrappers/index.md):
- - VST 3 - Audio Unit Wrapper: fix and adaptation for newer XCode versions
- - Audio Unit v3 (AUv3) Wrapper (VST 3 - Audio Unit v3 Wrapper): some fixes, add cmake
- - AAX Wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)): add bypass and VU parameter support
- - interappaudio: improvements, fixes, add cmake
+ - VST 3 - Audio Unit Wrapper: fix and adaptation for newer XCode versions.
+ - Audio Unit v3 (AUv3) Wrapper (VST 3 - Audio Unit v3 Wrapper): some fixes, add cmake.
+ - AAX Wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)): add bypass and VU parameter support.
+ - interappaudio: improvements, fixes, add cmake.
+
- Helpers classes:
- - New Ring Buffer class (ringbuffer.h)
+ - New Ring Buffer class (ringbuffer.h).
diff --git a/src/pages/Versions/Version+3.7.0.md b/src/pages/Versions/Version+3.7.0.md
index 2f8b6502..290cab12 100644
--- a/src/pages/Versions/Version+3.7.0.md
+++ b/src/pages/Versions/Version+3.7.0.md
@@ -7,8 +7,9 @@
- Interface changes:
- New [IProcessContextRequirements](../Technical+Documentation/Change+History/3.7.0/IProcessContextRequirements.md) (implemented by plug-in).
- This is a new required interface a plug-in needs to implement when building with VST SDK 3.7 or newer.
- - New [IProgress](../Technical+Documentation/Change+History/3.7.0/IProgress.md) (implemented by host)
- - New [IParameterFunctionName](../Technical+Documentation/Change+History/3.7.0/IParameterFunctionName.md) (implemented by plug-in)
+ - New [IProgress](../Technical+Documentation/Change+History/3.7.0/IProgress.md) (implemented by host).
+ - New [IParameterFunctionName](../Technical+Documentation/Change+History/3.7.0/IParameterFunctionName.md) (implemented by plug-in).
+
- New Flags/Enums:
- New kIsHidden flag. With this flag, the parameter should NOT be displayed by the host and cannot be changed from outside the plug-in.
- New predefined 2D speaker arrangements:
@@ -17,35 +18,42 @@
- New predefined 3D speaker arrangements:
- k90_4, k91_4 (L R C Lfe Ls Rs Lc Rc Sl Sr Tfl Tfr Trl Trr)
- k90_6, k91_6 (L R C Lfe Ls Rs Lc Rc Sl Sr Tfl Tfr Trl Trr Tsl Tsr)
- - New Bus flag: kIsControlVoltage for audio busses
+ - New Bus flag: kIsControlVoltage for audio busses.
+
- Documentation:
- add documentation about **VST 3** and **MIDI 2.0**:
- - [MIDI 2.0 Increased Resolution, compared to MIDI 1.0](../Technical+Documentation/About+MIDI/Index.md)
- - [MIDI 2.0 Per-Note Controllers](../Technical+Documentation/About+MIDI/Index.md)
+ - [MIDI 2.0 Increased Resolution, compared to MIDI 1.0](../Technical+Documentation/About+MIDI/Index.md).
+ - [MIDI 2.0 Per-Note Controllers](../Technical+Documentation/About+MIDI/Index.md).
+
- cmake:
- - New cmake files
- - Fix on Windows creation of VST 3 folder using powershell with admin rights
+ - New cmake files.
+ - Fix on Windows creation of VST 3 folder using powershell with admin rights.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- New VST 3 plug-ins examples:
- - SyncDelay using [Steinberg::Vst::IProcessContextRequirements](../Technical+Documentation/Change+History/3.7.0/IProcessContextRequirements.md)
- - Panner using PlugType::kSpatialFx as SubCategory, it shows how to build a Panner plug-in Mono to Stereo
+ - SyncDelay using [Steinberg::Vst::IProcessContextRequirements](../Technical+Documentation/Change+History/3.7.0/IProcessContextRequirements.md).
+ - Panner using PlugType::kSpatialFx as SubCategory, it shows how to build a Panner plug-in Mono to Stereo.
- Added checks in HostChecker plug-in:
- - support of kIsHidden flag
- - support of [IProgress](../Technical+Documentation/Change+History/3.7.0/IProgress.md) (implemented by host)
- - support of [IParameterFunctionName](../Technical+Documentation/Change+History/3.7.0/IParameterFunctionName.md)
- - check if Silent flag for Main and [Side-chain](../Technical+Documentation/Change+History/3.0.0/Multiple+Dynamic+IO.html#what-is-a-side-chain) Inputs are used
+ - support of kIsHidden flag.
+ - support of [IProgress](../Technical+Documentation/Change+History/3.7.0/IProgress.md) (implemented by host).
+ - support of [IParameterFunctionName](../Technical+Documentation/Change+History/3.7.0/IParameterFunctionName.md).
+ - check if Silent flag for Main and [Side-chain](../Technical+Documentation/Change+History/3.0.0/Multiple+Dynamic+IO.html#what-is-a-side-chain) Inputs are used.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- Fix for AAX/VST 2 BaseWrapper setChunk attribute Vst::StateType::kProject was not set for component.
+
- Helpers classes:
- - Added functions to load FXB/FXP states and to write FXB states for compatibility with **VST 2.x** (see public.sdk/source/vst/utility/vst2persistence.h)
- - Fix compilation with MinGW-w64 GCC compiler
- - New helper: openurl.h allowing to open a URL in the default associated application
-- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v2.9.0: VST 3 Plug-in Test Host
+ - Added functions to load FXB/FXP states and to write FXB states for compatibility with **VST 2.x** (see public.sdk/source/vst/utility/vst2persistence.h).
+ - Fix compilation with MinGW-w64 GCC compiler.
+ - New helper: openurl.h allowing to open a URL in the default associated application.
+
+- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v2.9.0: VST 3 Plug-in Test Host.
- Added support of:
- IProgress
- IProcessContextRequirements
- IParameterFunctionName
- Fix crashes when closing 2 or more instances of GUI of same plug-in in particular order
- Fix support of SingleComponentEffect plug-ins that implement IMidiMapping
-- [VST3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v1.0.0:
+
+- [VST 3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v1.0.0:
- New easy to use VST 3 Project Generator.
diff --git a/src/pages/Versions/Version+3.7.1.md b/src/pages/Versions/Version+3.7.1.md
index b027ee2f..8480bf34 100644
--- a/src/pages/Versions/Version+3.7.1.md
+++ b/src/pages/Versions/Version+3.7.1.md
@@ -6,30 +6,35 @@
- New Flags/Enums:
- NoteIDUserRange: Reserved note identifier (noteId) range for a plug-in. Guaranteed not used by the host.
+
- cmake:
- - Rename files with SMTG_ prefix
- - Rename functions with smtg_ prefix
- - Reorganize files
- - Make VSTSDK more Mingw32 compatible
- - Support AUv3 building without team ID
- - Fix path handling in smtg_add_plugin_resource
+ - Rename files with SMTG_ prefix.
+ - Rename functions with smtg_ prefix.
+ - Reorganize files.
+ - Make VSTSDK more Mingw32 compatible.
+ - Support AUv3 building without team ID.
+ - Fix path handling in smtg_add_plugin_resource.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- - AAX Wrapper (AAXWrapper):
- - Add support of offline processing
- - Audio Unit v3 (AUv3) (AUv3Wrapper):
- - Add support of offline processing
- - Fix output bus activation
- - Fix when the component is not loaded from UI-Thread
+ - **AAX Wrapper**:
+ - Add support of offline processing.
+ - **AUv3 Wrapper**:
+ - Add support of offline processing.
+ - Fix output bus activation.
+ - Fix when the component is not loaded from UI-Thread.
+
- Helpers classes:
- - GetPluginFactory() def-file vs. declspec
+ - GetPluginFactory() def-file vs. declspec.
+
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v3.0:
- - New control voltage bus info column
- - New links in help menu
- - New enable MPE Support
- - Dark-Light scheme Support
- - Fix "Valid State Transition" test always fails a 64-bit-only plug-in #50
- - Fix automation unit test
-- [VST3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2020.10:
+ - New control voltage bus info column.
+ - New links in help menu.
+ - New enable MPE Support.
+ - Dark-Light scheme Support.
+ - Fix "Valid State Transition" test always fails a 64-bit-only plug-in #50.
+ - Fix automation unit test.
+
+- [VST 3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2020.10:
- New support of [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md)
- Enable Symbolic link on Windows
- Add VST3PluginTestHost.exe as Debugging->Command on Windows
diff --git a/src/pages/Versions/Version+3.7.10.md b/src/pages/Versions/Version+3.7.10.md
index 367c7d3e..2f7885a6 100644
--- a/src/pages/Versions/Version+3.7.10.md
+++ b/src/pages/Versions/Version+3.7.10.md
@@ -35,7 +35,7 @@
- Fix global buffer overflow (AddressSanitizer) issue.
- On Windows "*Steinberg built-in Driver*" is used by default if present.
-- [VST3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2024.01:
+- [VST 3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2024.01:
- Fix: ProjetGenerator should not allow new project inside the SDK folder.
- Adapt template project: remove audio input for Instrument and add a default processing implementation as example.
\ No newline at end of file
diff --git a/src/pages/Versions/Version+3.7.12.md b/src/pages/Versions/Version+3.7.12.md
new file mode 100644
index 00000000..e1f88e50
--- /dev/null
+++ b/src/pages/Versions/Version+3.7.12.md
@@ -0,0 +1,66 @@
+ >/ [VST Home](../) / [Change History](./Index.md)
+>
+># Version 3.7.12 (2024/07/23)
+
+## Version 3.7.12 (2024/07/23)
+
+- Interface changes:
+ - New Flags/Enums:
+ - New predefined speaker arrangements:
+ - **k70_2_TF** = 7.0.2 Top Front => L R C Ls Rs Sl Sr Tfl Tfr (~ITU 2+7+0.0).
+ - **k71_2_TF** = 7.1.2 Top Front => L R C Lfe Ls Rs Sl Sr Tfl Tfr (~ITU 2+7+0.1).
+
+- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) update [4.14.0](https://github.com/steinbergmedia/vstgui/releases/tag/vstgui4_14_0)
+
+- Documentation
+ - New tutorial: [AudioUnit Tutorial - How to add AUv2 support to your VST 3 plug-in](../Tutorials/Audio+Unit.md).
+
+- cmake
+ - Add changes to support the [Apple AudioUnit SDK](https://github.com/apple/AudioUnitSDK) for **AU Wrapper**.
+
+- Tools:
+
+- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
+ - **AAX** Wrapper: rename project aaxwrapper to aax_wrapper.
+ - Audio Unit:
+ - **AU/AUv3 Wrappers**:
+ - Add support for the old CoreAudio and new official AudioUnitSDK (version 1.1.0).
+ - **AU Wrapper**:
+ - Add support of MIDI2 (higher-resolution for velocity and CC) using a helper for decoding UMP message (*public.sdk/source/vst/utility/ump.h*).
+ - Add support of MIDI Learn interface [Vst::IMidiLearn](../Technical+Documentation/Change+History/3.6.12/IMidiLearn.md).
+ - Add cache program list infos so that the edit controller is not called in the process thread.
+ - Add MIDI mapping cache instead of calling the IMidiMapping interface in the audio process thread.
+ - Cleanup *public.sdk/source/vst/auwrapper/auwrapper.mm/auwrapper.h*.
+ - Fix thread issue for program change info update.
+ - Fix Reference Counting Issue in *VST3DynLibrary* class.
+ - Fix hanging notes.
+ - **AUv3 Wrapper**:
+ - Fix touch/gesture (begin/end edit).
+
+- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
+ - README.md files added for each examples.
+ - Rename project names for better readability.
+ - Temporary disable dataexchange example for linux due to missing linux implementation.
+ - Update **Hostchecker** plug-in:
+ - with new host check: call of getLatency after setActive and before setProcessing or process.
+ - new parameters for Randomize + LowLatency + DryWet with [IParameterFunctionName](../Technical+Documentation/Change+History/3.7.0/IParameterFunctionName.md) support.
+
+- Helpers classes:
+ - *hosting/test/connectionproxytest.cpp*: Avoid potential hang in connectionproxytest ([PR#66](https://github.com/steinbergmedia/vst3_public_sdk/pull/66)).
+ - *hosting/module_mac.mm*: fix warning (*-Wnullable-to-nonnull-conversion*) ([PR#67](https://github.com/steinbergmedia/vst3_public_sdk/pull/67)).
+ - *hosting/module_win32.cpp*: Add better failure report when loading library on Windows ([PR#68](https://github.com/steinbergmedia/vst3_public_sdk/pull/68)).
+ - Remove support for VSTGUI version 4.1 or older.
+ - *common/pluginview.cpp*: remove virtual function called from destructor ([Issue#79](https://github.com/steinbergmedia/vst3_public_sdk/issues/7)).
+ - Refactor *public.sdk/source/vst/utility/stringconvert.cpp* and extract a common base file: *public.sdk/source/common/commonstringconvert.cpp*.
+ - Replace "**FUnknownPtr\ xxx (context);**" by "**auto xxx = Steinberg::U::cast\ (context);**"
+ - It requires to include "*pluginterfaces/base/funknownimpl.h*".
+ - Fix loading of VST 2 preset: *tryVst2StateLoad* in *public.sdk\source\vst\utility\vst2persistence.cpp* ([PR#72](https://github.com/steinbergmedia/vst3_public_sdk/pull/72)).
+
+- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v3.7:
+ - New features:
+ - [File => Export Audio...](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md#menu-description)
+ - [File => Export Audio for current loaded MIDI...](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md#menu-description)
+ - [Transport => Toggle time format between Time and Bars](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md#transport-1)
+ - [Transport => Change the song position](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md#transport-1)
+ - [Transport => Change tempo and signature](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md#transport-1)
+
\ No newline at end of file
diff --git a/src/pages/Versions/Version+3.7.2.md b/src/pages/Versions/Version+3.7.2.md
index a828c5f3..edcd0fe2 100644
--- a/src/pages/Versions/Version+3.7.2.md
+++ b/src/pages/Versions/Version+3.7.2.md
@@ -6,51 +6,59 @@
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.10
- minimum requirement C++14.
- - [VSTGUI](https://steinbergmedia.github.io/vst3_doc/vstgui/html/namespace_v_s_t_g_u_i.html) now needs to be initialized and terminated explicitly. See [VSTGUI::init()](https://steinbergmedia.github.io/vst3_doc/vstgui/html/group__new__in__4__10.html)
- - UIDescription files are now written in JSON format and the old XML format is deprecated
- - It's now possible to conditionally remove the XML parser and the expat library from building (set VSTGUI_ENABLE_XML_PARSER to 0)
+ - [VSTGUI](https://steinbergmedia.github.io/vst3_doc/vstgui/html/namespace_v_s_t_g_u_i.html) now needs to be initialized and terminated explicitly. See [VSTGUI::init()](https://steinbergmedia.github.io/vst3_doc/vstgui/html/group__new__in__4__10.html).
+ - UIDescription files are now written in JSON format and the old XML format is deprecated.
+ - It's now possible to conditionally remove the XML parser and the expat library from building (set VSTGUI_ENABLE_XML_PARSER to 0).
+
- Licensing has changed to version 2.1! Please read the new license agreement /pages/VST+3+Licensing/Index.md). (if you have already signed the version 2.0 of the license agreement you do not have to sign it again).
+
- New Flags/Enums:
- New predefined 3D speaker arrangement:
- - k220 (L R C Ls Rs Lc Rc Cs Sl Sr Tc Tfl Tfc Tfr Trl Trc Trr Tsl Tsr Bfl Bfc Bfr)
+ - *k220* (L R C Ls Rs Lc Rc Cs Sl Sr Tc Tfl Tfc Tfr Trl Trc Trr Tsl Tsr Bfl Bfc Bfr).
- Some arrangements renamed:
- - "7.1 Music (Dolby)"=>"7.1"
- - "7.0 Music (Dolby)"=>"7.0"
- - "7.1 Cine (SDDS)"=>"7.1 SDDS"
- - "7.0 Cine (SDDS)"=>"7.0 SDDS"
+ - "7.1 Music (Dolby)"=>"7.1".
+ - "7.0 Music (Dolby)"=>"7.0".
+ - "7.1 Cine (SDDS)"=>"7.1 SDDS".
+ - "7.0 Cine (SDDS)"=>"7.0 SDDS".
+
- cmake:
- - Code styling changed
- - Each library defined which is the minimal requirementfor C++ version (11 for pluginterfaces) by usingtarget_compile_features
- - New flag: SMTG_CXX_STANDARD in order to overwrite thedefault used version of C++ (11)
- - New flag: SMTG_CUSTOM_BINARY_LOCATION: Customize outputlocation for binaries
- - New flag: SMTG_CXX_STANDARD: C++ standard version usedfor plugins: 14, 17, 20
- - New flag: SMTG_ENABLE_ADDRESS_SANITIZER: Enable AddressSanitizer
- - Add check for C11 atomic header
- - Add support for enabling Sanitizer
- - Add new file SMTG_SetDebugExecutable.cmake: allows topreconfigure the debug executable to run
- - Fix LOCAL_JACK_LIB in SMTG_FindJack.cmake on Windows
- - Fix link plug-in to common location on Windows
- - Fix: Failing unit test with validator results inplug-in resources/snapshots not being copied
+ - Code styling changed.
+ - Each library defined which is the minimal requirementfor C++ version (11 for pluginterfaces) by usingtarget_compile_features.
+ - New flag: `SMTG_CXX_STANDARD` in order to overwrite thedefault used version of C++ (11).
+ - New flag: `SMTG_CUSTOM_BINARY_LOCATION`: Customize outputlocation for binaries.
+ - New flag: `SMTG_CXX_STANDARD`: C++ standard version usedfor plugins: 14, 17, 20.
+ - New flag: `SMTG_ENABLE_ADDRESS_SANITIZER` Enable AddressSanitizer.
+ - Add check for C11 atomic header.
+ - Add support for enabling Sanitizer.
+ - Add new file SMTG_SetDebugExecutable.cmake: allows topreconfigure the debug executable to run.
+ - Fix LOCAL_JACK_LIB in SMTG_FindJack.cmake on Windows.
+ - Fix link plug-in to common location on Windows.
+ - Fix: Failing unit test with validator results inplug-in resources/snapshots not being copied.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- - AAX Wrapper
- - Fix Export Symbols for AAX on macOS
- - Audio Unit v2
- - Fix AUv2 with Xcode 12
+ - **AAX Wrapper**
+ - Fix Export Symbols for AAX on macOS.
+ - **AUv2 Wrapper**:
+ - Fix AUv2 with Xcode 12.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- New VST 3 hosting example:
- [VST 3 Inspector app](../What+is+the+VST+3+SDK/Index.md): example showing how to parse the available **VST 3** plug-ins factories, using VSTGUI.
- - C++14 minimum requirements for validator, audiohost, editorhost, Inspector app
+ - C++14 minimum requirements for validator, audiohost, editorhost, Inspector app.
+
- Helpers classes:
- - New file handling module initialization: public.sdk\source\main\moduleinit.cpp, public.sdk\source\main\moduleinit.h
- - #include instead of #include
- - Fix incorrect string copy regression in HostAttributeList::getString
+ - New file handling module initialization: public.sdk\source\main\moduleinit.cpp, public.sdk\source\main\moduleinit.h.
+ - #include instead of #include .
+ - Fix incorrect string copy regression in HostAttributeList::getString.
- Fix some Validation tests: SliceProcessingTest,ValidStateTransitionTest.
- - Fix module_linux.cpp building in C++20 mode
+ - Fix module_linux.cpp building in C++20 mode.
+
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v3.1.0:
- New context menu entry for instantiated plug-in: "Export Presets Parameters as XML" which allows to load automatically VST 3 presets and export them as XML files.
+
- [VST 3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2021.03:
- - This project is now open source on
- - Universal binary for macOS (Intel/M1)
- - Add another default location to search for cmake on macOS
- - Use cmake for bundle ID setup
- - Make sure keyboard focus navigation is correct
+ - This project is now open source on .
+ - Universal binary for macOS (Intel/M1).
+ - Add another default location to search for cmake on macOS.
+ - Use cmake for bundle ID setup.
+ - Make sure keyboard focus navigation is correct.
diff --git a/src/pages/Versions/Version+3.7.3.md b/src/pages/Versions/Version+3.7.3.md
index 8affce3d..5a0df945 100644
--- a/src/pages/Versions/Version+3.7.3.md
+++ b/src/pages/Versions/Version+3.7.3.md
@@ -5,43 +5,51 @@
## Version 3.7.3 (2021/08/10)
- Interface changes:
- - update documentation of IPlugViewContentScaleSupport
+ - update documentation of IPlugViewContentScaleSupport.
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.10.1
- - different fixes
+ - different fixes.
+
- Licensing has changed to version 2.2.1! Please read the new license agreement [VST 3 Licensing Issues](../VST+3+Licensing/Index.md). (if you have already signed the version 2.0 of the license agreement you do not have to sign it again).
+
- New Flags/Enums:
- - New RestartFlags flag kKeyswitchChanged: informing that Key switches has changed (info, count)
- - New FunctionNameType for Panner: like kPanPosCenterX
+ - New RestartFlags flag kKeyswitchChanged: informing that Key switches has changed (info, count).
+ - New FunctionNameType for Panner: like kPanPosCenterX.
+
- cmake:
- Fix wrong link path on Windows arm 64
- Add -Werror=return-type to get the same error on mac as on Windows or Linux
- Fix undefined variable vst3sdk_SOURCE_DIR when using fetchcontent for the SDK
- Fix wrong symbol visibility when project created via project generator
+
- [New Tutorial for advanced techniques](../Tutorials/Advanced+VST+3+techniques.md)
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- - AAX Wrapper:
- - Refactoring of initModule/DeInitModule
- - GetParameterIndex wrong index when read-only parameters used
- - VST 2 Wrapper:
- - Fix issue calling too many InitModule
- - Refactoring of initModule/DeInitModule
- - Audio Unit v3:
- - Support AUv3 in macOS 11
- - Simplify AUv3Wrapper code
- - Fix Logic/GarageBand not showing editor on macOS 11
+ - **AAX Wrapper**:
+ - Refactoring of initModule/DeInitModule.
+ - GetParameterIndex wrong index when read-only parameters used.
+ - **VST 2 Wrapper**:
+ - Fix issue calling too many InitModule.
+ - Refactoring of initModule/DeInitModule.
+ - **AUv3 Wrapper**:
+ - Support AUv3 in macOS 11.
+ - Simplify AUv3Wrapper code.
+ - Fix Logic/GarageBand not showing editor on macOS 11.
+
- Rename folder in zip SDK: VST3_SDK => vst3sdk
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- Added checks in HostChecker plug-in:
- - Check IParameterChanges for multiple queues with same ID
- - Check IParameterChanges for multiple points at same position
- - Add restartComponent (kKeyswitchChanged) / restartComponent (kNoteExpressionChanged) / restartComponent (kParamValuesChanged)
- - Add support of ivstparameterfunctionname in Panner sample
+ - Check IParameterChanges for multiple queues with same ID.
+ - Check IParameterChanges for multiple points at same position.
+ - Add restartComponent (kKeyswitchChanged) / restartComponent (kNoteExpressionChanged) / restartComponent (kParamValuesChanged).
+ - Add support of ivstparameterfunctionname in Panner sample.
- New VST 3 plug-ins example:
- - New "AGain Sample Accurate" showing sample-accurate parameter changes processing
- - Fix editorHost when launch without arguments
- - Fix crash in VST3Inspector when no VST 3 plug-ins available
- - Fix warnings for mda plug-ins
- - Fix the build with gcc 11
+ - New "AGain Sample Accurate" showing sample-accurate parameter changes processing.
+ - Fix editorHost when launch without arguments.
+ - Fix crash in VST3Inspector when no VST 3 plug-ins available.
+ - Fix warnings for mda plug-ins.
+ - Fix the build with gcc 11.
+
- Helpers classes:
- New utility files:
- audiobuffers.h
diff --git a/src/pages/Versions/Version+3.7.4.md b/src/pages/Versions/Version+3.7.4.md
index 6620c5c6..8fbdd0be 100644
--- a/src/pages/Versions/Version+3.7.4.md
+++ b/src/pages/Versions/Version+3.7.4.md
@@ -5,36 +5,44 @@
## Version 3.7.4 (2021/12/14)
- Interface changes:
- - Add support of _M_ARM64EC on Windows
- - New defines: SMTG_CPU_ARM_64EC, SMTG_CPP14 and SMTG_CPP17
- - New [VST 3 plug-in location](../Technical+Documentation/Locations+Format/Plugin+Locations.md) user local on Windows: %LOCALAPPDATA%/Programs/Common/VST3/
- - Use SMTG_CONSTEXPR where needed
+ - Add support of _M_ARM64EC on Windows.
+ - New defines: `SMTG_CPU_ARM_64EC`, `SMTG_CPP14` and `SMTG_CPP17`.
+ - New [VST 3 plug-in location](../Technical+Documentation/Locations+Format/Plugin+Locations.md) user local on Windows: %LOCALAPPDATA%/Programs/Common/VST3/.
+ - Use `SMTG_CONSTEXPR` where needed.
+
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) 4.10.3
- - Different fixes
+ - Different fixes.
+
- Licensing has changed to version 2.2.2! Please read the new license agreement [VST 3 Licensing Issues](../VST+3+Licensing/Index.md). (if you have already signed the version 2.0 of the license agreement you do not have to sign it again).
+
- cmake:
- - **Refactoring**: rename function/macro by adding target when target is used: i.e. smtg_run_vst_validator => smtg_target_run_vst_validator
- - **Breaking Change**: change smtg_add_vst3_resource to smtg_target_add_plugin_resources allowing to add multiple resources in a call
- - **Breaking Change**: change smtg_add_vst3_snapshot to smtg_target_add_plugin_snapshots allowing to add multiple resources in a call
- - Make Universal Binary on Mac default ON when Xcode12
- - Add support of new VST 3 Location on Windows: new option SMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON
- - Fix some code Signing issue with XCode
+ - **Refactoring**: rename function/macro by adding target when target is used: i.e. smtg_run_vst_validator => smtg_target_run_vst_validator.
+ - **Breaking Change**: change smtg_add_vst3_resource to smtg_target_add_plugin_resources allowing to add multiple resources in a call.
+ - **Breaking Change**: change smtg_add_vst3_snapshot to smtg_target_add_plugin_snapshots allowing to add multiple resources in a call.
+ - Make Universal Binary on Mac default ON when Xcode12.
+ - Add support of new VST 3 Location on Windows: new option `SMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON`.
+ - Fix some code Signing issue with XCode.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- - VST 2 Wrapper:
- - Fix termination of objects might still need data destroyed in _DeinitModule()
- - Audio Unit:
- - Update AU SDK as external (version 1.1)
- - Fix offline rendering info for AUWrapper
+ - **VST 2 Wrapper**:
+ - Fix termination of objects might still need data destroyed in _DeinitModule().
+ - **Audio Unit**:
+ - Update AU SDK as external (version 1.1).
+ - Fix offline rendering info for AUWrapper.
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- - Add to validator self-tests
- - Add to validator a new function addErrorWarningTextToOutput
+ - Add to validator self-tests.
+ - Add to validator a new function addErrorWarningTextToOutput.
+
- Helpers classes:
- New file pluginterfaces/base/funknownimpl.h (C++11 required): it provides classes for working with FUnknown.
- - Add Unitests for all hosting helpers classes
- - Show example const_exp (C++17) in plug-in factory: public.sdk/source/main/pluginfactory_constexpr.h
- - Add documentation to mpeprocessor classes
+ - Add Unitests for all hosting helpers classes.
+ - Show example const_exp (C++17) in plug-in factory: public.sdk/source/main/pluginfactory_constexpr.h.
+ - Add documentation to mpeprocessor classes.
+
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v3.2.20:
- - Adapted to scan the new VST 3 plug-in location on Windows
+ - Adapted to scan the new VST 3 plug-in location on Windows.
- This is the last version supporting 32bits plug-ins on Windows. The next update will support only 64bits plug-ins.
-- [VST3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2021.12:
- - Add platform Architecture setting (cmake) in project generator on Windows
+
+- [VST 3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2021.12:
+ - Add platform Architecture setting (cmake) in project generator on Windows.
diff --git a/src/pages/Versions/Version+3.7.5.md b/src/pages/Versions/Version+3.7.5.md
index d1fddb11..efa1de7d 100644
--- a/src/pages/Versions/Version+3.7.5.md
+++ b/src/pages/Versions/Version+3.7.5.md
@@ -25,9 +25,11 @@
- ITU 3+7+0 Sound System F
- **k70_3** => L R C Ls Rs Sl Sr Tfl Tfr Trc
- **k72_3** => L R C LFE Ls Rs Sl Sr Tfl Tfr Trc LFE2
+
- Documentation
- New tutorial explaining [How to use the silence flags](../Tutorials/how+to+use+the+silence+flags.md).
- Move VST 3 documentation to md files.
+
- cmake
- Minimum cmake version is now 3.19.
- New function *smtg_target_setup_as_vst3_example*.
@@ -36,21 +38,26 @@
- use **VERSION** and **DESCRIPTION** with project() for generating automatically with cmake version file.
- Change default to ON for SMTG_PLUGIN_TARGET_USER_PROGRAM_FILES_COMMON on Windows.
- Fix https://github.com/steinbergmedia/vst3sdk/pull/91.
+
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- Audio Unit:
- Fix AUv3 validation issue (https://github.com/steinbergmedia/vst3_public_sdk/issues/39).
+
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- New VST 3 plug-ins example:
- New *multiple_programchanges* showing support of multiple program change parameters.
- Add new *Processing Load* simulation parameter in **HostChecker** which allows to create a CPU load.
- Refactoring the examples cmake for using the new versioning handling and *smtg_target_setup_as_vst3_example*.
+
- [Validator](../What+is+the+VST+3+SDK/Index.md#validator-command-line):
- Add test for *IPluginCompatibility* interface
- Helpers classes:
- New file in *public.sdk/samples/vst-utilities* for moduleinfo support.
- New files in *public.sdk/source/vst/moduleinfo* for creating and parsing moduleinfo.
- - Fix https://github.com/steinbergmedia/vst3_public_sdk/issues/37
+ - Fix https://github.com/steinbergmedia/vst3_public_sdk/issues/37.
+
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v3.3.0:
- The 32bits version of plugintesthost is not availble anymore.
-- [VST3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2022.05:
+
+- [VS T3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2022.05:
- Adapt VST3 Inspector for Compatibility json file support.
diff --git a/src/pages/Versions/Version+3.7.6.md b/src/pages/Versions/Version+3.7.6.md
index b176f370..a34c838c 100644
--- a/src/pages/Versions/Version+3.7.6.md
+++ b/src/pages/Versions/Version+3.7.6.md
@@ -13,7 +13,7 @@ There are simple casting functions in *pluginterfaces/base/fstrdefs.h* (see **ws
- Interface changes:
- New [architecture folder for Windows Arm64EC and Arm64 Classic](../Technical+Documentation/Locations+Format/Plugin+Format.html#for-the-windows-platform)
- - New macro **SMTG_HIDDEN_SYMBOL** in *pluginterfaces/base/fplatform.h*
+ - New macro `SMTG_HIDDEN_SYMBOL` in *pluginterfaces/base/fplatform.h*
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) Bugfix update [4.11.1](https://github.com/steinbergmedia/vstgui/releases/tag/vstgui4_11_1)
@@ -21,8 +21,10 @@ There are simple casting functions in *pluginterfaces/base/fstrdefs.h* (see **ws
- Fix ITU 3+7+0 Sound System F
- **k70_3** => L R C Ls Rs Sl Sr Tfl Tfr Trc
- **k72_3** => L R C LFE Ls Rs Sl Sr Tfl Tfr Trc LFE2
+
- Documentation
- - New tutorial: [Guideline for replacing a VST 2 plug-in by a VST 3 plug-in](../Tutorials/Guideline+for+VST3+replacing+VST2.md)
+ - New tutorial: [Guideline for replacing a VST 2 plug-in by a VST 3 plug-in](../Tutorials/Guideline+for+VST3+replacing+VST2.md).
+
- cmake
- New file *SMTG_AddVST3AuV2.cmake*:
- Add AUv2 target for a **VST 3** plug-in
@@ -33,22 +35,22 @@ There are simple casting functions in *pluginterfaces/base/fstrdefs.h* (see **ws
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- Audio Unit:
- - Simplify the creation of an AUv2 wrapped plug-in by a simple cmake function (see smtg_target_add_auv2)
- - Reworked AUWrapper Objective-C code
+ - Simplify the creation of an AUv2 wrapped plug-in by a simple cmake function (see smtg_target_add_auv2).
+ - Reworked AUWrapper Objective-C code.
- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md):
- Add more structured Units and parameters to Hostchecker plug-in.
- [Validator](../What+is+the+VST+3+SDK/Index.md#validator-command-line):
- - Fix validator output on Windows, cout was not flushed in case of crash
+ - Fix validator output on Windows, cout was not flushed in case of crash.
- Helpers classes:
- - Refactoring by using IPtr in *public.sdk/source/vst/vsteditcontroller.h* and *public.sdk/source/common/pluginview.h*
- - Fix crash in module_win32.cpp when loading failed and the error code could not be printed
+ - Refactoring by using IPtr in *public.sdk/source/vst/vsteditcontroller.h* and *public.sdk/source/common/pluginview.h*.
+ - Fix crash in module_win32.cpp when loading failed and the error code could not be printed.
- Prevent the pluginfactory_constexpr on Linux to export symbols in debug mode which may be shared between modules.
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v3.3.10:
- - Support loading PACE protected plug-ins on macOS by using the required entitlement for the hardened runtime
+ - Support loading PACE protected plug-ins on macOS by using the required entitlement for the hardened runtime.
-- [VST3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2022.09:
- - Fix: Prevent crash when PATH contains empty substring [PR#3](https://github.com/steinbergmedia/vst3projectgenerator/pull/3)
+- [VST 3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2022.09:
+ - Fix: Prevent crash when PATH contains empty substring [PR#3](https://github.com/steinbergmedia/vst3projectgenerator/pull/3).
diff --git a/src/pages/Versions/Version+3.7.7.md b/src/pages/Versions/Version+3.7.7.md
index b7afe304..1addc9b5 100644
--- a/src/pages/Versions/Version+3.7.7.md
+++ b/src/pages/Versions/Version+3.7.7.md
@@ -11,8 +11,8 @@
- [VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md) update [4.12](https://github.com/steinbergmedia/vstgui/releases/tag/vstgui4_12)
- Documentation
- - New tutorial: [Creating a cmake plug-in project from scratch](../Tutorials/Creating+a+plug-in+from+scratch.md)
- - New tutorial: [Switching to another VSTGUI submodule or branch](../Tutorials/Switching+to+another-VSTGUI+submodule+or+branch.md)
+ - New tutorial: [Creating a cmake plug-in project from scratch](../Tutorials/Creating+a+plug-in+from+scratch.md).
+ - New tutorial: [Switching to another VSTGUI submodule or branch](../Tutorials/Switching+to+another-VSTGUI+submodule+or+branch.md).
- cmake
- Adapting cmake for making possible to extract an example from the SDK.
@@ -25,13 +25,14 @@
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- Audio Unit:
- - AUv3Wrapper: fix crash building parameter groups ([PR#43](https://github.com/steinbergmedia/vst3_public_sdk/pull/43)).
- - AUv3Wrapper: fix crash for empty parameter groups ([PR#44](https://github.com/steinbergmedia/vst3_public_sdk/pull/44)).
+ - **AUv3Wrapper**:
+ - fix crash building parameter groups ([PR#43](https://github.com/steinbergmedia/vst3_public_sdk/pull/43)).
+ - fix crash for empty parameter groups ([PR#44](https://github.com/steinbergmedia/vst3_public_sdk/pull/44)).
- [VST3PluginTestHost](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md) v3.4:
- **MIDI 2** support on macOS with higher resolution for *Velocity On/Off*, *Aftertouch*, *Polypressure*, *ControlChange* and *PitchBend*.
-- [VST3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2022.11:
+- [VST 3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2022.11:
- Support of multiple namespaces for generated plug-in source code (XX::YY::ZZ), request **C++17** minimum.
- Fix support of space character in paths.
\ No newline at end of file
diff --git a/src/pages/Versions/Version+3.7.8.md b/src/pages/Versions/Version+3.7.8.md
index 932d3ef5..d28767a7 100644
--- a/src/pages/Versions/Version+3.7.8.md
+++ b/src/pages/Versions/Version+3.7.8.md
@@ -19,17 +19,17 @@
- Fix "When vst3sdk is a submodule, example plugins are not built - a switch to choose would be very useful" ([Issue#94](https://github.com/steinbergmedia/vst3sdk/issues/94)).
- Fix CMake fails with bad $-escape ([Issue#100](https://github.com/steinbergmedia/vst3sdk/issues/100)).
- **Breaking Change**: options renamed to more meaningful words:
- - SMTG_ADD_VST3_HOSTING_SAMPLES => **SMTG_ENABLE_VST3_HOSTING_EXAMPLES**
- - SMTG_ADD_VST3_PLUGINS_SAMPLES => **SMTG_ENABLE_VST3_PLUGIN_EXAMPLES**
- - SMTG_ADD_VSTGUI => **SMTG_ENABLE_VSTGUI_SUPPORT**
+ - SMTG_ADD_VST3_HOSTING_SAMPLES => `SMTG_ENABLE_VST3_HOSTING_EXAMPLES`
+ - SMTG_ADD_VST3_PLUGINS_SAMPLES => `SMTG_ENABLE_VST3_PLUGIN_EXAMPLES`
+ - SMTG_ADD_VSTGUI => `SMTG_ENABLE_VSTGUI_SUPPORT`
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- Audio Unit:
- - AUv3Wrapper:
+ - **AUv3Wrapper**:
- Remove duplicate -loadAudioFile: method declaration ([PR#46](https://github.com/steinbergmedia/vst3_public_sdk/pull/46)).
- Fix iOS build errors ([PR#47](https://github.com/steinbergmedia/vst3_public_sdk/pull/46))
- Fix resets all parameter values when restartComponent (kParamTitlesChanged) is called ([Issue#45](https://github.com/steinbergmedia/vst3_public_sdk/issues/45))
- - AUv2Wrapper:
+ - **AUv2Wrapper**:
- Fix "AUv2 editor does not always work" ([Issues#108](https://github.com/steinbergmedia/vst3sdk/issues/108))
- Fix endless **SMTG_AUView setFrame** recursion call in AUv2 Wrapper
diff --git a/src/pages/Versions/Version+3.7.9.md b/src/pages/Versions/Version+3.7.9.md
index aaaf27c8..ce895f9b 100644
--- a/src/pages/Versions/Version+3.7.9.md
+++ b/src/pages/Versions/Version+3.7.9.md
@@ -27,10 +27,10 @@
- Partially fix for Windows, create destination installation folders if they don't exist [(Issue#8)](https://github.com/steinbergmedia/vst3_cmake/issues/8).
- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md):
- - AAX Wrapper ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)):
+ - **AAX Wrapper** ([VST 3 - AAX Wrapper](../What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md)):
- fix some warnings
- Audio Unit:
- - AUv3Wrapper:
+ - **AUv3Wrapper**:
- Fix iOS build errors ([PR#47](https://github.com/steinbergmedia/vst3_public_sdk/pull/47))
- Make **AUv3** follow **VST3** threading model [(PR#62)](https://github.com/steinbergmedia/vst3_public_sdk/pull/62)
- Fix "Missing field initializer" warnings in AUv3Wrapper [(Issue#55)](https://github.com/steinbergmedia/vst3_public_sdk/pull/55/commits/e2765e6d4365f1e81e719eb19e3e2a786f4281c8)
@@ -50,6 +50,6 @@
- [Validator](../What+is+the+VST+3+SDK/Index.md#validator-command-line):
- Allow **moduleinfo.json** and **IPluginCompatibility** to coexist, not seen as error but warning (not recommanded!) [(Issue#63)](https://github.com/steinbergmedia/vst3_public_sdk/issues/63).
-- [VST3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2023.09:
- - Rename SMTG_ADD_VSTGUI to **SMTG_ENABLE_VSTGUI_SUPPORT**.
+- [VST 3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md) v2023.09:
+ - Rename SMTG_ADD_VSTGUI to `SMTG_ENABLE_VSTGUI_SUPPORT`.
\ No newline at end of file
diff --git a/src/pages/What+is+VST/Use+cases.md b/src/pages/What+is+VST/Use+cases.md
index f103b222..fbc7f385 100644
--- a/src/pages/What+is+VST/Use+cases.md
+++ b/src/pages/What+is+VST/Use+cases.md
@@ -41,15 +41,16 @@ By using **VST 3 SDK** directly:
- it includes the major plug-in format wrappers: **AAX**, **AUv3**, **AU**.
- the included [Validator](../What+is+the+VST+3+SDK/Index.md#validator-command-line) allows you to check your plug-in's conformity to the **VST 3** standard.
-## Examples of VST 3 host applications (05/10/2023)
+## Examples of VST 3 host applications (19/07/2024)
| **Name** | **Companies** | **Link** |
| ----------------------- | --------------------------------- | --------------------------------------------- |
| ACID Pro | MAGIX Software GmbH | |
-| Acoustica | Acon Digital | |
+| Acoustica | Acon Digital | |
| Ardour | Ardour Team | |
+| ASAP | Ircam | |
| Audacity | Audacity Team | |
-| Audition | Adobe | |
+| Audition | Adobe | |
| Bidule | Plogue Art et Technologie, Inc. | |
| Bitwig | Bitwig GmbH | |
| Camelot | Audio Modeling | |
@@ -71,6 +72,8 @@ By using **VST 3 SDK** directly:
| Komplete Kontrol | Vienna Symphonic Library GmbH | |
| KSHMR Chain | Excite Audio | |
| Live | Ableton AG | |
+| Lumit | Lumit Audio | |
+| Luna | Universal Audio | |
| Maschine | Native Instruments | |
| Max | Cycling 74 | |
| Metro | Sagan Technology | |
@@ -78,29 +81,40 @@ By using **VST 3 SDK** directly:
| Mixcraft | Acoustica | |
| MultitrackStudio | Bremmers Audio Design | |
| Music Maker Plus | MAGIX Software GmbH | |
-| Nuendo | Steinberg Media Technologies GmbH | |
+| n-Track Studio | n-Track Software | |
+| NA Nexus Subhost | Nembrini Audio | |
+| NotBlock | Blåfot-Produktion | |
+| Nuendo | Steinberg Media Technologies GmbH | |
| Orb Composer Pro | Hexachords | |
| Overture | Sonic Scores | |
| OwlPlug | OwlPlug | |
+| Podcaster | Digital Brain Instruments | |
| Qtractor | rncbc | |
+| RapidComposer | MusicDevelopments | |
+| Re:Cycle | Digital Brain Instruments | |
| Reaper | Reaper | |
| Reason + | Reason Studios | |
-| Re:Cycle | Digital Brain Instruments | |
| RipX DeepAudio | Hit’n’Mix Ltd | |
+| Samplab | Samplab | |
| Samplitude | MAGIX Software GmbH | |
| Serato Studio 2 | Serato | |
| Sonar | Bandlab/Cakewalk | |
| Sound Forge Audio Studio| MAGIX Software GmbH | |
+| Sound it! 8 Basic | INTERNET Co. | |
| Sound Trajectory 2 | TripinLab | |
+| SoundBridge | SoundBridge | |
| Soundop | Ivosight Software Inc. | |
| SpectraLayers | Steinberg Media Technologies GmbH | |
| Studio One | PreSonus Software Ltd | |
| Superplugin | DDMF | |
| TS2 | Ircam Lab | |
+| Unify | PlugInGuru | |
| Vienna MIR PRO 3D | Vienna Symphonic Library GmbH | |
-| VoxPat Pro | Digital Brain Instruments | |
+| VoxPat Pro | Digital Brain Instruments | |
+| vPlayer | Digital Brain Instruments | |
| VST Live | Steinberg Media Technologies GmbH | |
| VST Rack Pro | Yamaha Corporation | |
| Waveform | Tracktion Software Corporation | |
| Wavelab | Steinberg Media Technologies GmbH | |
+| Wusik SQ200 | Wusik | |
| Zrythm DAW | Zrythm | |
diff --git a/src/pages/What+is+the+VST+3+SDK/Index.md b/src/pages/What+is+the+VST+3+SDK/Index.md
index 517cfb08..ca2eef2d 100644
--- a/src/pages/What+is+the+VST+3+SDK/Index.md
+++ b/src/pages/What+is+the+VST+3+SDK/Index.md
@@ -36,7 +36,7 @@ The SDK includes some Plug-ins implementation examples.
## [VST 3 Plug-in Test Host](../What+is+the+VST+3+SDK/Plug-in+Test+Host.md)
-The SDK provides a test application called **VST3PluginTestHost** for Apple macOS X (x86_64/M1) and Microsoft Windows (64bits).
+The SDK provides a test application called **VST3PluginTestHost** for Apple macOS (Apple Silicon/Intel x86_64) and Microsoft Windows (x64 and Arm64EC).
## [VST 3 Project Generator](../What+is+the+VST+3+SDK/Project+Generator.md)
@@ -72,7 +72,7 @@ iOS InterApp-Audio application out of your **VST 3** plug-in
## [VST 3 Licensing](../VST+3+Licensing/Index.md)
-Please sign this **Steinberg VST 3 Plug-In SDK Licensing Agreement** if you want to develop, release or host **VST 3** plug-Ins.
+Please sign this **Steinberg VST 3 Plug-in SDK Licensing Agreement** if you want to develop, release or host **VST 3** plug-Ins.
## System requirements
diff --git a/src/pages/What+is+the+VST+3+SDK/Plug-in+Examples.md b/src/pages/What+is+the+VST+3+SDK/Plug-in+Examples.md
index d477ebb3..61bd6077 100644
--- a/src/pages/What+is+the+VST+3+SDK/Plug-in+Examples.md
+++ b/src/pages/What+is+the+VST+3+SDK/Plug-in+Examples.md
@@ -94,7 +94,7 @@ This plug-in:
- shows how to exchange data (waveform) between processor (in the realtime thread) and controller using the VST Data Exchange API: [Vst::IDataExchangeHandler](../Technical+Documentation/Data+Exchange/Index.md)
- shows how easy it is to use [**VSTGUI**](VSTGUI.md)
-
+
Check the folder *"public.sdk/samples/vst/dataexchange"* of the SDK!
diff --git a/src/pages/What+is+the+VST+3+SDK/Plug-in+Test+Host.md b/src/pages/What+is+the+VST+3+SDK/Plug-in+Test+Host.md
index 1616861b..bffc7790 100644
--- a/src/pages/What+is+the+VST+3+SDK/Plug-in+Test+Host.md
+++ b/src/pages/What+is+the+VST+3+SDK/Plug-in+Test+Host.md
@@ -14,35 +14,92 @@
## Introduction
-The SDK provides a test application called **VST3PluginTestHost** for Apple macOS X (x86_64/Apple M1) and Microsoft Windows (64bits).
+The SDK provides a test application called **VST3PluginTestHost** for Apple macOS X (Apple Silicon/Intel x86_64) and Microsoft Windows (x64 and Arm64EC).
This application allows you to load a plug-in, simulates some inputs (Audio and Event) and acts like a small **VST 3** host application based on an **ASIO** driver.
Included in this application is a test module which allows you to check your plug-in in regard to the **VST 3** standard.
-
+
Check the folder *"bin"* of the SDK!
## How to use it?
-
+### Command Line
-- **View -> Open Plug-in Information Window**: opens a window showing all registered component and controller **VST 3** plug-ins.
-- **View -> Open Plug-in Unit Tests Window**: opens a window where you can test your plug-in with a series of unit tests.
-- **View -> Open Preset Editor**: allows you to open, check and modify **VST 3** presets (adding meta attributes like in Instrument/- Style/Character)
-- **File -> Convert VST 3 Preset to VST 2 preset (fxp or fxb)**: allow to convert **VST 3** Presets to compatible **VST 2** Presets.
-- **File -> Overwrite Plug-in Name in VST 3 Presets**: allow to rename the plug-in name in a set of **VST 3** Presets.
+You could start **VST3PluginTestHost** with some options in the command line:
-
+ - Speficy a folder where the app should scan **VST 3** Plug-ins:
+ - --pluginfolder "Folder to scan for plug-ins"
+ - for examples:
+ - *VST3PluginTestHost.exe --pluginfolder "C:\Development\VST3"*
+ - Rendering *MIDI* files into audio files for the first loaded instrument (samplerate and blocksize (size of audio block in samples) are optionals; if not provided, the current settings of the ASIO is used):
+ - --audioexport "MIDI Folder location" "Audio Output Folder" \[samplerate\] \[blocksize\]
+ - for examples:
+ - *VST3PluginTestHost.exe --audioexport "C:\Content\MIDI" "C:\Content\Audio Output"*
+ - *VST3PluginTestHost.exe --audioexport "C:\Content\MIDI" "C:\Content\Audio Output" 48000 128*
-Dark Mode version
+### Menu Description
+
+#### File
+
+
+
+- **File => Load Preset...**: Load a VST 3 Preset for the first loaded plug-in (first slot).
+- **File => Save Preset...**: Save a VST 3 Preset for the first loaded plug-in.
+---
+- **File => Load MIDI File...**: Load a MIDI file which could be played by using the transport section, all loaded plug-ins will received the MIDI events. It also sends MIDI program change messages when a MIDI file is loaded.
+- **File => Unload MIDI File**: Unload the previously loaded MIDI file.
+---
+- **File => Export Audio...**: this allows to choose a folder with MIDI files, loaded each of them and export the audio renderings of the first loaded plug-in.
+- **File => Export Audio for current loaded MIDI...**: this allows to use the current loaded MIDI file for exporting the audio renderings of the first loaded plug-in.
+---
+- **File => Convert VST 3 Presets to VST 2 Presets**: this allows to convert **VST 3** Presets to compatible **VST 2** Presets (fxp or fxb).
+- **File => Overwrite Plug-in Name in VST 3 Presets...**: this allows to rename the plug-in name in a set of **VST 3** Presets.
+---
+- **File => Rescan blocklisted VST 3 Plug-in**: this allows to force a rescan of plug-ins which were put in the blocklist.
+
+#### Edit
+
+
+
+- **Edit => Key Commands...**: opens the key commands windows.
+- **Edit => Global Preferences...**: opens the global preferences windows where you could change the ASIO driver, for example.
+- **Edit => Plug-In Preferences...**: opens the plug-in preferences windows where you could change Inputs/Outputs routing, for example.
+
+#### View
+
+
+- **View => Open Plug-in Information Window**: opens a window showing all registered component and controller **VST 3** plug-ins.
+- **View => Open Plug-in Unit Tests Window**: opens a window where you can test your plug-in with a series of unit tests.
+- **View => Open Preset Editor**: allows you to open, check and modify **VST 3** presets (adding meta attributes like in Instrument/- Style/Character)
+
+#### Transport
+
+
+
+ - Typical Transport actions.
+
+#### Help
+
+
+
+- Some useful links for developing VST 3 Plug-ins.
+
+---
+
+#### Dark Mode version
+
+
+
+ - Selectable in the **Edit => Global Preferences** Windows.
## VST Player Window
### Audio Input
-In this section you can select the audio source of your plug-in for the Main Input Audio Bus and for the Aux Input Audio Bus ([Side-chain](../Technical+Documentation/Change+History/3.0.0/Multiple+Dynamic+IO.html#what-is-a-side-chain): if available) between:
+In this section you can select the audio source of your plug-in for the *Main Input Audio Bus* and for the *Aux Input Audio Bus* ([Side-chain](../Technical+Documentation/Change+History/3.0.0/Multiple+Dynamic+IO.html#what-is-a-side-chain): if available) between:
- A sine wave
- Noise
@@ -50,20 +107,27 @@ In this section you can select the audio source of your plug-in for the Main Inp
- ASIO Input (first stereo)
- An Audio File (in this case use the browser (... button) to choose the file (wave, aiff))
+
+
A Volume slider allows you to control the level of the source.
### Event Input
This section simulates note events sent to the plug-in.
+
+
- A pattern could be defined and initialized with randomized, chromatic or manual events. (for Chromatic choose the start note in the pattern and select Chromatic in the pop-up menu).
- Active check box: enable/disable the playback of this pattern.
- You can choose different loop stepping for this pattern (1, 1/2, ...1/32)
+- If you have already loaded a MIDI file, choose "No Pattern" to play this MIDI file.
### VST Rack
This section allows you to load serialized multiple plug-ins. Each plug-in will be loaded in a slot.
+
+
- To load a plug-in (Audio or Instrument) click on the associated pop-up menu and select one plug-in.
- To unload a plug-in, click on its associated X button on its slot.
@@ -72,7 +136,7 @@ For each loaded plug-in in a slot you can:
- Enable/disable the plug-in with the **On** button.
- Bypass/process the plug-in with the **Byp** button (if available as parameter).
- Enable/disable the [Side-chain](../Technical+Documentation/Change+History/3.0.0/Multiple+Dynamic+IO.html#what-is-a-side-chain) bus with the **Aux** button (available only if the plug-in has input [Side-chain](../Technical+Documentation/Change+History/3.0.0/Multiple+Dynamic+IO.html#what-is-a-side-chain)).
-- Open its editor with the **Edit** button.
+- Open its editor with the **Edit** button. A second **Edit** button allows to open a second editor (useful for checking if the used GUI Framework of the plug-in allows this!).
- Save a Preset with the **Store** button.
- Load a Preset with the **Load** button.
- Open the information page of this plug-in with the **Info** button (see below).
@@ -102,10 +166,30 @@ Right click on the opened plug-in opens a context menu which allows to trigger s
### Transport
+
+
In this section you can:
-|• set the gain of the output audio
• control the transport state (Loop/Start/Stop/Rewind)
• change the tempo and signature |  |
-| :- | - |
+ - Set the gain of the output audio
+ - Toggle time format between Time and Bars
+ - See the current time Display
+ - Control the transport state (Start/Stop/Rewind/Loop)
+ - Click Play to start playback of the MIDI file/Pattern.
+ - Click Stop to pause the MIDI file/Pattern at the current position.
+ - Click the button twice to reset the song position to the start.
+ - Activate Loop to play the entire MIDI file in a loop.
+ - See which MIDI file is currently loaded when hover over the info icon
+ - Change the song position
+ - The song position indicator shows the position of the transport cursor. Above the song position indicator, the position is displayed as a number.
+ - To move the transport cursor, drag the song position indicator to a new position.
+ - Change tempo and signature
+ - Tempo:
+ - Set this parameter to Track to follow the original tempo of the MIDI file.
+With the Adjust Tempo parameter, you can scale the playback relatively to the original tempo of the MIDI file.
+ - Set this parameter to Fixed to enter the tempo manually.
+ - Time Signature:
+ - Determines the time signature. You can enter a new time signature in fractions of beats.
+
## VST 3 Plug-ins Tests Window
@@ -134,3 +218,4 @@ In this version of this **Plug-in Test Host**, the tests are limited to the main

With this editor you can load and modify **VST 3** presets created with the **Store** button of the VST Rack by adding some meta-attributes.
+
diff --git a/src/pages/What+is+the+VST+3+SDK/Project+Generator.md b/src/pages/What+is+the+VST+3+SDK/Project+Generator.md
index 8d4200f7..139da8dc 100644
--- a/src/pages/What+is+the+VST+3+SDK/Project+Generator.md
+++ b/src/pages/What+is+the+VST+3+SDK/Project+Generator.md
@@ -150,7 +150,7 @@ Windows_x64\Resources\GenerateVST3Plugin.cmake
==================================================
Steinberg Media Technologies GmbH
- VST3 Project Generator
+ VST 3 Project Generator
==================================================
@@ -227,7 +227,7 @@ That´s it!
You can contribute to this project on !
-## VST3 Project Generator License
+## VST 3 Project Generator License
``` text
BSD style
diff --git a/src/pages/What+is+the+VST+3+SDK/Wrappers/AUv2+Wrapper.md b/src/pages/What+is+the+VST+3+SDK/Wrappers/AUv2+Wrapper.md
index 977435d5..1665636d 100644
--- a/src/pages/What+is+the+VST+3+SDK/Wrappers/AUv2+Wrapper.md
+++ b/src/pages/What+is+the+VST+3+SDK/Wrappers/AUv2+Wrapper.md
@@ -8,7 +8,7 @@
**Related pages:**
-- [Audio Unit v3 Plug-Ins | Apple Developer Documentation](https://developer.apple.com/documentation/audiotoolbox/audio_unit_v3_plug-ins?language=objc)
+- [Audio Unit v3 Plug-ins | Apple Developer Documentation](https://developer.apple.com/documentation/audiotoolbox/audio_unit_v3_plug-ins?language=objc)
---
diff --git a/src/pages/What+is+the+VST+3+SDK/Wrappers/AUv3+Wrapper.md b/src/pages/What+is+the+VST+3+SDK/Wrappers/AUv3+Wrapper.md
index 7bed72de..dab48813 100644
--- a/src/pages/What+is+the+VST+3+SDK/Wrappers/AUv3+Wrapper.md
+++ b/src/pages/What+is+the+VST+3+SDK/Wrappers/AUv3+Wrapper.md
@@ -8,7 +8,7 @@
**Related pages:**
-- [Audio Unit v3 Plug-Ins | Apple Developer Documentation](https://developer.apple.com/documentation/audiotoolbox/audio_unit_v3_plug-ins?language=objc)
+- [Audio Unit v3 Plug-ins | Apple Developer Documentation](https://developer.apple.com/documentation/audiotoolbox/audio_unit_v3_plug-ins?language=objc)
---
diff --git a/src/resources/VST3_License_Agreement.pdf b/src/resources/VST3_License_Agreement.pdf
index ec7da498..af7d0246 100644
Binary files a/src/resources/VST3_License_Agreement.pdf and b/src/resources/VST3_License_Agreement.pdf differ
diff --git a/src/resources/what_is_15.jpg b/src/resources/what_is_15.jpg
deleted file mode 100644
index adf20354..00000000
Binary files a/src/resources/what_is_15.jpg and /dev/null differ
diff --git a/src/resources/what_is_15.png b/src/resources/what_is_15.png
new file mode 100644
index 00000000..aab9249c
Binary files /dev/null and b/src/resources/what_is_15.png differ
diff --git a/src/resources/what_is_16.jpg b/src/resources/what_is_16.jpg
deleted file mode 100644
index df70078f..00000000
Binary files a/src/resources/what_is_16.jpg and /dev/null differ
diff --git a/src/resources/what_is_16.png b/src/resources/what_is_16.png
new file mode 100644
index 00000000..d1d9e95b
Binary files /dev/null and b/src/resources/what_is_16.png differ
diff --git a/src/resources/what_is_21.jpg b/src/resources/what_is_21.jpg
deleted file mode 100644
index ff4ff372..00000000
Binary files a/src/resources/what_is_21.jpg and /dev/null differ
diff --git a/src/resources/what_is_21.png b/src/resources/what_is_21.png
new file mode 100644
index 00000000..585cf009
Binary files /dev/null and b/src/resources/what_is_21.png differ
diff --git a/src/resources/what_is_38.jpg b/src/resources/what_is_38.jpg
deleted file mode 100644
index 2c3914a6..00000000
Binary files a/src/resources/what_is_38.jpg and /dev/null differ
diff --git a/src/resources/what_is_38.png b/src/resources/what_is_38.png
new file mode 100644
index 00000000..4c1e6ab3
Binary files /dev/null and b/src/resources/what_is_38.png differ
diff --git a/src/resources/what_is_39.png b/src/resources/what_is_39.png
new file mode 100644
index 00000000..2831267f
Binary files /dev/null and b/src/resources/what_is_39.png differ
diff --git a/src/resources/what_is_40.png b/src/resources/what_is_40.png
new file mode 100644
index 00000000..4231b52b
Binary files /dev/null and b/src/resources/what_is_40.png differ
diff --git a/src/resources/what_is_41.png b/src/resources/what_is_41.png
new file mode 100644
index 00000000..2c425f55
Binary files /dev/null and b/src/resources/what_is_41.png differ
diff --git a/src/resources/what_is_42.png b/src/resources/what_is_42.png
new file mode 100644
index 00000000..dc3304aa
Binary files /dev/null and b/src/resources/what_is_42.png differ
diff --git a/src/resources/what_is_43.png b/src/resources/what_is_43.png
new file mode 100644
index 00000000..8bfa5d11
Binary files /dev/null and b/src/resources/what_is_43.png differ
diff --git a/src/resources/what_is_44.png b/src/resources/what_is_44.png
new file mode 100644
index 00000000..ccac3281
Binary files /dev/null and b/src/resources/what_is_44.png differ
diff --git a/src/resources/what_is_45.png b/src/resources/what_is_45.png
new file mode 100644
index 00000000..53c71209
Binary files /dev/null and b/src/resources/what_is_45.png differ
diff --git a/src/resources/what_is_46.png b/src/resources/what_is_46.png
new file mode 100644
index 00000000..af5ab387
Binary files /dev/null and b/src/resources/what_is_46.png differ