• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

base/H03-May-2022-11,6067,683

cmake/H03-May-2022-1,7501,548

doc/H03-May-2022-77,58676,125

pluginterfaces/H03-May-2022-11,7355,502

public.sdk/H03-May-2022-175,443141,420

vstgui4/H20-Aug-2020-180,867140,631

.gitmodulesH A D19-Nov-2020363 1918

README.mdH A D19-Nov-202010.2 KiB266177

README.md

1<div style="text-align:center">
2<img src="https://steinbergmedia.github.io/vst3_doc/gfx/vst3_logo.jpg" alt="VST SDK 3" /></div>
3
4# Welcome to VST SDK 3.7.x
5
6## Table Of Contents
7
81. [The VST SDK package](#100)
91. [System requirements](#200)
101. [About VST plug-ins in general](#300)
111. [About VST 3](#400)
121. [How to build VST 3](#500)
131. [Contributing](#600)
141. [License & Usage guidelines](#700)
15
16<div id='100'/>
17
18## The VST SDK package contains
19
20- The VST 3 API
21- VST 3 Implementation Helper Classes
22- AAX, AU, AUv3 and VST 2 wrappers
23- VST 3 plug-ins Examples
24
25The full VST 3 SDK is available [here!](https://www.steinberg.net/en/company/developers.html). It contains :
26
27- a VST 3 plug-in Test Host Application/Validator,
28- 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.
29
30<div id='200'/>
31
32## System requirements
33
34Supported Platforms:
35
36| Operating System|Architecture|Compiler | Notes|
37| :------------- | :----------: | -----------: |-----------:|
38|Windows 10 |x86, x86_64 |MSVC 2019, MSVC 2017 | |
39|Windows 8.1 |x86, x86_64 |MSVC 2019, MSVC 2017 | |
40|macOS 10.13, 10.14, 10.15, 11.0 |x86, x86_64, Apple Silicon |Xcode 7, 8, 9, 10, 11, 12.2 ||
41|iOS 13, iOS 14 | arm64 |Xcode 11, 12.2| |
42|Linux - Raspberry Pi OS (Buster)  |arm32 |GCC 8.3 and higher|Visual Studio Code|
43|Linux - Ubuntu 18.04 LTS |x86, x86_64 |GCC 8.3 and higher|Visual Studio Code, Qt Creator|
44|Linux - Ubuntu 20.04 LTS |x86, x86_64 |GCC 8.3 and higher|Visual Studio Code, Qt Creator|
45
46---
47<div id='300'/>
48
49## About VST plug-ins in general
50
51A 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.
52
53From 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.
54
55The source code of a VST plug-in is platform independent, but the delivery system depends on the platform architecture:
56
57- On **Windows**, a VST plug-in is a multi-threaded DLL (Dynamic Link Library), recently packaged into a folder structur.
58- On **Mac OS X**, a VST plug-in is a Mach-O Bundle
59- On **Linux**, a VST plug-in is a package
60
61To learn more about VST you can:
62
63- subscribe to the [VST Developer Forum](https://sdk.steinberg.net)
64- check the 3rd Party Developer Support section at [www.steinberg.net](https://www.steinberg.net/en/company/developers.html)
65- check the online documentation under: [steinbergmedia.github.io/vst3_doc](
66https://steinbergmedia.github.io/vst3_doc)
67
68 ---
69<div id='400'/>
70
71## About VST 3
72
73VST 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:
74
75### 1. Improved Performance with the Silence Flag
76
77Processing 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.
78
79### 2. Multiple Dynamic I/Os
80
81VST 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 busses after loading and even reactivate those when needed. This cleans up the mixer and further helps to reduce CPU load.
82
83### 3. Sample-accurate Automation
84
85VST 3 also features vastly improved parameter automation with sample accuracy and support for ramped automation data, allowing completely accurate and rapid parameter automation changes.
86
87### 4. Logical Parameter Organization
88
89The 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).
90
91### 5. Resizeable UI Editor
92
93VST 3 defines a way to allow resizing of the plug-in editor by a user.
94
95### 6. Mouse Over Support
96
97The host could ask the plug-in which parameter is under the mouse.
98
99### 7. Context Menu Support
100
101VST 3 defines a way to allow the host to add its own entries in the plug-in context menu of a specific parameter.
102
103### 8. Channel Context Information
104
105A VST 3 plug-in could access some channel information where it is instantiated: name, color, ...
106
107### 9. Note Expression
108
109VST 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.
110
111### 10. 3D Support
112
113VST 3 supports new speaker configurations like Ambisonic, Atmos, Auro 3D or 22.2.
114
115### 11. Factory Concept
116
117VST 3 plug-in library could export multiple plug-ins and in this way replaces the shell concept of VST 2 (kPlugCategShell).
118
119### 12. Support Remote control Representation
120
121VST 3 plug-in can deliver a specific parameter mapping for remote controls like Nuage.
122
123### 13. Others
124
125While 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.
126Some more features implemented specifically for developers include:
127
128- More stable technical host/plug-in environment
129- Advanced technical definition of the standard
130- Modular approach
131- Separation of UI and processing
132- Advanced Preset System
133- Multiple plug-ins per Library
134- Test Host included
135- Automated Testing Environment
136- Validator (small command line Test Host) and plug-in examples code included
137
138---
139<div id='500'/>
140
141## How to build VST3
142
143### Get the source code from GitHub
144
145<pre>git clone --recursive https://github.com/steinbergmedia/vst3sdk.git
146</pre>
147
148### Adding VST2 version
149
150The 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.
151In 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:
152
153- for macOS:
154
155<pre>
156cd TheFolderWhereYouDownloadTheSDK
157./copy_vst2_to_vst3_sdk.sh
158</pre>
159
160- for Windows:
161
162<pre>
163cd TheFolderWhereYouDownloadTheSDK
164copy_vst2_to_vst3_sdk.bat
165</pre>
166
167### Build the examples on Linux
168
169- Install the required packages [Package Requirements](https://developer.steinberg.help/display/VST/How+to+set+up+my+system+for+VST+3#HowtosetupmysystemforVST3-ForLinux)
170- Create a folder for the build and move to this folder (using cd):
171
172<pre>
173    mkdir build
174    cd build
175</pre>
176
177- Generate the Solution/Projects: provide the path of the Project where CMakeLists.txt is located:
178
179<pre>
180    cmake ../vst3sdk
181</pre>
182
183- Now you can build the plug-in:
184
185<pre>
186    make
187 (or alternatively for example for release)
188    cmake --build . --config Release
189</pre>
190
191### Build the examples on macOS
192
193- Create a folder for the build and move to this folder (using cd):
194
195<pre>
196    mkdir build
197    cd build
198</pre>
199
200- Generate the Solution/Projects: provide the path of the Project where CMakeLists.txt is located:
201
202<pre>
203  For XCode:
204    cmake -GXcode ../vst3sdk
205  Without XCode (here debug variant):
206    cmake -DCMAKE_BUILD_TYPE=Debug ../
207</pre>
208
209- Now you can build the plug-in (you can use XCode too):
210
211<pre>
212    xcodebuild
213 (or alternatively for example for release)
214    cmake --build . --config Release
215</pre>
216
217### Build the examples on Windows
218
219- Create a folder for the build and move to this folder (using cd):
220
221<pre>
222    mkdir build
223    cd build
224</pre>
225
226- Generate the Solution/Projects: provide the path of the Project where CMakeLists.txt is located:
227
228<pre>
229examples:
230    cmake.exe -G "Visual Studio 16 2019" -A x64 ../vst3sdk
231	or
232	cmake.exe -G "Visual Studio 15 2017" -A x64 ../vst3sdk
233	or
234	cmake.exe -G "Visual Studio 15 2017" -A Win32 ../vst3sdk
235</pre>
236
237- Now you can build the plug-in (you can use Visual Studio too):
238
239<pre>
240    msbuild.exe vstsdk.sln
241  (or alternatively for example for release)
242    cmake --build . --config Release
243</pre>
244
245### Build using cmake-gui
246
247- start the cmake-gui Application
248- "Browse Source...": select the folder VST3_SDK
249- "Browse Build...": select a folder where the outputs (projects/...) will be created. Typically a folder named "build"
250- you can check the SMTG Options
251- Press "Configure"
252- Press "Generate" and the project will be created
253
254---
255<div id='600'/>
256
257## Contributing
258
259For bug reports and features requests, please visit the [VST Developer Forum](https://sdk.steinberg.net)
260
261---
262<div id='700'/>
263
264## License & Usage guidelines
265
266More details are found at [www.steinberg.net/sdklicenses_vst3](http://www.steinberg.net/sdklicenses_vst3)