commit 985d945639f5a2f7498d9483e8b5e6d921bcb580
parent 84e91ee2e40d03bfae2f67b7a132fc471d8acff4
Author: ygrabit <ygrabit@users.noreply.github.com>
Date: Thu, 1 Mar 2018 15:26:29 +0100
vstsdk369_01_03_2018_build_132
Diffstat:
M | CMakeLists.txt | | | 225 | ++++++++++++++++++++----------------------------------------------------------- |
M | LICENSE.txt | | | 2 | +- |
M | README.md | | | 64 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- |
3 files changed, 120 insertions(+), 171 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -13,212 +13,101 @@ include(Bundle)
include(ExportedSymbols)
include(PrefixHeader)
include(PlatformIOS)
-
-# do not build VST 2 by default
-option(SMTG_CREATE_VST2_VERSION "Use VST2" OFF)
-
-# use by default SMTG_ as prefix for ASSERT,...
-option(SMTG_RENAME_ASSERT "Rename ASSERT to SMTG_ASSERT" ON)
+include(PlatformToolset)
+include(CoreAudioSupport)
+include(AAXSupport)
+include(VstGuiSupport)
+include(UniversalBinary)
+include(AddVST3Options)
#-------------------------------------------------------------------------------
# SDK Project
#-------------------------------------------------------------------------------
-set(VST_SDK TRUE)
project(vstsdk)
-if (SMTG_RENAME_ASSERT)
- add_compile_options(-DSMTG_RENAME_ASSERT=1)
-endif()
-
-#------------
-if (LINUX)
- # Enable Sample audioHost (based on Jack Audio)
- option(SMTG_ENABLE_USE_OF_JACK "Enable Use of Jack" ON)
-
- 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()
-else()
- # Disable Sample audioHost (based on Jack Audio)
- # not yet tested on Windows and Mac
- option(SMTG_ENABLE_USE_OF_JACK "Enable Use of Jack" OFF)
-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>:/GF>) # Enable String Pooling
- add_compile_options($<$<CONFIG:Release>:/EHa>) # Enable C++ Exceptions
- add_compile_options($<$<CONFIG:Release>:/Oy>) # Omit Frame Pointers
- #add_compile_options($<$<CONFIG:Release>:/Ox>) # Optimization (/O2: Maximise Speed /0x: Full Optimization)
-endif()
-#------------
+setupPlatformToolset()
set(ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
-# here you can define where the VST 3 SDK is located
+# Here you can define where the VST 3 SDK is located
set(SDK_ROOT "${ROOT}")
-# here you can define where the VSTGUI is located
-set(VSTGUI_ROOT "${ROOT}")
+# Here you can define where the VSTGUI is located
+if(SMTG_ADD_VSTGUI)
+ set(VSTGUI_ROOT "${ROOT}")
+ setupVstGuiSupport()
+endif()
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")
-
#-------------------------------------------------------------------------------
-# CORE AUDIO SDK Location
-#-------------------------------------------------------------------------------
-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})
- else()
- message(STATUS "SMTG_COREAUDIO_SDK_PATH is not set. If you need it, please download the COREAUDIO SDK!")
- endif()
-endif()
+# From Here this is optional...
#-------------------------------------------------------------------------------
-# AAX SDK Location
+# CORE AUDIO SDK, AAX SDK
#-------------------------------------------------------------------------------
-if(MAC OR WIN)
- if(NOT SMTG_AAX_SDK_PATH)
- # Check if the AAX SDK is next to the VST3SDK:
- if(EXISTS "${SDK_ROOT}/../external.avid.aax/Interfaces/AAX.h")
- set(SMTG_AAX_SDK_PATH "${SDK_ROOT}/../external.avid.aax")
- else()
- if(EXISTS "${SDK_ROOT}/external.avid.aax/Interfaces/AAX.h")
- set(SMTG_AAX_SDK_PATH "${SDK_ROOT}/external.avid.aax")
- endif()
- endif()
- else()
- if(NOT IS_ABSOLUTE ${SMTG_AAX_SDK_PATH})
- get_filename_component(SMTG_AAX_SDK_PATH "${SDK_ROOT}/${SMTG_AAX_SDK_PATH}" ABSOLUTE)
- endif()
- if(NOT EXISTS "${SMTG_AAX_SDK_PATH}/Interfaces/AAX.h")
- message(FATAL_ERROR "SMTG_AAX_SDK_PATH is set but does not point to an expected location")
- endif()
- endif()
- if(SMTG_AAX_SDK_PATH)
- message(STATUS "SMTG_AAX_SDK_PATH is set to : " ${SMTG_AAX_SDK_PATH})
- else()
- message(STATUS "SMTG_AAX_SDK_PATH is not set. If you need it, please download the AAX SDK!")
- endif()
-endif()
+setupCoreAudioSupport()
+setupAaxSupport()
+
#-------------------------------------------------------------------------------
# Projects
#-------------------------------------------------------------------------------
+set(SDK_IDE_LIBS_FOLDER FOLDER "Libraries")
+#---Add base libraries---------------------------
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)
-if(SMTG_AAX_SDK_PATH)
- add_subdirectory(public.sdk/source/vst/aaxwrapper)
+
+#---Add Wrappers (AU, AAX)-----------------------
+if (SMTG_COREAUDIO_SDK_PATH)
+ add_subdirectory(public.sdk/source/vst/auwrapper)
endif()
-# add VST3 examples (plugins and hosting)
-add_subdirectory(public.sdk/samples/vst)
-add_subdirectory(public.sdk/samples/vst-hosting)
+if(SMTG_AAX_SDK_PATH)
+ add_subdirectory(public.sdk/source/vst/aaxwrapper)
+ set_target_properties(aaxwrapper PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+endif()
#-------------------------------------------------------------------------------
-# VSTGUI Support Library
+# Here is added your own plugins folder location
#-------------------------------------------------------------------------------
-set(VSTGUI_DISABLE_UNITTESTS 1)
-set(VSTGUI_DISABLE_STANDALONE 1)
-set(VSTGUI_DISABLE_STANDALONE_EXAMPLES 1)
-add_subdirectory(vstgui4/vstgui)
-
-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()
+set(SDK_IDE_MYPLUGINS_FOLDER FOLDER "MyPlugIns")
+if(EXISTS ${SMTG_MYPLUGINS_SRC_PATH})
+ set(SMTG_MYPLUGINS_BIN_PATH "${SMTG_MYPLUGINS_SRC_PATH}/build")
+ add_subdirectory(${SMTG_MYPLUGINS_SRC_PATH} ${SMTG_MYPLUGINS_BIN_PATH})
+endif()
+
+
+#---Add VST3 examples (plug-ins and hosting)-----
+if(SMTG_ADD_VST3_PLUGINS_SAMPLES)
+ set(SDK_IDE_PLUGIN_EXAMPLES_FOLDER FOLDER "PlugInExamples")
+ add_subdirectory(public.sdk/samples/vst)
+ add_subdirectory(public.sdk/source/vst/auwrapper/again)
+ add_subdirectory(public.sdk/source/vst/auv3wrapper)
endif()
+# Add hosting examples, it includes the validator
+set(SDK_IDE_HOSTING_EXAMPLES_FOLDER FOLDER "HostingExamples")
+add_subdirectory(public.sdk/samples/vst-hosting)
+
#-------------------------------------------------------------------------------
# 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 vstgui_standalone)
- set_target_properties(vstgui_standalone PROPERTIES ${SDK_IDE_LIBS_FOLDER})
-endif()
-if(SMTG_AAX_SDK_PATH)
- set_target_properties(aaxwrapper PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+
+if(SMTG_ADD_VSTGUI)
+ set_target_properties(vstgui PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+ set_target_properties(vstgui_support PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+ set_target_properties(vstgui_uidescription PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+
+ if(TARGET vstgui_standalone)
+ set_target_properties(vstgui_standalone PROPERTIES ${SDK_IDE_LIBS_FOLDER})
+ endif()
endif()
-if(MAC AND XCODE)
- if(IOS_DEVELOPMENT_TEAM)
- set_target_properties(base_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER})
- endif()
+if(MAC AND XCODE AND SMTG_IOS_DEVELOPMENT_TEAM)
+ set_target_properties(base_ios PROPERTIES ${SDK_IDE_LIBS_FOLDER})
endif()
diff --git a/LICENSE.txt b/LICENSE.txt
@@ -1,6 +1,6 @@
//-----------------------------------------------------------------------------
// LICENSE
-// (c) 2017, Steinberg Media Technologies GmbH, All Rights Reserved
+// (c) 2018, 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/README.md b/README.md
@@ -1,4 +1,15 @@
-# Welcome to VST SDK 3.6.8
+# Welcome to VST SDK 3.6.9
+
+## 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](#How_to_build_VST_3)
+1. [License & Usage guidelines](#license_&_usage_guidelines)
+
+<div id='100'/>
+
## The VST SDK package contains:
- The VST 3 API
- VST 3 Implementation Helper Classes
@@ -6,6 +17,9 @@
- 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.
+
+<div id='200'/>
+
## System requirements
Supported OS:
@@ -21,6 +35,7 @@ Supported IDE:
- Qt Creator
---
+<div id='300'/>
## 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.
@@ -35,6 +50,7 @@ The source code of a VST Plug-in is platform independent, but the delivery syste
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).
---
+<div id='400'/>
## 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:
@@ -67,7 +83,7 @@ A VST 3 Plug-in could access some channel information where it is instantiated:
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.
+VST 3 supports new speaker configurations like Ambisonic, 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).
@@ -89,5 +105,49 @@ Some more features implemented specifically for developers include:
- Validator (small command line Test Host) and Plug-in examples code included
---
+<div id='500'/>
+
+## How to build
+
+### Get the source code from GitHub
+<pre>git clone --recursive https://github.com/steinbergmedia/vst3sdk.git
+</pre>
+
+### Build the examples on Linux
+<pre>
+mkdir build
+cd build
+cmake ../vst3sdk
+make (or alternatively cmake --build .)
+</pre>
+
+### Build the examples on macOS
+<pre>
+mkdir build
+cd build
+cmake -GXcode ../vst3sdk
+xcodebuild (or alternatively cmake --build .)
+</pre>
+
+### Build the examples on Windows
+<pre>
+mkdir build
+cd build
+cmake.exe -G"Visual Studio 15 2017 Win64" ../vst3sdk
+msbuild.exe vstsdk.sln (or alternatively cmake --build .)
+</pre>
+
+### Build using cmake-gui
+<pre>
+* 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
+
+</pre>
+---
+
## 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