diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 6c7f49de..a2042a13 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -15,8 +15,7 @@ - [AudioHost Application](pages/What+is+the+VST+3+SDK/AudioHost.md) - [EditorHost Application](pages/What+is+the+VST+3+SDK/EditorHost.md) - [VST 3 Inspector Application](pages/What+is+the+VST+3+SDK/VST3Inspector.md) - - [AAX, AUv3, AU and VST 2 Wrappers](pages/What+is+the+VST+3+SDK/Wrappers/Index.md) - - [VST 2.x Wrapper](pages/What+is+the+VST+3+SDK/Wrappers/VST+2+Wrapper.md) + - [AAX, AUv3 and AU Wrappers](pages/What+is+the+VST+3+SDK/Wrappers/Index.md) - [AAX Wrapper](pages/What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md) - [AudioUnit v3 Wrapper](pages/What+is+the+VST+3+SDK/Wrappers/AUv3+Wrapper.md) - [AudioUnit v2 Wrapper](pages/What+is+the+VST+3+SDK/Wrappers/AUv2+Wrapper.md) @@ -114,10 +113,12 @@ - [\[3.7.5\] Module Info and Plug-in Compatibility](pages/Technical+Documentation/Change+History/3.7.5/ModuleInfo.md) - [\[3.7.9\] Get Current SystemTime](pages/Technical+Documentation/Change+History/3.7.9/IComponentHandlerSystemTime.md) - [\[3.7.9\] Data Transfert Between Processor/Controller](pages/Technical+Documentation/Change+History/3.7.9/IDataExchangeHandler.md) + - [\[3.7.11\] Remap Parameter ID](pages/Technical+Documentation/Change+History/3.7.11/IRemapParamID.md) # Additional Resources - [Change History](pages/Versions/Index.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) - [Version 3.7.8 (2023/05/15)](pages/Versions/Version+3.7.8.md) diff --git a/src/pages/FAQ/Licensing.md b/src/pages/FAQ/Licensing.md index 3b075016..cc0a8248 100644 --- a/src/pages/FAQ/Licensing.md +++ b/src/pages/FAQ/Licensing.md @@ -6,33 +6,33 @@ --- -## Q: I would like to share the source code of my VST 3 plug-in/host on GitHub or other such platform. +## Q: I would like to share the source code of my VST 3 plug-in/host on GitHub or a similar platform. -- You can choose the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) license and feel free to share your plug-ins/host's source code including or referencing the **VST 3 SDK**'s sources on GitHub. -- You are allowed to provide a binary form of your plug-ins/host too, provided that you provide its source code as [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) too. +- You can choose the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) license. Feel free to share your plug-ins/host's source code including or referencing the **VST 3 SDK**'s sources on GitHub. +- You are allowed to provide a binary form of your plug-ins/host too, provided that you provide its source code as [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) as well. - Note that you have to follow the [Steinberg VST usage guidelines](../VST+3+Licensing/Usage+guidelines.md). --- ## Q: I would like to distribute my VST 3 plug-in/host as freeware/shareware in binary form only. -- You can distribute your **VST 3** plug-in/host in a binary form. This always requires that you to choose the "Proprietary Steinberg VST 3" license. -- Even though you distribute your **VST 3** plug-in/host as freeware/shareware you need to adhere to the requirements of the "Proprietary Steinberg VST 3" license. +- You can distribute your **VST 3** plug-in/host in a binary form. This always requires you to choose the "**Proprietary Steinberg VST 3**" license. +- Even though you distribute your **VST 3** plug-in/host as freeware/shareware you need to adhere to the requirements of the "**Proprietary Steinberg VST 3**" license. - Download the [license agreement](../VST+3+Licensing/What+are+the+licensing+options.md) (it is part of the [SDK](../Getting+Started/Links.md) too), sign it and return it to Steinberg. --- ## Q: I would like to sell my VST 3 plug-in/host in binary form only. -If you work for-profit and distribute your **VST 3** plug-in/host in binary form, you need to choose the "Proprietary Steinberg VST 3" license. +If you work for-profit and distribute your **VST 3** plug-in/host in binary form, you need to choose the "**Proprietary Steinberg VST 3**" license. Download the [license agreement](../VST+3+Licensing/What+are+the+licensing+options.md) (it is part of the [SDK](../Getting+Started/Links.md) too), sign it and return it to Steinberg. --- ## Q: I would like to adapt the VST 3 SDK's sources to my VST 3 plug-in/host's needs. -You can adapt and modify the **VST 3 SDK**'s source for your needs, but if you want to distribute these sources under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) you have to distribute your **VST 3** plug-in/host's sources under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) too. -It is allowed to modify the **VST 3 SDK**'s when you distribute your **VST 3** plug-in/host in binary form and choose the "Proprietary Steinberg VST 3" license. +You can adapt and modify the **VST 3 SDK**'s source so that it suits your needs, but if you want to distribute these sources under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) you have to distribute your **VST 3** plug-in/host's sources under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) too. +It is allowed to modify the **VST 3 SDK**'s when you distribute your **VST 3** plug-in/host in binary form and choose the "**Proprietary Steinberg VST 3**" license. If you are of the opinion that we should include your changes in the SDK, please contact us (use the [sdk.steinberg.net](https://forums.steinberg.net/c/developer/103/none)). --- @@ -47,19 +47,19 @@ Yes, but you have to make sure that your **VST 3** plug-in/host sources are unde - Yes, but you have to make sure that your **VST 3** plug-in/host sources are under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) too! - Note that you have to follow the [Steinberg VST usage guidelines](../VST+3+Licensing/What+are+the+licensing+options.md). -- If you do not want to be [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html), you have to build your **VST 3** plug-in/host based on the original or any private modified version of the **VST 3 SDK** and choose the "Proprietary Steinberg VST 3" license. +- If you do not want to be licensed as [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html), you have to build your **VST 3** plug-in/host based on the original or any private modified version of the **VST 3 SDK** and choose the "**Proprietary Steinberg VST 3**" license. --- -## Q: I would like to sell my VST 3 plug-in/host in binary form which is based on a 3rd party SDK like JUCE. +## Q: I would like to sell my VST 3 plug-in/host in binary form, which is based on a 3rd party SDK like JUCE. -- If you work for-profit and distribute your plug-in/host in binary form, you need to choose the "Proprietary Steinberg VST 3" license. +- If you work for-profit and distribute your plug-in/host in binary form, you need to choose the "**Proprietary Steinberg VST 3**" license. - Download the [license agreement](../VST+3+Licensing/What+are+the+licensing+options.md) (it is part of the [SDK](../Getting+Started/Links.md) too), sign it and return it to Steinberg. - Note that you have to follow the [Steinberg VST usage guidelines](../VST+3+Licensing/What+are+the+licensing+options.md). --- -## Q: I would like to distribute my VST 3 plug-in/host in binary form which is based on a 3rd party SDK like JUCE and used its [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) license. +## Q: I would like to distribute my VST 3 plug-in/host in binary form, which is based on a 3rd party SDK like JUCE and used its [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) license. - Yes, but you have to make sure that your **VST 3** plug-in/host sources are under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) too! - Note that you have to follow the [Steinberg VST usage guidelines](../VST+3+Licensing/What+are+the+licensing+options.md). diff --git a/src/pages/Getting+Started/Links.md b/src/pages/Getting+Started/Links.md index 4702187f..7d996699 100644 --- a/src/pages/Getting+Started/Links.md +++ b/src/pages/Getting+Started/Links.md @@ -22,7 +22,7 @@ You have 2 possibilities for getting the **VST 3 SDK:** | :- | :-: | :-: | | [VST 3 API](../Technical+Documentation/API+Documentation/Index.md) | ✔️ | ✔️ | | [Helpers classes](../What+is+the+VST+3+SDK/Index.md) | ✔️ | ✔️ | -| [AAX, AUv3, AU and VST 2 wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md) | ✔️ | ✔️ | +| [AAX, AUv3 and AU wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md) | ✔️ | ✔️ | | [iOS Inter-App Audio support](../What+is+the+VST+3+SDK/iOS+Inter-App+Audio+support.md) | ✔️ | ✔️ | | [VST 3 Plug-ins Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md) | ✔️ | ✔️ | | [Validator command line](../What+is+the+VST+3+SDK/Index.md#validator-command-line) | ✔️ | ✔️ | diff --git a/src/pages/Technical+Documentation/Change+History/3.7.11/IRemapParamID.md b/src/pages/Technical+Documentation/Change+History/3.7.11/IRemapParamID.md new file mode 100644 index 00000000..182e0524 --- /dev/null +++ b/src/pages/Technical+Documentation/Change+History/3.7.11/IRemapParamID.md @@ -0,0 +1,116 @@ +>/ [VST Home](../../../) / [Technical Documentation](../../Index.md) +> +># \[3.7.11\] Remap Paramater ID + +**On this page:** + +[[_TOC_]] + +**Related pages:** + +- [Moduleinfo](../../../Technical+Documentation/VST+Module+Architecture/ModuleInfo-JSON.md) +- [Compatibility with VST 2.x or VST 1](../../../FAQ/Compatibility+with+VST+2.x+or+VST+1.md) + +--- + +## Introduction + +When a VST 3 plug-in intends to replace another one, whether it's an older version or a VST 2 version, it may be necessary to inform the host about parameter remapping. The **IRemapParamID** new plug-in interface facilitates such remapping. + +There is two main use cases when a plug-in requires such remapping: +- When a VST 3 plug-in replaces another plug-in (whether VST 2 or a previously released VST 3 version) with a different UID. In this scenario, this new VST 3 plug-in should utilize the [Moduleinfo](../../../Technical+Documentation/VST+Module+Architecture/ModuleInfo-JSON.md) to indicate that it replaces another plug-in. Certain parameters from the older plug-in may be remapped to dedicated parameters of the new plug-in to enable the host resynchronize any references to older parameters (such as in automation or remote control). +For example, VST 2 parameters are identified using indices, while VST 3 parameters utilize ParamIDs. With this new interface, hosts can remap the older indices to the new associated ParamIDs if there are not the same. + +- When a VST 3 plug-in is updated to a new version wherein some parameters have changed their ParamIDs. Upon loading a project, the plug-in detects that the project was created with an older version and notifies the host (**kParamIDMappingChanged**) that the **IRemapParamID** interface must be used for resynchronize certain parameters (if the host already has references to plug-in parameters, such as in automation). + +## IRemapParamID + +The Plug-in has to implement this interface **IRemapParamID** in its *EditController*. The retrieved paramID should match the one it replaces, maintaining the same behavior during automation playback. + +- \[plug imp\] +- \[released: 3.7.11\] + +## RestartFlags: kParamIDMappingChanged + +In the second use case defined above, upon loading its state, the plug-in informs the host of parameter ID changes using the **kParamIDMappingChanged** flag within the *IComponentHandler::restartComponent* function. This notification should be triggered by the *EditController* whithin the **setComponentState** or **setState** methods (during project loading). Subsequently, the host can remap any utilized parameters, such as automation, by utilizing the **IRemapParamID** interface. + +- \[plug imp\] +- \[released: 3.7.11\] + +## Example + +**In controller.h**: + +``` c++ +//------------------------------------------------------------------------ +class TestRemapParamIDController : public EditController, public IRemapParamID +{ +public: + //... + //--- from IRemapParamID --------------------------------------------- + tresult PLUGIN_API getCompatibleParamID (const TUID pluginToReplaceUID /*in*/, + Vst::ParamID oldParamID /*in*/, + Vst::ParamID& newParamID /*out*/) override; + + //--- from EditController -------------------------------------------- + tresult PLUGIN_API setComponentState (IBStream* state) override; + + //---Interface--------- + DEFINE_INTERFACES + DEF_INTERFACE (IRemapParamID) + END_DEFINE_INTERFACES (EditController) + DELEGATE_REFCOUNT (EditController) + //... +}; +``` + +**In controller.cpp**: + +``` c++ +//------------------------------------------------------------------------ +tresult PLUGIN_API TestRemapParamIDController::getCompatibleParamID (const TUID pluginToReplaceUID, + Vst::ParamID oldParamID, + Vst::ParamID& newParamID) +{ + //--- We want to replace the AGain plug-in------- + //--- check if the host is asking for remapping parameter of the AGain plug-in + static const FUID AGainProcessorUID (0x84E8DE5F, 0x92554F53, 0x96FAE413, 0x3C935A18); + FUID uidToCheck (FUID::fromTUID (pluginToReplaceUID)); + if (AGainProcessorUID != uidToCheck) + return kResultFalse; + + //--- host wants to remap from AGain------------ + newParamID = -1; + switch (oldParamID) + { + //--- map the kGainId (0) to our param kMyGainParamTag + case 0: + { + newParamID = kMyGainParamTag; + break; + } + } + //--- return kResultTrue if the mapping happens------------ + return (newParamID == -1) ? kResultFalse : kResultTrue; +} + +//------------------------------------------------------------------------ +tresult PLUGIN_API TestRemapParamIDController::setComponentState (IBStream* state) +{ + //... + IBStreamer streamer (state, kLittleEndian); + + // Read the state + + bool remapNeeded = false; + // here if we decode that the state was from an older plug-in + //... + + // then restartComponent + if (remapNeeded) + componentHandler->restartComponent (kParamIDMappingChanged); + + return kResultOk; +} + +``` diff --git a/src/pages/Technical+Documentation/Change+History/Index.md b/src/pages/Technical+Documentation/Change+History/Index.md index fad0ccb6..0278d1cf 100644 --- a/src/pages/Technical+Documentation/Change+History/Index.md +++ b/src/pages/Technical+Documentation/Change+History/Index.md @@ -35,4 +35,5 @@ - [\[3.7.5\] Module Info and Plug-in Compatibility](../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/Index.md b/src/pages/Technical+Documentation/Index.md index 718bbab8..acde9f05 100644 --- a/src/pages/Technical+Documentation/Index.md +++ b/src/pages/Technical+Documentation/Index.md @@ -215,7 +215,7 @@ This interface allows the host to get a parameter associated to a specific meani ## [\[3.7.0\] Progress Display](Change+History/3.7.0/IProgress.md) -Allows the plug-in to ask the host to create a progress for specific tasks which take some time. +This interface allows the plug-in to ask the host to create a progress for specific tasks which take some time. ## [\[3.7.0\] Process Context Requirements](Change+History/3.7.0/IProcessContextRequirements.md) @@ -227,8 +227,12 @@ The [moduleinfo.json](VST+Module+Architecture/ModuleInfo-JSON.md) describes the ## [\[3.7.9\] Get Current SystemTime](Change+History/3.7.9/IComponentHandlerSystemTime.md) -Allows a plug-in to ask the host for the current system time. +This interface allows a plug-in to ask the host for the current system time. ## [\[3.7.9\] Data Transfert Between Processor/Controller](Change+History/3.7.9/IDataExchangeHandler.md) These interfaces allow you to send data with a direct and thread-safe connection from the realtime audio context of the audio processor to the non-realtime audio context of the edit controller. + +## [\[3.7.11\] Remap Parameter ID](Change+History/3.7.11/IRemapParamID.md) + +This interface allows the plug-in to ask the host to remap some parameter ID if needed. 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 e3e999ad..bd3f0f3b 100644 --- a/src/pages/Tutorials/Using+cmake+for+building+plug-ins.md +++ b/src/pages/Tutorials/Using+cmake+for+building+plug-ins.md @@ -115,7 +115,6 @@ cmake -DCMAKE_C_COMPILER=/usr/bin/gcc-DCMAKE_CXX_COMPILER=/usr/bin/g++ - **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_CREATE_VST2_AGAIN_SAMPLE_VERSION**: Allows you to create the **VST 2** version of the Sample Plug-in AGain, be sure that you have copied the **VST 2** interfaces into the folder VST_SDK/VST3_SDK/pluginterfaces/vst2.x (default OFF) - **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 diff --git a/src/pages/VST+3+Licensing/What+are+the+licensing+options.md b/src/pages/VST+3+Licensing/What+are+the+licensing+options.md index 49a8c115..67de2eaf 100644 --- a/src/pages/VST+3+Licensing/What+are+the+licensing+options.md +++ b/src/pages/VST+3+Licensing/What+are+the+licensing+options.md @@ -18,11 +18,11 @@ You can choose between the [Proprietary Steinberg VST 3](#proprietary-steinberg- ## Proprietary Steinberg VST 3 license -The "***Proprietary Steinberg VST 3***" license allows you to distribute your **VST 3** plug-in/host in a binary form. However, please note the following requirements: +The "**Proprietary Steinberg VST 3**" license allows you to distribute your **VST 3** plug-in/host in a binary form. However, please note the following requirements: - You need written permission from **Steinberg Media Technologies GmbH** in order to distribute your **VST 3** plug-in/host (Steinberg will send you the countersigned License agreement included in the SDK that you signed and sent to us). - You need to mention **Steinberg Media Technologies GmbH** in the about box and/or documentation of your **VST 3** plug-in/host and follow the [Steinberg VST usage guidelines](Usage+guidelines.md). -For more details please read the "***Proprietary Steinberg VST 3***" license agreement. If you accept it, please enter all required information, sign it and send it back to us, either via land mail (to the [Steinberg address](https://o.steinberg.net/en/extras/about.html) mentioned in the license), or via e-mail to [reception@steinberg.de](mailto:reception@steinberg.de) or via fax (+49 (0)40 210 35-300). We will countersign the license agreement and send it back to you. +For more details please read the "**Proprietary Steinberg VST 3**" license agreement. If you accept it, please enter all required information, sign it and send it back to us, either via land mail (to the [Steinberg address](https://o.steinberg.net/en/extras/about.html) mentioned in the license), or via e-mail to [reception@steinberg.de](mailto:reception@steinberg.de) or via fax (+49 (0)40 210 35-300). We will countersign the license agreement and send it back to you. >ⓘ **As PDF**\ > [The License agreement](../../resources/VST3_License_Agreement.pdf) is part of the VST SDK package, too. @@ -41,7 +41,7 @@ For more information about [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) ``` //---------------------------------------------------------------------------- // LICENSE -// (c) 2022, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved //---------------------------------------------------------------------------- This license applies only to files referencing this license, for other files of the Software Development Kit therespective embedded license text diff --git a/src/pages/VST+3+Licensing/Which+files+fall+under+which+license.md b/src/pages/VST+3+Licensing/Which+files+fall+under+which+license.md index 29f26521..b68b8cbe 100644 --- a/src/pages/VST+3+Licensing/Which+files+fall+under+which+license.md +++ b/src/pages/VST+3+Licensing/Which+files+fall+under+which+license.md @@ -31,16 +31,15 @@ Each of these files includes this text: - for all other files of the **VST 3 SDK**, the respective embedded license text is applicable, for example: - all **VSTGUI** files fall under a **BSD style** license - all **Helper files** (included in base and public.sdk folders) except VST 2 files fall under a **BSD style** license - - all **VST 2 files** (included in pluginterfaces and public.sdk folders) fall under the "**Proprietary Steinberg VST 2**" license - all **mda-vst3 examples** (*public.sdk/samples/mda-vst3 folder*) fall under a **BSD style** license: Copyright (c) 2008 Paul Kellett ## What about VST 2? -The "Proprietary Steinberg VST 2" license, which is the **VST 2** license agreement, allows you to distribute your **VST 2** plug-in/host in a binary form. However, please note the following requirements: +The "**Proprietary Steinberg VST 2**" license, which is the **VST 2** license agreement, allows you to distribute your **VST 2** plug-in/host in a binary form. However, please note the following requirements: - You need written permission from Steinberg Media Technologies GmbH in order to distribute your **VST 2** plug-in/host (which had to be done before October 2018). - You need to mention **Steinberg Media Technologies GmbH** in the about box and/or documentation of your **VST 2** plug-in/host and follow the [Steinberg VST usage guidelines](Usage+guidelines.md). -- Note that the "Proprietary Steinberg VST 3" license does not include the "Proprietary Steinberg VST 2" license, you have to sign it separately! It was available in the **VST 2 SDK** and in the **VST 3 SDK** old version. +- Note that the "**Proprietary Steinberg VST 3**" license does not include the "**Proprietary Steinberg VST 2**" license, you have to sign it separately! It was available in the **VST 2 SDK** and in the **VST 3 SDK** old version. - Note that from the first of October 2018, Steinberg does **not accept any more submissions of license agreement for VST 2** plug-in/host! This means: ->If you do not have a license agreement signed with Steinberg before October 2018, you are not allowed to distribute **VST 2** plug-ins or **VST 2** hosts! +>If you do not have a license agreement signed with Steinberg before **October 2018**, you are not allowed to distribute **VST 2** plug-ins or **VST 2** hosts! diff --git a/src/pages/Versions/Index.md b/src/pages/Versions/Index.md index c04b2bea..d385af66 100644 --- a/src/pages/Versions/Index.md +++ b/src/pages/Versions/Index.md @@ -6,6 +6,7 @@ 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.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.7.11.md b/src/pages/Versions/Version+3.7.11.md new file mode 100644 index 00000000..130e2935 --- /dev/null +++ b/src/pages/Versions/Version+3.7.11.md @@ -0,0 +1,24 @@ +>/ [VST Home](../) / [Change History](./Index.md) +> +># Version 3.7.11 (2024/04/22) + +## Version 3.7.11 (2024/04/22) + +- Interface changes: + - New [Vst::IRemapParamID](../Technical+Documentation/Change+History/3.7.11/IRemapParamID.md): allows the plug-in to ask the host to remap some parameter ID if needed. + +- New Flags/Enums: + - New RestartFlags: [kParamIDMappingChanged](../Technical+Documentation/Change+History/3.7.11/IRemapParamID.md). + +- Documentation + - new doc for [Vst::IRemapParamID](../Technical+Documentation/Change+History/3.7.11/IRemapParamID.md). + +- cmake + - references to **VST 2** are removed from the SDK. + +- [Plug-in Wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md): + - **VST 2** Wrapper is removed from the SDK. + +- [Examples](../What+is+the+VST+3+SDK/Plug-in+Examples.md): + - New VST 3 plug-in example: + - New [Test Remap ParamID](../What+is+the+VST+3+SDK/Plug-in+Examples.md#test-remap-paramid) showing how a VST 3 plug-in could replace an another VST 3 plug-in (in this case AGain) and remap the parameters ID. diff --git a/src/pages/What+is+VST/Use+cases.md b/src/pages/What+is+VST/Use+cases.md index 5e6cca9f..f103b222 100644 --- a/src/pages/What+is+VST/Use+cases.md +++ b/src/pages/What+is+VST/Use+cases.md @@ -37,9 +37,9 @@ By using **VST 3 SDK** directly: - loading differentially a preset or a project - [note expression](../Technical+Documentation/Change+History/3.5.0/INoteExpressionController.md) - see [other benefits of VST 3](../Main+benefits+of+VST+3/Index.md) -- you get optimal integration of the **[VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md)** tool with **VST 3** -- it includes the major plug-in format wrappers: **AAX**, **AUv3**, **AU**, **VST 2** (deprecated) -- 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 +- you get optimal integration of the **[VSTGUI](../What+is+the+VST+3+SDK/VSTGUI.md)** tool with **VST 3**. +- 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) 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 97f6eda4..517cfb08 100644 --- a/src/pages/What+is+the+VST+3+SDK/Index.md +++ b/src/pages/What+is+the+VST+3+SDK/Index.md @@ -62,7 +62,7 @@ Simple cross-platform (Win/macOS/Linux) host application, built with VSTGUI, whi This is a user interface toolkit mainly for audio plug-ins (VST, AudioUnit, etc). Based on the XML definition of the plug-in UI, **VSTGUI** includes an embedded editor (UIDescription Editor) which allows the developer to create a plug-in UI just by drag & drop of the UI element. -## [AAX, AUv3, AU and VST 2 wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md) +## [AAX, AUv3 and AU wrappers](../What+is+the+VST+3+SDK/Wrappers/Index.md) These wrappers allow you to create versions of your **VST 3** plug-in in other plug-in formats with minimum effort. 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 b4cd5681..d477ebb3 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 @@ -9,7 +9,7 @@ **Related pages:** - [VST 3 Plug-in Test Host](Plug-in+Test+Host.md) -- [AAX, AUv3, AU and VST 2 Wrappers](Wrappers/Index.md) +- [AAX, AUv3 and AU Wrappers](Wrappers/Index.md) - [Building the examples included in the SDK on Windows](../Tutorials/Building+the+examples/Building+the+examples+included+in+the+SDK+Windows.md) - [Building the examples included in the SDK on macOS](../Tutorials/Building+the+examples/Building+the+examples+included+in+the+SDK+macOS.md) - [Building the examples included in the SDK on Linux](../Tutorials/Building+the+examples/Building+the+examples+included+in+the+SDK+Linux.md) @@ -17,7 +17,7 @@ ## Introduction -The SDK includes some Plug-ins implementation examples. The Legendary **AGain** and **ADelay**, thanks Paul Kellet the Open-source **mda** Plug-ins, a basic "Note Expression Synth" supporting "**Note Expression Event**", an example of **pitchnames** support Plug-in, a **VST 3 Host Checker** which checks if a host is **VST 3** compliant and more... +The SDK includes some Plug-ins implementation examples. The Legendary **AGain** and **ADelay**, thanks Paul Kellet the Open-source **mda** Plug-ins, a basic **Note Expression Synth** supporting "**Note Expression Event**", an example of **PitchNames** support Plug-in, a **VST 3 Host Checker** which checks if a host is **VST 3** compliant and more... >![what_if_2](../../resources/what_is_2.jpg) > @@ -76,7 +76,7 @@ Simple plug-in showing how to achieve sample-accurate processing. Based Check the folder *"public.sdk/samples/vst/again_sampleaccurate"* of the SDK! -## TestChannelContext +## Test Channel Context Very simple plug-in: @@ -87,7 +87,7 @@ Very simple plug-in: Check the folder *"public.sdk/samples/vst/channelcontext"* of the SDK! -## DataExchange +## Data Exchange This plug-in: @@ -98,7 +98,7 @@ This plug-in: Check the folder *"public.sdk/samples/vst/dataexchange"* of the SDK! -## HostChecker +## VST3 Host Checker - Instrument, Panner and Fx plug-in checking the **VST 3** support of a host - It uses [**VSTGUI**](VSTGUI.md) @@ -108,7 +108,7 @@ Check the folder *"public.sdk/samples/vst/dataexchange"* of the SDK! Check the folder *"public.sdk/samples/vst/hostchecker"* of the SDK! -## TestLegacyMIDICCOut +## Test Legacy MIDI CC Out Very simple plug-in: @@ -227,6 +227,7 @@ Classes: ## Test Prefetchable Support Very simple plug-in: + - showing how to use the [Steinberg::Vst::IPrefetchableSupport](../Technical+Documentation/Change+History/3.6.5/IPrefetchableSupport.md) interface - using a generic UI @@ -234,21 +235,29 @@ Very simple plug-in: Check the folder *"public.sdk/samples/vst/prefetchablesupport"* of the SDK! -## Test Multiple Program Changes +## Test Program Change Very simple plug-in: -- showing how to support multiple ProgramChange parameters: 16 slots with one associated program change parameter and a program list for each slot. +- showing how to support Program List - using a generic UI -## Test Program Change +![what_if_14](../../resources/what_is_14.jpg) + +## Test Multiple Program Changes Very simple plug-in: -- showing how to support Program List +- showing how to support multiple ProgramChange parameters: 16 slots with one associated program change parameter and a program list for each slot. - using a generic UI -![what_if_14](../../resources/what_is_14.jpg) +## Test Remap ParamID + +Very simple plug-in: + +- demonstrating how a **VST 3** Plug-in could replace another one and remap parameters ID. +- it could replace the [AGain](../What+is+the+VST+3+SDK/Plug-in+Examples.md?#again) plug-in when it is not available. +- it illustrates the use of the interface [IRemapParamID](../Technical+Documentation/Change+History/3.7.11/IRemapParamID.md) (for mapping [Test Remap ParamID](../What+is+the+VST+3+SDK/Plug-in+Examples.md?#test-remap-paramid) parameters to AGain plug-in parameters) and the [module info](../Technical+Documentation/VST+Module+Architecture/ModuleInfo-JSON.md) with its compatibility field. ## Sync Delay @@ -258,7 +267,7 @@ Very simple delay plug-in: Check the folder *"public.sdk/samples/vst/syncdelay"* of the SDK! -## UTF16Name +## UTF16 Name Very simple plug-in: diff --git a/src/pages/What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md b/src/pages/What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md index a6806616..06534b26 100644 --- a/src/pages/What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md +++ b/src/pages/What+is+the+VST+3+SDK/Wrappers/AAX+Wrapper.md @@ -1,4 +1,4 @@ ->/ ... / [AAX, AUv3, AU and VST 2 Wrappers](Index.md) +>/ ... / [AAX, AUv3 and AU Wrappers](Index.md) > ># VST 3 - AAX Wrapper 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 4eedc82f..977435d5 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 @@ -1,4 +1,4 @@ ->/ ... / [AAX, AUv3, AU and VST 2 Wrappers](Index.md) +>/ ... / [AAX, AUv3 and AU Wrappers](Index.md) > ># VST 3 - AudioUnit v2 Wrapper 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 31179a2c..7bed72de 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 @@ -1,4 +1,4 @@ ->/ ... / [AAX, AUv3, AU and VST 2 Wrappers](Index.md) +>/ ... / [AAX, AUv3 and AU Wrappers](Index.md) > ># VST 3 - AudioUnit v3 Wrapper diff --git a/src/pages/What+is+the+VST+3+SDK/Wrappers/Index.md b/src/pages/What+is+the+VST+3+SDK/Wrappers/Index.md index 61a44aaa..408dd577 100644 --- a/src/pages/What+is+the+VST+3+SDK/Wrappers/Index.md +++ b/src/pages/What+is+the+VST+3+SDK/Wrappers/Index.md @@ -1,6 +1,6 @@ >/ [VST Home](../../) / [What is the VST 3 SDK?](../Index.md) > -># AAX, AUv3, AU and VST 2 Wrappers +># AAX, AUv3 and AU Wrappers **On this page:** @@ -15,12 +15,8 @@ These wrappers allow you to create versions of your **VST 3** plug-in in other plug-in formats with minimum effort: - **[AAX](http://apps.avid.com/aax-portal/)** format used by Pro Tools® - **[AUv3](https://developer.apple.com/documentation/audiotoolbox)** and **AU** (Audio Unit) on Apple platform -- **VST 2** (deprecated) -Check the folder *"public.sdk/source/vst/aaxwrapper"* of the SDK! - ->## [VST 3 - VST 2.x Wrapper](AUv2+Wrapper.md) ->Helper Class wrapping a **VST 3** plug-in to a **VST 2.4** plug-in +Check the folders *basewrapper*, *aaxwrapper*, *auv3wrapper* and *auwrapper* in the folder *"public.sdk/source/vst"* of the SDK! >## [VST 3 - AAX Wrapper](AAX+Wrapper.md) >Helper Class wrapping a **VST 3** plug-in to an **AAX** plug-in diff --git a/src/pages/What+is+the+VST+3+SDK/Wrappers/VST+2+Wrapper.md b/src/pages/What+is+the+VST+3+SDK/Wrappers/VST+2+Wrapper.md deleted file mode 100644 index a0d92ac8..00000000 --- a/src/pages/What+is+the+VST+3+SDK/Wrappers/VST+2+Wrapper.md +++ /dev/null @@ -1,30 +0,0 @@ ->/ ... / [AAX, AUv3, AU and VST 2 Wrappers](Index.md) -> -># VST 3 - VST 2.x Wrapper - -**On this page:** - -[[_TOC_]] - ---- - -## Introduction - -Helper Class wrapping a **VST 3** plug-in to a **VST 2.4** plug-in. - -The **VST 3 SDK** comes with a helper class which wraps one **VST 3** audio processor and edit controller to a **VST 2.x** plug-in. - -## How does it work? - -You just need to add public.sdk/source/vst/vst2wrapper/vst2wrapper.sdk.cpp to your project and add the following code somewhere in your sources: - -``` c++ -//----------------------------------------------------------------- -#include "public.sdk/source/vst/vst2wrapper/vst2wrapper.h" - -//----------------------------------------------------------------- -::AudioEffect* createEffectInstance (audioMasterCallback audioMaster) -{ - return Steinberg::Vst::Vst2Wrapper::create (GetPluginFactory(), kAudioProcessorCID, kVst2UniqueID, audioMaster); -} -``` diff --git a/src/resources/VST3_License_Agreement.pdf b/src/resources/VST3_License_Agreement.pdf index 3dfacdee..ec7da498 100644 Binary files a/src/resources/VST3_License_Agreement.pdf and b/src/resources/VST3_License_Agreement.pdf differ