Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 9.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. # Welcome to VST SDK 3.6.x
  2. ## Table Of Contents
  3. 1. [The VST SDK package](#100)
  4. 1. [System requirements](#200)
  5. 1. [About VST Plug-ins in general](#300)
  6. 1. [About VST 3](#400)
  7. 1. [How to build VST 3](#500)
  8. 1. [Contributing](#600)
  9. 1. [License & Usage guidelines](#700)
  10. <div id='100'/>
  11. ## The VST SDK package contains
  12. - The VST 3 API
  13. - VST 3 Implementation Helper Classes
  14. - AAX, AU and VST 2 wrappers
  15. - VST 3 Plug-ins Examples
  16. The full VST 3 SDK is available [here!](https://www.steinberg.net/en/company/developers.html). It contains :
  17. - a VST 3 Plug-in Test Host Application/Validator,
  18. - 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.
  19. <div id='200'/>
  20. ## System requirements
  21. Supported OS:
  22. - Microsoft Windows 7-10
  23. - Apple OSX 10.9-10.13
  24. - Apple iOS 8-9
  25. - Linux (Beta version)
  26. Supported IDE:
  27. - Visual Studio 2015/2017/2019
  28. - minimum Xcode 7
  29. - Qt Creator
  30. ---
  31. <div id='300'/>
  32. ## About VST Plug-ins in general
  33. 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.
  34. 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.
  35. The source code of a VST Plug-in is platform independent, but the delivery system depends on the platform architecture:
  36. - On **Windows**, a VST Plug-in is a multi-threaded DLL (Dynamic Link Library), recently packaged into a folder structur.
  37. - On **Mac OS X**, a VST Plug-in is a Mach-O Bundle
  38. - On **Linux**, a VST Plug-in is a package
  39. 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).
  40. ---
  41. <div id='400'/>
  42. ## About VST 3
  43. 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:
  44. ### 1. Improved Performance with the Silence Flag
  45. 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.
  46. ### 2. Multiple Dynamic I/Os
  47. 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.
  48. ### 3. Sample-accurate Automation
  49. 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.
  50. ### 4. Logical Parameter Organization
  51. 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).
  52. ### 5. Resizeable UI Editor
  53. VST 3 defines a way to allow resizing of the Plug-in editor by a user.
  54. ### 6. Mouse Over Support
  55. The Host could ask the Plug-in which parameter is under the mouse.
  56. ### 7. Context Menu Support
  57. VST 3 defines a way to allow the host to add its own entries in the Plug-in context menu of a specific parameter.
  58. ### 8. Channel Context Information
  59. A VST 3 Plug-in could access some channel information where it is instantiated: name, color,...
  60. ### 9. Note Expression
  61. 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.
  62. ### 10. 3D Support
  63. VST 3 supports new speaker configurations like Ambisonic, Atmos, Auro 3D or 22.2.
  64. ### 11. Factory Concept
  65. VST 3 Plug-in library could export multiple Plug-ins and in this way replaces the shell concept of VST 2 (kPlugCategShell).
  66. ### 12. Support Remote control Representation
  67. VST 3 Plug-in can deliver a specific parameter mapping for remote controls like Nuage.
  68. ### 13. Others
  69. 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.
  70. Some more features implemented specifically for developers include:
  71. - More stable technical Host/Plug-in environment
  72. - Advanced technical definition of the standard
  73. - Modular approach
  74. - Separation of UI and processing
  75. - Advanced Preset System
  76. - Multiple Plug-ins per Library
  77. - Test Host included
  78. - Automated Testing Environment
  79. - Validator (small command line Test Host) and Plug-in examples code included
  80. ---
  81. <div id='500'/>
  82. ## How to build VST3
  83. ### Get the source code from GitHub
  84. <pre>git clone --recursive https://github.com/steinbergmedia/vst3sdk.git
  85. </pre>
  86. ### Adding VST2 version
  87. 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.
  88. 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:
  89. - for macOS:
  90. <pre>
  91. cd TheFolderWhereYouDownloadTheSDK
  92. ./copy_vst2_to_vst3_sdk.sh
  93. </pre>
  94. - for Windows:
  95. <pre>
  96. cd TheFolderWhereYouDownloadTheSDK
  97. copy_vst2_to_vst3_sdk.bat
  98. </pre>
  99. ### Build the examples on Linux
  100. - Create a folder for the build and move to this folder (using cd):
  101. <pre>
  102. mkdir build
  103. cd build
  104. </pre>
  105. - Generate the Solution/Projects: provide the path of the Project where CMakeLists.txt is located:
  106. <pre>
  107. cmake ../vst3sdk
  108. </pre>
  109. - Now you can build the Plug-in:
  110. <pre>
  111. make
  112. (or alternatively for example for release)
  113. cmake --build . --config Release
  114. </pre>
  115. ### Build the examples on macOS
  116. - Create a folder for the build and move to this folder (using cd):
  117. <pre>
  118. mkdir build
  119. cd build
  120. </pre>
  121. - Generate the Solution/Projects: provide the path of the Project where CMakeLists.txt is located:
  122. <pre>
  123. For XCode:
  124. cmake -GXcode ../vst3sdk
  125. Without XCode (here debug variant):
  126. cmake -DCMAKE_BUILD_TYPE=Debug ../
  127. </pre>
  128. - Now you can build the Plug-in (you can use XCode too):
  129. <pre>
  130. xcodebuild
  131. (or alternatively for example for release)
  132. cmake --build . --config Release
  133. </pre>
  134. ### Build the examples on Windows
  135. - Create a folder for the build and move to this folder (using cd):
  136. <pre>
  137. mkdir build
  138. cd build
  139. </pre>
  140. - Generate the Solution/Projects: provide the path of the Project where CMakeLists.txt is located:
  141. <pre>
  142. cmake.exe -G"Visual Studio 15 2017 Win64" ../vst3sdk
  143. </pre>
  144. - Now you can build the Plug-in (you can use Visual Studio too):
  145. <pre>
  146. msbuild.exe vstsdk.sln
  147. (or alternatively for example for release)
  148. cmake --build . --config Release
  149. </pre>
  150. ### Build using cmake-gui
  151. - start the cmake-gui Application
  152. - "Browse Source...": select the folder VST3_SDK
  153. - "Browse Build...": select a folder where the outputs (projects/...) will be created. Typically a folder named "build"
  154. - you can check the SMTG Options
  155. - Press "Configure"
  156. - Press "Generate" and the project will be created
  157. ---
  158. <div id='600'/>
  159. ## Contributing
  160. For bug reports and features requests, please visit the [VST Developer Forum](https://sdk.steinberg.net)
  161. ---
  162. <div id='700'/>
  163. ## License & Usage guidelines
  164. More details are found at [www.steinberg.net/sdklicenses_vst3](http://www.steinberg.net/sdklicenses_vst3)