commit 13afc58c10a0e394004b2566f905862e65084f79
Author: scheffle <scheffle@users.noreply.github.com>
Date: Fri, 3 Mar 2017 11:58:52 +0100
vstsdk367_03_03_2017_build_352
Diffstat:
11 files changed, 385 insertions(+), 0 deletions(-)
diff --git a/.gitmodules b/.gitmodules
@@ -0,0 +1,18 @@
+[submodule "base"]
+ path = base
+ url = ../vst3_base
+[submodule "cmake"]
+ path = cmake
+ url = ../vst3_cmake
+[submodule "doc"]
+ path = doc
+ url = ../vst3_doc
+[submodule "pluginterfaces"]
+ path = pluginterfaces
+ url = ../vst3_pluginterfaces
+[submodule "public.sdk"]
+ path = public.sdk
+ url = ../vst3_public_sdk
+[submodule "vstgui4"]
+ path = vstgui4
+ url = ../vstgui
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -0,0 +1,220 @@
+
+cmake_minimum_required (VERSION 3.4.3)
+
+#-------------------------------------------------------------------------------
+# Includes
+#-------------------------------------------------------------------------------
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
+
+include(Global)
+include(AddVST3Library)
+include(Bundle)
+include(ExportedSymbols)
+include(PrefixHeader)
+include(PlatformIOS)
+
+# do not build VST2 by default
+option(SMTG_CREATE_VST2_VERSION "Use VST2" OFF)
+
+#-------------------------------------------------------------------------------
+# SDK Project
+#-------------------------------------------------------------------------------
+set(VST_SDK TRUE)
+project(vstsdk)
+
+if (LINUX)
+ option(SMTG_ADD_ADDRESS_SANITIZER_CONFIG "Add AddressSanitizer Config (Linux only)" OFF)
+ if(SMTG_ADD_ADDRESS_SANITIZER_CONFIG)
+ set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES};ASan")
+ add_compile_options($<$<CONFIG:ASan>:-DDEVELOPMENT=1>)
+ add_compile_options($<$<CONFIG:ASan>:-fsanitize=address>)
+ add_compile_options($<$<CONFIG:ASan>:-DVSTGUI_LIVE_EDITING=1>)
+ add_compile_options($<$<CONFIG:ASan>:-g>)
+ add_compile_options($<$<CONFIG:ASan>:-O0>)
+ set(ASAN_LIBRARY asan)
+ link_libraries($<$<CONFIG:ASan>:${ASAN_LIBRARY}>)
+ endif()
+endif()
+
+if(UNIX)
+ if(XCODE)
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
+ set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
+ elseif(APPLE)
+ set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -stdlib=libc++")
+ link_libraries(c++)
+ else()
+ set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wno-multichar")
+ link_libraries(stdc++fs pthread dl)
+ endif()
+
+elseif(WIN)
+ add_definitions(-D_UNICODE)
+ add_compile_options(/fp:fast)
+ add_compile_options($<$<CONFIG:Release>:/Oi>) # Enable Intrinsic Functions (Yes)
+ add_compile_options($<$<CONFIG:Release>:/Ot>) # Favor Size Or Speed (Favor fast code)
+ #add_compile_options($<$<CONFIG:Release>:/Ox>) # Optimization (/O2: Maximise Speed /0x: Full Optimization)
+ add_compile_options($<$<CONFIG:Release>:/GF>) # Enable String Pooling
+ add_compile_options($<$<CONFIG:Release>:/EHa>) # Enable C++ Exceptions
+ add_compile_options($<$<CONFIG:Release>:/Oy>) # Omit Frame Pointers
+endif()
+
+set(ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
+
+# here you can define where the VST3 SDK is located
+set(SDK_ROOT "${ROOT}")
+
+# here you can define where the VSTGUI is located
+set(VSTGUI_ROOT "${ROOT}")
+
+include_directories(${ROOT} ${SDK_ROOT})
+
+set(SDK_IDE_LIBS_FOLDER FOLDER "Libraries")
+set(SDK_IDE_PLUGIN_EXAMPLES_FOLDER FOLDER "PlugInExamples")
+set(SDK_IDE_HOSTING_EXAMPLES_FOLDER FOLDER "HostingExamples")
+
+#-------------------------------------------------------------------------------
+if(MAC AND XCODE)
+ if(NOT SMTG_COREAUDIO_SDK_PATH)
+ # Check if the CoreAudio SDK is next to the VST3SDK:
+ if(EXISTS "${SDK_ROOT}/../CoreAudio/AudioUnits/AUPublic/AUBase/AUBase.cpp")
+ set(SMTG_COREAUDIO_SDK_PATH "${SDK_ROOT}/../CoreAudio")
+ else()
+ if(EXISTS "${SDK_ROOT}/external.apple.coreaudio/AudioUnits/AUPublic/AUBase/AUBase.cpp")
+ set(SMTG_COREAUDIO_SDK_PATH "${SDK_ROOT}/external.apple.coreaudio")
+ endif()
+ endif()
+ else()
+ if(NOT IS_ABSOLUTE ${SMTG_COREAUDIO_SDK_PATH})
+ get_filename_component(SMTG_COREAUDIO_SDK_PATH "${SDK_ROOT}/${SMTG_COREAUDIO_SDK_PATH}" ABSOLUTE)
+ endif()
+ if(NOT EXISTS "${SMTG_COREAUDIO_SDK_PATH}/AudioUnits/AUPublic/AUBase/AUBase.cpp")
+ message(FATAL_ERROR "SMTG_COREAUDIO_SDK_PATH is set but does not point to an expected location")
+ endif()
+ endif()
+ if(SMTG_COREAUDIO_SDK_PATH)
+ message(STATUS "SMTG_COREAUDIO_SDK_PATH is set to : " ${SMTG_COREAUDIO_SDK_PATH})
+ endif()
+endif()
+
+#-------------------------------------------------------------------------------
+# Projects
+#-------------------------------------------------------------------------------
+
+add_subdirectory(base)
+add_subdirectory(public.sdk)
+add_subdirectory(public.sdk/source/vst/auwrapper)
+add_subdirectory(public.sdk/source/vst/auwrapper/again)
+add_subdirectory(public.sdk/source/vst/interappaudio)
+add_subdirectory(public.sdk/samples/vst/again)
+add_subdirectory(public.sdk/samples/vst/adelay)
+add_subdirectory(public.sdk/samples/vst/channelcontext)
+add_subdirectory(public.sdk/samples/vst/hostchecker)
+add_subdirectory(public.sdk/samples/vst/editorhost)
+add_subdirectory(public.sdk/samples/vst/mda-vst3)
+add_subdirectory(public.sdk/samples/vst/note_expression_synth)
+add_subdirectory(public.sdk/samples/vst/note_expression_text)
+add_subdirectory(public.sdk/samples/vst/pitchnames)
+add_subdirectory(public.sdk/samples/vst/prefetchablesupport)
+add_subdirectory(public.sdk/samples/vst/programchange)
+add_subdirectory(public.sdk/samples/vst/validator)
+add_subdirectory(public.sdk/samples/vst/InterAppAudio)
+
+set(VSTGUI_DISABLE_UNITTESTS 1)
+add_subdirectory(vstgui4/vstgui)
+
+#-------------------------------------------------------------------------------
+# VSTGUI Support Library
+#-------------------------------------------------------------------------------
+add_compile_options($<$<CONFIG:Debug>:-DVSTGUI_LIVE_EDITING=1>)
+set(VST3_VSTGUI_SOURCES
+ ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3groupcontroller.cpp
+ ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3groupcontroller.h
+ ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3padcontroller.cpp
+ ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3padcontroller.h
+ ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3editor.cpp
+ ${VSTGUI_ROOT}/vstgui4/vstgui/plugin-bindings/vst3editor.h
+ ${SDK_ROOT}/public.sdk/source/vst/vstguieditor.cpp
+)
+add_library(vstgui_support STATIC ${VST3_VSTGUI_SOURCES})
+target_include_directories(vstgui_support PUBLIC ${VSTGUI_ROOT}/vstgui4)
+target_link_libraries(vstgui_support PRIVATE vstgui_uidescription)
+if(MAC)
+ if(XCODE)
+ target_link_libraries(vstgui_support PRIVATE "-framework Cocoa" "-framework OpenGL" "-framework Accelerate" "-framework QuartzCore" "-framework Carbon")
+ else()
+ find_library(COREFOUNDATION_FRAMEWORK CoreFoundation)
+ find_library(COCOA_FRAMEWORK Cocoa)
+ find_library(OPENGL_FRAMEWORK OpenGL)
+ find_library(ACCELERATE_FRAMEWORK Accelerate)
+ find_library(QUARTZCORE_FRAMEWORK QuartzCore)
+ find_library(CARBON_FRAMEWORK Carbon)
+ target_link_libraries(vstgui_support PRIVATE ${COREFOUNDATION_FRAMEWORK} ${COCOA_FRAMEWORK} ${OPENGL_FRAMEWORK} ${ACCELERATE_FRAMEWORK} ${QUARTZCORE_FRAMEWORK} ${CARBON_FRAMEWORK})
+ endif()
+endif()
+
+#-------------------------------------------------------------------------------
+# IDE sorting
+#-------------------------------------------------------------------------------
+set_target_properties(vstgui_support PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+set_target_properties(sdk PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+set_target_properties(base PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+set_target_properties(vstgui PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+set_target_properties(vstgui_uidescription PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+
+if (TARGET again)
+ set_target_properties(again PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET againsimple)
+ set_target_properties(againsimple PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET adelay)
+ set_target_properties(adelay PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET channelcontext)
+ set_target_properties(channelcontext PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET hostchecker)
+ set_target_properties(hostchecker PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET mda-vst3)
+ set_target_properties(mda-vst3 PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET noteexpressionsynth)
+ set_target_properties(noteexpressionsynth PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET noteexpressiontext)
+ set_target_properties(noteexpressiontext PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET pitchnames)
+ set_target_properties(pitchnames PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET prefetchablesupport)
+ set_target_properties(prefetchablesupport PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+if (TARGET programchange)
+ set_target_properties(programchange PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+endif()
+
+if (TARGET editorhost)
+ set_target_properties(editorhost PROPERTIES ${SDK_IDE_HOSTING_EXAMPLES_FOLDER})
+endif()
+if (TARGET validator)
+ set_target_properties(validator PROPERTIES ${SDK_IDE_HOSTING_EXAMPLES_FOLDER})
+endif ()
+
+if(MAC AND XCODE)
+ if(SMTG_COREAUDIO_SDK_PATH)
+ set_target_properties(auwrapper PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+ set_target_properties(again_au PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+ endif()
+ if(IOS_DEVELOPMENT_TEAM)
+ set_target_properties(sdk_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+ set_target_properties(base_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+ set_target_properties(interappaudio PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+ set_target_properties(noteexpressionsynth_ios PROPERTIES ${SDK_IDE_PLUGIN_EXAMPLES_FOLDER})
+ endif()
+endif()
diff --git a/LICENSE.txt b/LICENSE.txt
@@ -0,0 +1,41 @@
+//-----------------------------------------------------------------------------
+// LICENSE
+// (c) 2017, 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
+is applicable. The license can be found at: www.steinberg.net/sdklicenses_vst3
+
+This Software Development Kit is licensed under the terms of the Steinberg VST3 License,
+or alternatively under the terms of the General Public License (GPL) Version 3.
+You may use the Software Development Kit according to either of these licenses as it is
+most appropriate for your project on a case-by-case basis (commercial or not).
+
+a) Proprietary Steinberg VST3 License
+The Software Development Kit may not be distributed in parts or its entirety
+without prior written agreement by Steinberg Media Technologies GmbH.
+The SDK must not be used to re-engineer or manipulate any technology used
+in any Steinberg or Third-party application or software module,
+unless permitted by law.
+Neither the name of the Steinberg Media Technologies GmbH nor the names of its
+contributors may be used to endorse or promote products derived from this
+software without specific prior written permission.
+Before publishing a software under the proprietary license, you need to obtain a copy
+of the License Agreement signed by Steinberg Media Technologies GmbH.
+The Steinberg VST SDK License Agreement can be found at:
+www.steinberg.net/en/company/developers.html
+
+THE SDK IS PROVIDED BY STEINBERG MEDIA TECHNOLOGIES GMBH "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 STEINBERG MEDIA TECHNOLOGIES GMBH 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.
+
+b) General Public License (GPL) Version 3
+Details of these licenses can be found at: www.gnu.org/licenses/gpl-3.0.html
+//----------------------------------------------------------------------------------
diff --git a/README.md b/README.md
@@ -0,0 +1,92 @@
+# Welcome to VST SDK 3.6.7
+## The VST SDK package contains:
+- The VST 3 API
+- VST 3 Implementation Helper Classes
+- AU and VST2 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.
+## System requirements
+
+Supported OS:
+
+- Microsoft Windows 7-10
+- Apple OSX 10.7-10.12
+- Apple iOS 8-9
+- Linux (Preview)
+
+Supported IDE:
+- Visual Studio 2013/2015
+- Xcode 6/7
+- Qt Creator
+
+---
+
+## 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 **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](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
+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.
+
+### 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.
+
+### 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.
+
+### 10. 3D Support
+VST 3 supports new speaker configurations like Atmos, Auro 3D or 22.2.
+
+### 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
+- Separation of UI and processing
+- Advanced Preset System
+- Multiple Plug-ins per Library
+- Test Host included
+- Automated Testing Environment
+- Validator (small command line Test Host) and Plug-in examples code included.
+---
+## License
+More details are found at [www.steinberg.net/sdklicenses_vst3](www.steinberg.net/sdklicenses_vst3)
+\ No newline at end of file
diff --git a/base b/base
@@ -0,0 +1 @@
+Subproject commit b9bfeaa45283a06704d6f06d1f9ea239f51f500e
diff --git a/cmake b/cmake
@@ -0,0 +1 @@
+Subproject commit 1e3eb916df358978ac6125a46acccf6f1cdf24a9
diff --git a/doc b/doc
@@ -0,0 +1 @@
+Subproject commit 482f125a647e470cf00f42cd27697ae63284d7ae
diff --git a/index.html b/index.html
@@ -0,0 +1,7 @@
+<html>
+ <frameset border="0" frameborder="0" framespacing="0">
+ <frame src="doc/index.html">
+ </frameset>
+ <body>
+ </body>
+</html>
diff --git a/pluginterfaces b/pluginterfaces
@@ -0,0 +1 @@
+Subproject commit fe378b9832a32d0867081c16b754f37f42609173
diff --git a/public.sdk b/public.sdk
@@ -0,0 +1 @@
+Subproject commit 2841d355740be7770fd0ce61bc14a591d3981c14
diff --git a/vstgui4 b/vstgui4
@@ -0,0 +1 @@
+Subproject commit 447f2242382690d74b92ee7a2f7720732b774768