diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/LICENSE.txt b/modules/juce_audio_processors/format_types/VST3_SDK/LICENSE.txt index c653a2ef70..9e57394dde 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/LICENSE.txt +++ b/modules/juce_audio_processors/format_types/VST3_SDK/LICENSE.txt @@ -1,6 +1,6 @@ //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- This license applies only to files referencing this license, for other files of the Software Development Kit the respective embedded license text diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/README.md b/modules/juce_audio_processors/format_types/VST3_SDK/README.md index 1bea05f545..baef9aec8b 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/README.md +++ b/modules/juce_audio_processors/format_types/VST3_SDK/README.md @@ -1,25 +1,28 @@ -# Welcome to VST SDK 3.6.12 +# Welcome to VST SDK 3.6.x ## Table Of Contents + 1. [The VST SDK package](#100) 1. [System requirements](#200) 1. [About VST Plug-ins in general](#300) 1. [About VST 3](#400) 1. [How to build VST 3](#500) -1. [License & Usage guidelines](#600) +1. [Contributing](#600) +1. [License & Usage guidelines](#700)
-## The VST SDK package contains: +## The VST SDK package contains + - The VST 3 API - VST 3 Implementation Helper Classes - AAX, AU and VST 2 wrappers - VST 3 Plug-ins Examples The full VST 3 SDK is available [here!](https://www.steinberg.net/en/company/developers.html). It contains : -- a VST 3 Plug-in Test Host Application/Validator, -- the Steinberg VST 3 Plug-In SDK Licensing Agreement that you have to sign if you want to develop or host VST 3 Plug-Ins. +- a VST 3 Plug-in Test Host Application/Validator, +- the **Steinberg VST 3 Plug-In SDK Licensing Agreement** that you have to sign if you want to develop or host VST 3 Plug-Ins.
@@ -33,7 +36,8 @@ Supported OS: - Linux (Beta version) Supported IDE: -- Visual Studio 2015/2017 + +- Visual Studio 2015/2017/2019 - minimum Xcode 7 - Qt Creator @@ -41,62 +45,79 @@ Supported IDE:
## About VST Plug-ins in general + A VST Plug-in is an audio processing component that is utilized within a host application. This host application provides the audio or/and event streams that are processed by the Plug-in's code. Generally speaking, a VST Plug-in can take a stream of audio data, apply a process to the audio, and return the result to the host application. A VST Plug-in performs its process normally using the processor of the computer. The audio stream is broken down into a series of blocks. The host supplies the blocks in sequence. The host and its current environment control the block-size. The VST Plug-in maintains the status of all its own parameters relating to the running process: The host does not maintain any information about what the Plug-in did with the last block of data it processed. From the host application's point of view, a VST Plug-in is a black box with an arbitrary number of inputs, outputs (Event (MIDI) or Audio), and associated parameters. The host needs no implicit knowledge of the Plug-in's process to be able to use it. The Plug-in process can use whatever parameters it wishes, internally to the process, but depending on the capabilities of the host, it can allow the changes to user parameters to be automated by the host. The source code of a VST Plug-in is platform independent, but the delivery system depends on the platform architecture: -- On **Windows**, a VST Plug-in is a multi-threaded DLL (Dynamic Link Library). + +- On **Windows**, a VST Plug-in is a multi-threaded DLL (Dynamic Link Library), recently packaged into a folder structur. - On **Mac OS X**, a VST Plug-in is a Mach-O Bundle - On **Linux**, a VST Plug-in is a package -To learn more about VST you can subscribe to the [VST Developer Forum](https://sdk.steinberg.net) - check the 3rd Party Developer Support section at [www.steinberg.net](http://www.steinberg.net). - +To learn more about VST you can subscribe to the [VST Developer Forum](https://sdk.steinberg.net) - check the 3rd Party Developer Support section at [www.steinberg.net](http://www.steinberg.net). + ---
## About VST 3 + VST 3 is a general rework of the long-serving VST Plug-in interface. It is not compatible with the older VST versions, but it includes some new features and possibilities. We have redesigned the API to make it not only far easier and more reliable for developers to work with, but have also provided completely new possibilities for Plug-ins. These include: -### 1. Improved Performance with the Silence Flag +### 1. Improved Performance with the Silence Flag + Processing can optionally be applied to Plug-ins only when audio signals are present on their respective inputs, so VST 3 Plug-ins can apply their processing economically and only when it is needed. -### 2. Multiple Dynamic I/Os -VST 3 Plug-ins are no longer limited to a fixed number of inputs and outputs, and their I/O configuration can dynamically adapt to the channel configuration. Side-chains are also very easily realizable. This includes the possibility to deactivate unused buses after loading and even reactivate those when needed. This cleans up the mixer and further helps to reduce CPU load. +### 2. Multiple Dynamic I/Os -### 3. Sample-accurate Automation -VST 3 also features vastly improved parameter automation with sample accuracy and support for ramped automation data, allowing completely accurate and rapid parameter automation changes. +VST 3 Plug-ins are no longer limited to a fixed number of inputs and outputs, and their I/O configuration can dynamically adapt to the channel configuration. Side-chains are also very easily realizable. This includes the possibility to deactivate unused buses after loading and even reactivate those when needed. This cleans up the mixer and further helps to reduce CPU load. -### 4. Logical Parameter Organization -The VST 3 Plug-in parameters are displayed in a tree structure. Parameters are grouped into sections which represent the structure of the Plug-in. Plug-ins can communicate their internal structure for the purpose of overview, but also for some associated functionality (eg. program-lists). +### 3. Sample-accurate Automation -### 5. Resizeable UI Editor -VST 3 defines a way to allow resizing of the Plug-in editor by a user. +VST 3 also features vastly improved parameter automation with sample accuracy and support for ramped automation data, allowing completely accurate and rapid parameter automation changes. -### 6. Mouse Over Support -The Host could ask the Plug-in which parameter is under the mouse. +### 4. Logical Parameter Organization + +The VST 3 Plug-in parameters are displayed in a tree structure. Parameters are grouped into sections which represent the structure of the Plug-in. Plug-ins can communicate their internal structure for the purpose of overview, but also for some associated functionality (eg. program-lists). + +### 5. Resizeable UI Editor + +VST 3 defines a way to allow resizing of the Plug-in editor by a user. + +### 6. Mouse Over Support + +The Host could ask the Plug-in which parameter is under the mouse. ### 7. Context Menu Support + VST 3 defines a way to allow the host to add its own entries in the Plug-in context menu of a specific parameter. ### 8. Channel Context Information + A VST 3 Plug-in could access some channel information where it is instantiated: name, color,... -### 9. Note Expression -VST 3 defines with Note Expression a new way of event controller editing. The Plug-in is able to break free from the limitations of MIDI controller events by providing access to new VST 3 controller events that circumvent the laws of MIDI and provide articulation information for each individual note (event) in a polyphonic arrangement according to its noteId. +### 9. Note Expression + +VST 3 defines with Note Expression a new way of event controller editing. The Plug-in is able to break free from the limitations of MIDI controller events by providing access to new VST 3 controller events that circumvent the laws of MIDI and provide articulation information for each individual note (event) in a polyphonic arrangement according to its noteId. ### 10. 3D Support + VST 3 supports new speaker configurations like Ambisonic, Atmos, Auro 3D or 22.2. -### 11. Factory Concept +### 11. Factory Concept + VST 3 Plug-in library could export multiple Plug-ins and in this way replaces the shell concept of VST 2 (kPlugCategShell). ### 12. Support Remote control Representation + VST 3 Plug-in can deliver a specific parameter mapping for remote controls like Nuage. ### 13. Others + While designing VST 3, we performed a careful analysis of the existing functionality of VST and rewrote the interfaces from scratch. In doing so, we focused a lot on providing clear interfaces and their documentation in order to avoid usage errors from the deepest possible layer. Some more features implemented specifically for developers include: + - More stable technical Host/Plug-in environment - Advanced technical definition of the standard - Modular approach @@ -113,34 +134,46 @@ Some more features implemented specifically for developers include: ## How to build VST3 ### Get the source code from GitHub +
git clone --recursive https://github.com/steinbergmedia/vst3sdk.git
 
### Adding VST2 version + The VST2 SDK is not part anymore of the VST3 SDK, you have to use an older version of the SDK and copy the VST2_SDK folder into the VST_SDK folder. In order to build a VST2 version of the Plug-in and a VST3 at the same time, you need to copy the VST2 folder into the VST3 folder, simply run the following commands: + - for macOS: +
 cd TheFolderWhereYouDownloadTheSDK
 ./copy_vst2_to_vst3_sdk.sh
 
+ - for Windows: +
 cd TheFolderWhereYouDownloadTheSDK
 copy_vst2_to_vst3_sdk.bat
 
### Build the examples on Linux + - Create a folder for the build and move to this folder (using cd): +
     mkdir build
     cd build
 
+ - Generate the Solution/Projects: provide the path of the Project where CMakeLists.txt is located: +
     cmake ../vst3sdk
 
+ - Now you can build the Plug-in: +
     make 
  (or alternatively for example for release)
@@ -148,19 +181,25 @@ copy_vst2_to_vst3_sdk.bat
 
### Build the examples on macOS + - Create a folder for the build and move to this folder (using cd): +
     mkdir build
     cd build
 
+ - Generate the Solution/Projects: provide the path of the Project where CMakeLists.txt is located: +
   For XCode:
     cmake -GXcode ../vst3sdk
   Without XCode (here debug variant):
     cmake -DCMAKE_BUILD_TYPE=Debug ../
 
+ - Now you can build the Plug-in (you can use XCode too): +
     xcodebuild 
  (or alternatively for example for release)
@@ -168,16 +207,22 @@ copy_vst2_to_vst3_sdk.bat
 
### Build the examples on Windows + - Create a folder for the build and move to this folder (using cd): +
     mkdir build
     cd build
 
+ - Generate the Solution/Projects: provide the path of the Project where CMakeLists.txt is located: +
     cmake.exe -G"Visual Studio 15 2017 Win64" ../vst3sdk
 
+ - Now you can build the Plug-in (you can use Visual Studio too): +
     msbuild.exe vstsdk.sln
   (or alternatively for example for release)
@@ -185,15 +230,24 @@ copy_vst2_to_vst3_sdk.bat
 
### Build using cmake-gui -* start the cmake-gui Application -* "Browse Source...": select the folder VST3_SDK -* "Browse Build...": select a folder where the outputs (projects/...) will be created. Typically a folder named "build" -* you can check the SMTG Options -* Press "Configure" -* Press "Generate" and the project will be created + +- start the cmake-gui Application +- "Browse Source...": select the folder VST3_SDK +- "Browse Build...": select a folder where the outputs (projects/...) will be created. Typically a folder named "build" +- you can check the SMTG Options +- Press "Configure" +- Press "Generate" and the project will be created ---
+## Contributing + +For bug reports and features requests, please visit the [VST Developer Forum](https://sdk.steinberg.net) + +--- +
+ ## License & Usage guidelines + More details are found at [www.steinberg.net/sdklicenses_vst3](http://www.steinberg.net/sdklicenses_vst3) \ No newline at end of file diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/VST3_License_Agreement.pdf b/modules/juce_audio_processors/format_types/VST3_SDK/VST3_License_Agreement.pdf new file mode 100644 index 0000000000..04349f443a Binary files /dev/null and b/modules/juce_audio_processors/format_types/VST3_SDK/VST3_License_Agreement.pdf differ diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/VST3_Usage_Guidelines.pdf b/modules/juce_audio_processors/format_types/VST3_SDK/VST3_Usage_Guidelines.pdf new file mode 100644 index 0000000000..27c196068a Binary files /dev/null and b/modules/juce_audio_processors/format_types/VST3_SDK/VST3_Usage_Guidelines.pdf differ diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/LICENSE.txt b/modules/juce_audio_processors/format_types/VST3_SDK/base/LICENSE.txt index 1f195a9088..cf53fd8111 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/LICENSE.txt +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/LICENSE.txt @@ -1,6 +1,6 @@ //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/README.md b/modules/juce_audio_processors/format_types/VST3_SDK/base/README.md new file mode 100644 index 0000000000..1d7de1fee2 --- /dev/null +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/README.md @@ -0,0 +1,6 @@ +# Welcome to VST SDK 3 base + +Here you can find some helper classes useful for developing VST3 Plug-Ins. + +## License & Usage guidelines +More details are found at [www.steinberg.net/sdklicenses_vst3](http://www.steinberg.net/sdklicenses_vst3) \ No newline at end of file diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp index 09dcfb0cae..2c6fdfbc10 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h index f331dedbb4..70c77b78aa 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp index 8de06dac98..c7d745ef42 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: @@ -43,7 +43,7 @@ namespace Steinberg { //------------------------------------------------------------------------------------- Buffer::Buffer () -: buffer (0) +: buffer (nullptr) , memSize (0) , fillSize (0) , delta (defaultDelta) @@ -51,7 +51,7 @@ Buffer::Buffer () //------------------------------------------------------------------------------------- Buffer::Buffer (uint32 s, uint8 initVal) -: buffer (0) +: buffer (nullptr) , memSize (s) , fillSize (0) , delta (defaultDelta) @@ -67,7 +67,7 @@ Buffer::Buffer (uint32 s, uint8 initVal) //------------------------------------------------------------------------------------- Buffer::Buffer (uint32 s) -: buffer (0) +: buffer (nullptr) , memSize (s) , fillSize (0) , delta (defaultDelta) @@ -81,7 +81,7 @@ Buffer::Buffer (uint32 s) //------------------------------------------------------------------------------------- Buffer::Buffer (const void* b , uint32 s) -: buffer (0) +: buffer (nullptr) , memSize (s) , fillSize (s) , delta (defaultDelta) @@ -100,7 +100,7 @@ Buffer::Buffer (const void* b , uint32 s) //------------------------------------------------------------------------------------- Buffer::Buffer (const Buffer& bufferR) -: buffer (0) +: buffer (nullptr) , memSize (bufferR.memSize) , fillSize (bufferR.fillSize) , delta (bufferR.delta) @@ -120,7 +120,7 @@ Buffer::~Buffer () { if (buffer) ::free (buffer); - buffer = 0; + buffer = nullptr; } //------------------------------------------------------------------------------------- @@ -302,7 +302,7 @@ bool Buffer::makeHexString (String& result) unsigned char* data = uint8Ptr (); uint32 bytes = getSize (); - if (data == 0 || bytes == 0) + if (data == nullptr || bytes == 0) return false; char8* stringBuffer = (char8*)malloc ((bytes * 2) + 1); @@ -338,7 +338,7 @@ bool Buffer::makeHexString (String& result) bool Buffer::fromHexString (const char8* string) { flush (); - if (string == 0) + if (string == nullptr) return false; int32 len = strlen8 (string); @@ -477,7 +477,7 @@ bool Buffer::setSize (uint32 newSize) if (newSize > 0) { int8* newBuffer = (int8*) ::realloc (buffer, newSize); - if (newBuffer == 0) + if (newBuffer == nullptr) { newBuffer = (int8*)::malloc (newSize); if (newBuffer) @@ -492,7 +492,7 @@ bool Buffer::setSize (uint32 newSize) else { ::free (buffer); - buffer = 0; + buffer = nullptr; } } else @@ -501,7 +501,7 @@ bool Buffer::setSize (uint32 newSize) else { ::free (buffer); - buffer = 0; + buffer = nullptr; } } else @@ -515,7 +515,7 @@ bool Buffer::setSize (uint32 newSize) fillSize = memSize; } - return (newSize > 0) == (buffer != 0); + return (newSize > 0) == (buffer != nullptr); } //------------------------------------------------------------------------------------- @@ -582,7 +582,7 @@ void Buffer::take (Buffer& from) memSize = from.memSize; fillSize = from.fillSize; buffer = from.buffer; - from.buffer = 0; + from.buffer = nullptr; from.memSize = 0; from.fillSize = 0; } @@ -591,7 +591,7 @@ void Buffer::take (Buffer& from) int8* Buffer::pass () { int8* res = buffer; - buffer = 0; + buffer = nullptr; memSize = 0; fillSize = 0; return res; diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.h b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.h index e8dd936a84..e5f3ed6fa6 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.h @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.cpp index 7828add9fa..185954b5ba 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.cpp @@ -11,7 +11,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.h b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.h index e61f0aacc9..197d4b33cb 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.h @@ -11,7 +11,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: @@ -128,12 +128,12 @@ */ ///@{ -#define DBPRT0(a) FDebugPrint (a); -#define DBPRT1(a, b) FDebugPrint (a, b); -#define DBPRT2(a, b, c) FDebugPrint (a, b, c); -#define DBPRT3(a, b, c, d) FDebugPrint (a, b, c, d); -#define DBPRT4(a, b, c, d, e) FDebugPrint (a, b, c, d, e); -#define DBPRT5(a, b, c, d, e, f) FDebugPrint (a, b, c, d, e, f); +#define SMTG_DBPRT0(a) FDebugPrint (a); +#define SMTG_DBPRT1(a, b) FDebugPrint (a, b); +#define SMTG_DBPRT2(a, b, c) FDebugPrint (a, b, c); +#define SMTG_DBPRT3(a, b, c, d) FDebugPrint (a, b, c, d); +#define SMTG_DBPRT4(a, b, c, d, e) FDebugPrint (a, b, c, d, e); +#define SMTG_DBPRT5(a, b, c, d, e, f) FDebugPrint (a, b, c, d, e, f); ///@} /** @name Helper functions for the above defined macros. @@ -198,17 +198,17 @@ void* operator new (size_t, int, const char*, int); #define SMTG_VERIFY_IS(f, r) f; #define SMTG_VERIFY_NOT(f, r) f; -#define DBPRT0(a) -#define DBPRT1(a, b) -#define DBPRT2(a, b, c) -#define DBPRT3(a, b, c, d) -#define DBPRT4(a, b, c, d, e) -#define DBPRT5(a, b, c, d, e, f) +#define SMTG_DBPRT0(a) +#define SMTG_DBPRT1(a, b) +#define SMTG_DBPRT2(a, b, c) +#define SMTG_DBPRT3(a, b, c, d) +#define SMTG_DBPRT4(a, b, c, d, e) +#define SMTG_DBPRT5(a, b, c, d, e, f) #ifndef NEW #define NEW new #define NEWVEC new - + #endif #endif @@ -223,11 +223,18 @@ void* operator new (size_t, int, const char*, int); #undef ASSERT #endif -#define ASSERT SMTG_ASSERT -#define WARNING SMTG_WARNING -#define DEBUGSTR SMTG_DEBUGSTR -#define VERIFY SMTG_VERIFY -#define VERIFY_IS SMTG_VERIFY_IS -#define VERIFY_NOT SMTG_VERIFY_NOT -#define PRINTSYSERROR SMTG_PRINTSYSERROR +#define ASSERT SMTG_ASSERT +#define WARNING SMTG_WARNING +#define DEBUGSTR SMTG_DEBUGSTR +#define VERIFY SMTG_VERIFY +#define VERIFY_IS SMTG_VERIFY_IS +#define VERIFY_NOT SMTG_VERIFY_NOT +#define PRINTSYSERROR SMTG_PRINTSYSERROR + +#define DBPRT0 SMTG_DBPRT0 +#define DBPRT1 SMTG_DBPRT1 +#define DBPRT2 SMTG_DBPRT2 +#define DBPRT3 SMTG_DBPRT3 +#define DBPRT4 SMTG_DBPRT4 +#define DBPRT5 SMTG_DBPRT5 #endif diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.cpp index 7e83d3f9a7..dd9afe5d2d 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.cpp @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.h b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.h index 67b0af12fe..fabf025802 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.h @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.cpp index bb87dc66b4..2781c786ce 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.cpp @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.h b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.h index fc8c94d9dd..a7e00afbcb 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.h @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.cpp index bd3a360b6f..e41cbae122 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.cpp @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: @@ -41,9 +41,9 @@ #include "pluginterfaces/base/fvariant.h" #include -#include +#include #include -#include +#include #include #if SMTG_OS_WINDOWS diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.h b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.h index 12cc3de47f..d1ba2b3897 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.h @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.cpp index cdb928f24a..904e75ccd2 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.cpp @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.h b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.h index 4f966beed6..59d8126381 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.h @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/thread/include/flock.h b/modules/juce_audio_processors/format_types/VST3_SDK/base/thread/include/flock.h index 755456346d..ae26df6967 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/thread/include/flock.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/thread/include/flock.h @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/base/thread/source/flock.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/base/thread/source/flock.cpp index c1af97fe25..a0e735b60e 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/base/thread/source/flock.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/base/thread/source/flock.cpp @@ -9,7 +9,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/LICENSE.txt b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/LICENSE.txt index c653a2ef70..9e57394dde 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/LICENSE.txt +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/LICENSE.txt @@ -1,6 +1,6 @@ //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- This license applies only to files referencing this license, for other files of the Software Development Kit the respective embedded license text diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/README.md b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/README.md new file mode 100644 index 0000000000..d799955a3d --- /dev/null +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/README.md @@ -0,0 +1,7 @@ +# Welcome to VST SDK 3 Interfaces + +Here are located all VST interfaces definitions (including VST Component/Controller, UI, Test). + +## License & Usage guidelines + +More details are found at [www.steinberg.net/sdklicenses_vst3](http://www.steinberg.net/sdklicenses_vst3) \ No newline at end of file diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/coreiids.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/coreiids.cpp index 9cb6313804..d5935044d4 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/coreiids.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/coreiids.cpp @@ -14,13 +14,17 @@ //------------------------------------------------------------------------ #include "pluginterfaces/base/funknown.h" -#include "pluginterfaces/base/iupdatehandler.h" -#include "pluginterfaces/base/icloneable.h" #include "pluginterfaces/base/ibstream.h" +#include "pluginterfaces/base/icloneable.h" +#include "pluginterfaces/base/ipluginbase.h" +#include "pluginterfaces/base/iupdatehandler.h" //------------------------------------------------------------------------ namespace Steinberg { - +DEF_CLASS_IID (IPluginBase) +DEF_CLASS_IID (IPluginFactory) +DEF_CLASS_IID (IPluginFactory2) +DEF_CLASS_IID (IPluginFactory3) DEF_CLASS_IID (FUnknown) diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpop.h b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpop.h index 93e16ace4b..8ff7faa790 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpop.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpop.h @@ -16,9 +16,7 @@ //--------------------------------------------------------------------------------------------------- #if SMTG_OS_MACOS - #if !SMTG_PLATFORM_64 - #pragma pack(pop) - #endif + #pragma pack(pop) #elif defined __BORLANDC__ #pragma -a- #elif SMTG_OS_WINDOWS diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpush.h b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpush.h index 4c6ce931d5..d4ebbade80 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpush.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpush.h @@ -16,11 +16,15 @@ //---------------------------------------------------------------------------------------------- #if SMTG_OS_MACOS + #pragma GCC diagnostic ignored "-Wunknown-warning-option" + #pragma GCC diagnostic ignored "-Wpragma-pack" #if SMTG_PLATFORM_64 - // no need in packing here + #pragma pack(push, 16) #else #pragma pack(push, 1) #endif + #pragma GCC diagnostic default "-Wpragma-pack" + #pragma GCC diagnostic default "-Wunknown-warning-option" #elif defined __BORLANDC__ #pragma -a8 #elif SMTG_OS_WINDOWS diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fplatform.h b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fplatform.h index e82897efe0..3a93738937 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fplatform.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fplatform.h @@ -34,8 +34,15 @@ #endif //----------------------------------------------------------------------------- -// WIN32 AND WIN64 +// WIN32 AND WIN64 (WINDOWS) +//----------------------------------------------------------------------------- #if defined (_WIN32) + //----------------------------------------------------------------------------- + // ARM32 AND ARM64 (WINDOWS) + #if (defined(_M_ARM64) || defined(_M_ARM)) + #define SMTG_OS_WINDOWS_ARM 1 + #endif + #define SMTG_OS_LINUX 0 #define SMTG_OS_MACOS 0 #define SMTG_OS_WINDOWS 1 @@ -59,7 +66,7 @@ #pragma warning (3 : 4189) // local variable is initialized but not referenced #pragma warning (3 : 4238) // nonstandard extension used : class rvalue used as lvalue - #if defined (_WIN64) // WIN64 only + #if defined (_WIN64) || defined (_M_ARM64) #define SMTG_PLATFORM_64 1 #else #define SMTG_PLATFORM_64 0 @@ -70,12 +77,15 @@ #endif #ifdef __cplusplus - #define SMTG_CPP11 __cplusplus >= 201103L || _MSC_VER > 1800 || SMTG_INTEL_CXX11_MODE + #define SMTG_CPP11 __cplusplus >= 201103L || _MSC_VER > 1600 || SMTG_INTEL_CXX11_MODE #define SMTG_CPP11_STDLIBSUPPORT SMTG_CPP11 #define SMTG_HAS_NOEXCEPT _MSC_VER >= 1900 || (SMTG_INTEL_CXX11_MODE && SMTG_INTEL_COMPILER >= 1300) - #endif + #endif + + #define SMTG_DEPRECATED_ATTRIBUTE(message) __declspec (deprecated ("Is Deprecated: " message)) //----------------------------------------------------------------------------- // LINUX +//----------------------------------------------------------------------------- #elif __gnu_linux__ #define SMTG_OS_LINUX 1 #define SMTG_OS_MACOS 0 @@ -110,6 +120,7 @@ #endif //----------------------------------------------------------------------------- // Mac and iOS +//----------------------------------------------------------------------------- #elif __APPLE__ #include #define SMTG_OS_LINUX 0 @@ -175,9 +186,9 @@ #endif #else #pragma error unknown platform - #endif +//----------------------------------------------------------------------------- #if !SMTG_RENAME_ASSERT #undef WINDOWS #undef MAC @@ -206,3 +217,13 @@ #else #define SMTG_NOEXCEPT #endif + +//----------------------------------------------------------------------------- +// Deprecation setting +//----------------------------------------------------------------------------- +#ifndef SMTG_DEPRECATED_ATTRIBUTE +#define SMTG_DEPRECATED_ATTRIBUTE(msg) +#endif + +#define SMTG_DEPRECATED_MSG(msg) SMTG_DEPRECATED_ATTRIBUTE(msg) +//----------------------------------------------------------------------------- diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.h b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.h index 0bcd018bea..98df20e7b5 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.h @@ -296,7 +296,7 @@ public: /** Prints the UID to a string (or debug output if string is NULL). \param string is the output string if not NULL. \param style can be chosen from the FUID::UIDPrintStyle enumeration. */ - void print (char8* string = 0, int32 style = kINLINE_UID) const; + void print (char8* string = nullptr, int32 style = kINLINE_UID) const; template inline explicit FUID (const int8 (&uid)[N]) diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/smartpointer.h b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/smartpointer.h index bcc1d82958..f9af78be1d 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/smartpointer.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/smartpointer.h @@ -80,7 +80,7 @@ public: template inline IPtr (IPtr&& movePtr) SMTG_NOEXCEPT : ptr (movePtr.take ()) { } - inline IPtr& operator= (IPtr&& movePtr) SMTG_NOEXCEPT + inline IPtr& operator= (IPtr&& movePtr) { if (ptr) ptr->release (); @@ -88,6 +88,16 @@ public: ptr = movePtr.take (); return *this; } + + template + inline IPtr& operator= (IPtr&& movePtr) + { + if (ptr) + ptr->release (); + + ptr = movePtr.take (); + return *this; + } inline void reset (I* obj = nullptr) { diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstaudioprocessor.h b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstaudioprocessor.h index d559540bde..f0755a455e 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstaudioprocessor.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstaudioprocessor.h @@ -68,10 +68,11 @@ const CString kFxNetwork = "Fx|Network"; ///< using Network const CString kInstrument = "Instrument"; ///< Effect used as instrument (sound generator), not as insert const CString kInstrumentDrum = "Instrument|Drum"; ///< Instrument for Drum sounds +const CString kInstrumentExternal = "Instrument|External";///< External Instrument (wrapped Hardware) +const CString kInstrumentPiano = "Instrument|Piano"; ///< Instrument for Piano sounds const CString kInstrumentSampler = "Instrument|Sampler"; ///< Instrument based on Samples const CString kInstrumentSynth = "Instrument|Synth"; ///< Instrument based on Synthesis const CString kInstrumentSynthSampler = "Instrument|Synth|Sampler"; ///< Instrument based on Synthesis and Samples -const CString kInstrumentExternal = "Instrument|External";///< External Instrument (wrapped Hardware) const CString kSpatial = "Spatial"; ///< used for SurroundPanner const CString kSpatialFx = "Spatial|Fx"; ///< used for SurroundPanner and as insert effect diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstnoteexpression.h b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstnoteexpression.h index 9e340076e3..dd04d14f6a 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstnoteexpression.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstnoteexpression.h @@ -34,7 +34,7 @@ VST predefines some types like volume, pan, tuning by defining their ranges and Used by NoteExpressionEvent::typeId and NoteExpressionTypeID::typeId \see NoteExpressionTypeInfo */ -enum NoteExpressionTypeIDs +enum NoteExpressionTypeIDs : uint32 { kVolumeTypeID = 0, ///< Volume, plain range [0 = -oo , 0.25 = 0dB, 0.5 = +6dB, 1 = +12dB]: plain = 20 * log (4 * norm) kPanTypeID, ///< Panning (L-R), plain range [0 = left, 0.5 = center, 1 = right] @@ -183,7 +183,7 @@ DECLARE_CLASS_IID (INoteExpressionController, 0xB7F8F859, 0x41234872, 0x91169581 /** KeyswitchTypeIDs describes the type of a key switch \see KeyswitchInfo */ -enum KeyswitchTypeIDs +enum KeyswitchTypeIDs : uint32 { kNoteOnKeyswitchTypeID = 0, ///< press before noteOn is played kOnTheFlyKeyswitchTypeID, ///< press while noteOn is played diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivsttestplugprovider.h b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivsttestplugprovider.h new file mode 100644 index 0000000000..1e792c9b8e --- /dev/null +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivsttestplugprovider.h @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------------- +// Flags : clang-format SMTGSequencer +// Project : VST SDK +// +// Category : Validator +// Filename : public.sdk/source/vst/testsuite/iplugprovider.h +// Created by : Steinberg, 04/2005 +// Description : VST Test Suite +// +//----------------------------------------------------------------------------- +// LICENSE +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#pragma once + +#include "pluginterfaces/base/istringresult.h" +#include "pluginterfaces/vst/ivstcomponent.h" +#include "pluginterfaces/vst/ivsteditcontroller.h" + +//------------------------------------------------------------------------ +namespace Steinberg { +namespace Vst { + +//------------------------------------------------------------------------ +/** Test Helper. + * \ingroup TestClass + * + * This class provides access to the component and the controller of a plug-in when running a unit + * test (see ITest). + * You get this interface as the context argument in the ITestFactory::createTests method. + */ +//------------------------------------------------------------------------ +class ITestPlugProvider : public FUnknown +{ +public: +//------------------------------------------------------------------------ + /** get the component of the plug-in. + * + * The reference count of the component is increased in this function and you need to call + * releasePlugIn when done with the component. + */ + virtual IComponent* PLUGIN_API getComponent () = 0; + /** get the controller of the plug-in. + * + * The reference count of the controller is increased in this function and you need to call + * releasePlugIn when done with the controller. + */ + virtual IEditController* PLUGIN_API getController () = 0; + /** release the component and/or controller */ + virtual tresult PLUGIN_API releasePlugIn (IComponent* component, + IEditController* controller) = 0; + /** get the sub categories of the plug-in */ + virtual tresult PLUGIN_API getSubCategories (IStringResult& result) const = 0; + /** get the component UID of the plug-in */ + virtual tresult PLUGIN_API getComponentUID (FUID& uid) const = 0; + +//------------------------------------------------------------------------ + static const FUID iid; +}; + +DECLARE_CLASS_IID (ITestPlugProvider, 0x86BE70EE, 0x4E99430F, 0x978F1E6E, 0xD68FB5BA) + +//------------------------------------------------------------------------ +} // Vst +} // Steinberg diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vsttypes.h b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vsttypes.h index db456473e4..3ba6ec4385 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vsttypes.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vsttypes.h @@ -23,12 +23,12 @@ namespace Steinberg { namespace Vst { //------------------------------------------------------------------------ #ifndef kVstVersionString -#define kVstVersionString "VST 3.6.12" ///< SDK version for PClassInfo2 +#define kVstVersionString "VST 3.6.13" ///< SDK version for PClassInfo2 #endif #define kVstVersionMajor 3 #define kVstVersionMinor 6 -#define kVstVersionSub 12 +#define kVstVersionSub 13 // this allows to write things like: #if VST_VERSION >= 0x030500 // note that 3.10.0 is 0x030a00 #define VST_VERSION ((kVstVersionMajor << 16) | (kVstVersionMinor << 8) | kVstVersionSub) diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/LICENSE.txt b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/LICENSE.txt index 1f195a9088..cf53fd8111 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/LICENSE.txt +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/LICENSE.txt @@ -1,6 +1,6 @@ //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/README.md b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/README.md new file mode 100644 index 0000000000..2045d5eafd --- /dev/null +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/README.md @@ -0,0 +1,15 @@ +# Welcome to VST SDK 3 public_sdk + +Here are located: + +- helper classes implementing VST3 Interfaces +- samples of VST3 hosting and VST3 Plug-Ins +- AAX Wrapper +- AU Wrapper +- AUv3 Wrapper +- VST2 Wrapper +- InterAppAudio + +## License & Usage guidelines + +More details are found at [www.steinberg.net/sdklicenses_vst3](http://www.steinberg.net/sdklicenses_vst3) \ No newline at end of file diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.cpp index fa4fd9f7b1..496d69cc71 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.h b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.h index bc4d9030f5..e4d7afa782 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.h @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.cpp index aa8ab14698..88de304c13 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.h b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.h index b4589d6cb6..861f283c3b 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.h @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.cpp index d7171b5066..ba7d8085eb 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.h b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.h index e98c40d8b1..7919cea6b0 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.h @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.cpp index 9d45bca882..0391998bf8 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.h b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.h index e305e80610..c122bdaad8 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.h @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.cpp index 71bdd2e2a0..9750c65ce7 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.h b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.h index 759b42f271..2a8081280f 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.h @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.cpp index 2765ffa52a..16a2662feb 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.h b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.h index c98a2ae6f4..822d26a379 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.h @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.cpp index 7bb952c03e..c53ba5e31c 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.h b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.h index fd49b1a36a..2e70e7f8d3 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.h @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstinitiids.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstinitiids.cpp index 6c03b80edb..95f74f391c 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstinitiids.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstinitiids.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: @@ -52,6 +52,7 @@ #include "pluginterfaces/vst/ivstplugview.h" #include "pluginterfaces/vst/ivstprefetchablesupport.h" #include "pluginterfaces/vst/ivstrepresentation.h" +#include "pluginterfaces/vst/ivsttestplugprovider.h" #include "pluginterfaces/vst/ivstunits.h" //------------------------------------------------------------------------ @@ -127,6 +128,9 @@ DEF_CLASS_IID (IMidiLearn) DEF_CLASS_IID (IPlugInterfaceSupport) DEF_CLASS_IID (IVst3WrapperMPESupport) +//----VST 3.6.13-------------------------------- +DEF_CLASS_IID (ITestPlugProvider) + //------------------------------------------------------------------------ } // Vst } // Steinberg diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.cpp index 57664bf2ce..1ff7683246 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.h b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.h index f9c421ecb7..b2bcdc8ecc 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.h @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.cpp b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.cpp index aaaeb3fc45..719f1c4fd8 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.cpp +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.cpp @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: diff --git a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.h b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.h index dc06e87cd2..413183d412 100644 --- a/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.h +++ b/modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.h @@ -8,7 +8,7 @@ // //----------------------------------------------------------------------------- // LICENSE -// (c) 2018, Steinberg Media Technologies GmbH, All Rights Reserved +// (c) 2019, Steinberg Media Technologies GmbH, All Rights Reserved //----------------------------------------------------------------------------- // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: