commit
39f56f2d07
9 changed files with 111 additions and 4 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -20,6 +20,7 @@ clients/sfizz_jack
|
||||||
clients/sfzprint
|
clients/sfzprint
|
||||||
|
|
||||||
/plugins/vst/download/
|
/plugins/vst/download/
|
||||||
|
/plugins/vst/external/vstsdk2.4/
|
||||||
|
|
||||||
/plugins/editor/external/fluentui-system-icons/
|
/plugins/editor/external/fluentui-system-icons/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ option_ex (SFIZZ_LV2 "Enable LV2 plug-in build" ON)
|
||||||
option_ex (SFIZZ_LV2_UI "Enable LV2 plug-in user interface" ON)
|
option_ex (SFIZZ_LV2_UI "Enable LV2 plug-in user interface" ON)
|
||||||
option_ex (SFIZZ_VST "Enable VST plug-in build" ON)
|
option_ex (SFIZZ_VST "Enable VST plug-in build" ON)
|
||||||
option_ex (SFIZZ_AU "Enable AU plug-in build" APPLE)
|
option_ex (SFIZZ_AU "Enable AU plug-in build" APPLE)
|
||||||
|
option_ex (SFIZZ_VST2 "Enable VST2 plug-in build (unsupported)" OFF)
|
||||||
option_ex (SFIZZ_BENCHMARKS "Enable benchmarks build" OFF)
|
option_ex (SFIZZ_BENCHMARKS "Enable benchmarks build" OFF)
|
||||||
option_ex (SFIZZ_TESTS "Enable tests build" OFF)
|
option_ex (SFIZZ_TESTS "Enable tests build" OFF)
|
||||||
option_ex (SFIZZ_DEMOS "Enable feature demos build" OFF)
|
option_ex (SFIZZ_DEMOS "Enable feature demos build" OFF)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
|
||||||
# Set C++ compatibility level
|
# Set C++ compatibility level
|
||||||
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" AND CMAKE_CXX_STANDARD LESS 17)
|
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" AND CMAKE_CXX_STANDARD LESS 17)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
elseif((SFIZZ_LV2_UI OR SFIZZ_VST OR SFIZZ_AU) AND CMAKE_CXX_STANDARD LESS 14)
|
elseif((SFIZZ_LV2_UI OR SFIZZ_VST OR SFIZZ_AU OR SFIZZ_VST2) AND CMAKE_CXX_STANDARD LESS 14)
|
||||||
# if the UI is part of the build, make it 14
|
# if the UI is part of the build, make it 14
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ add_library(sfizz-vst3-core STATIC
|
||||||
SfizzVstParameters.h
|
SfizzVstParameters.h
|
||||||
SfizzVstUpdates.h
|
SfizzVstUpdates.h
|
||||||
SfizzVstUpdates.cpp
|
SfizzVstUpdates.cpp
|
||||||
|
SfizzVstIDs.h
|
||||||
SfizzFileScan.h
|
SfizzFileScan.h
|
||||||
SfizzFileScan.cpp
|
SfizzFileScan.cpp
|
||||||
SfizzForeignPaths.h
|
SfizzForeignPaths.h
|
||||||
|
|
@ -65,13 +66,14 @@ if(APPLE)
|
||||||
endif()
|
endif()
|
||||||
target_include_directories(sfizz-vst3-core
|
target_include_directories(sfizz-vst3-core
|
||||||
PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
|
PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
target_link_libraries(sfizz-vst3-core PRIVATE
|
target_link_libraries(sfizz-vst3-core
|
||||||
PRIVATE sfizz::sfizz
|
PRIVATE sfizz::sfizz
|
||||||
PRIVATE sfizz::import
|
PRIVATE sfizz::import
|
||||||
PRIVATE sfizz::editor
|
PRIVATE sfizz::editor
|
||||||
PRIVATE sfizz::plugins-common
|
PRIVATE sfizz::plugins-common
|
||||||
PRIVATE sfizz::pugixml sfizz::filesystem
|
PRIVATE sfizz::pugixml sfizz::filesystem
|
||||||
PRIVATE sfizz::ring-buffer
|
PRIVATE sfizz::ring-buffer
|
||||||
|
PRIVATE absl::strings absl::optional absl::container_common
|
||||||
vst3sdk
|
vst3sdk
|
||||||
vst3sdk_vstgui)
|
vst3sdk_vstgui)
|
||||||
gw_target_warn(sfizz-vst3-core PRIVATE
|
gw_target_warn(sfizz-vst3-core PRIVATE
|
||||||
|
|
@ -309,3 +311,72 @@ elseif(SFIZZ_AU)
|
||||||
COMPONENT "au")
|
COMPONENT "au")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# --- VST2 wrapper --- #
|
||||||
|
|
||||||
|
if(SFIZZ_VST2)
|
||||||
|
set(VST2PLUGIN_PRJ_NAME "${PROJECT_NAME}_vst2")
|
||||||
|
set(VST2PLUGIN_BUNDLE_NAME "${PROJECT_NAME}.vst2")
|
||||||
|
|
||||||
|
set(VST2SDK_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/vstsdk2.4")
|
||||||
|
set(VST2WRAPPER_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/VST_SDK/VST3_SDK/public.sdk/source/vst/vst2wrapper")
|
||||||
|
|
||||||
|
if(NOT EXISTS "${VST2SDK_BASEDIR}/pluginterfaces/vst2.x/aeffect.h")
|
||||||
|
message(FATAL_ERROR "VST SDK 2.4 is missing. Make it available in the following folder: ${VST2SDK_BASEDIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(${VST2PLUGIN_PRJ_NAME} MODULE
|
||||||
|
"Vst2PluginFactory.cpp"
|
||||||
|
"${VST2WRAPPER_BASEDIR}/vst2wrapper.cpp"
|
||||||
|
"${VST2WRAPPER_BASEDIR}/../basewrapper/basewrapper.cpp"
|
||||||
|
"${VST2SDK_BASEDIR}/public.sdk/source/vst2.x/audioeffect.cpp"
|
||||||
|
"${VST2SDK_BASEDIR}/public.sdk/source/vst2.x/audioeffectx.cpp")
|
||||||
|
target_include_directories(${VST2PLUGIN_PRJ_NAME} PRIVATE
|
||||||
|
"${VST2SDK_BASEDIR}")
|
||||||
|
|
||||||
|
if(NOT WIN32)
|
||||||
|
target_compile_definitions(${VST2PLUGIN_PRJ_NAME} PRIVATE "__cdecl=")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(${VST2PLUGIN_PRJ_NAME}
|
||||||
|
PRIVATE sfizz-vst3-core)
|
||||||
|
set_target_properties(${VST2PLUGIN_PRJ_NAME} PROPERTIES
|
||||||
|
OUTPUT_NAME "${PROJECT_NAME}"
|
||||||
|
PREFIX "")
|
||||||
|
|
||||||
|
plugin_add_vst3sdk(${VST2PLUGIN_PRJ_NAME})
|
||||||
|
plugin_add_vstgui(${VST2PLUGIN_PRJ_NAME})
|
||||||
|
|
||||||
|
# Add VST hosting classes
|
||||||
|
target_link_libraries(${VST2PLUGIN_PRJ_NAME} PRIVATE vst3sdk_hosting)
|
||||||
|
|
||||||
|
sfizz_enable_lto_if_needed(${VST2PLUGIN_PRJ_NAME})
|
||||||
|
|
||||||
|
# Create the bundle
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${PROJECT_BINARY_DIR}/${VST2PLUGIN_BUNDLE_NAME}/Contents/Resources")
|
||||||
|
copy_editor_resources(
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/../editor/resources"
|
||||||
|
"${PROJECT_BINARY_DIR}/${VST2PLUGIN_BUNDLE_NAME}/Contents/Resources")
|
||||||
|
set_target_properties(${VST2PLUGIN_PRJ_NAME} PROPERTIES
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VST2PLUGIN_BUNDLE_NAME}/Contents/Binary/$<0:>")
|
||||||
|
|
||||||
|
file(COPY "gpl-3.0.txt"
|
||||||
|
DESTINATION "${PROJECT_BINARY_DIR}/${VST2PLUGIN_BUNDLE_NAME}")
|
||||||
|
|
||||||
|
if(MINGW)
|
||||||
|
set_target_properties(${VST2PLUGIN_PRJ_NAME} PROPERTIES LINK_FLAGS "-static")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
if(VST2PLUGIN_INSTALL_DIR)
|
||||||
|
install(DIRECTORY "${PROJECT_BINARY_DIR}/${VST2PLUGIN_BUNDLE_NAME}"
|
||||||
|
DESTINATION "${VST2PLUGIN_INSTALL_DIR}"
|
||||||
|
COMPONENT "vst2")
|
||||||
|
if(APPLE)
|
||||||
|
bundle_dylibs(vst2
|
||||||
|
"${VST2PLUGIN_INSTALL_DIR}/${VST2PLUGIN_BUNDLE_NAME}/Contents/Binary/sfizz.${CMAKE_SHARED_MODULE_SUFFIX}"
|
||||||
|
COMPONENT "vst2")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#include "SfizzVstController.h"
|
#include "SfizzVstController.h"
|
||||||
#include "SfizzVstEditor.h"
|
#include "SfizzVstEditor.h"
|
||||||
#include "SfizzVstParameters.h"
|
#include "SfizzVstParameters.h"
|
||||||
|
#include "SfizzVstIDs.h"
|
||||||
#include "base/source/fstreamer.h"
|
#include "base/source/fstreamer.h"
|
||||||
#include "base/source/updatehandler.h"
|
#include "base/source/updatehandler.h"
|
||||||
|
|
||||||
|
|
@ -337,4 +338,4 @@ FUnknown* SfizzVstController::createInstance(void*)
|
||||||
Note(jpc) Generated at random with uuidgen.
|
Note(jpc) Generated at random with uuidgen.
|
||||||
Can't find docs on it... maybe it's to register somewhere?
|
Can't find docs on it... maybe it's to register somewhere?
|
||||||
*/
|
*/
|
||||||
FUID SfizzVstController::cid(0x7129736c, 0xbc784134, 0xbb899d56, 0x2ebafe4f);
|
FUID SfizzVstController::cid = SfizzVstController_cid;
|
||||||
|
|
|
||||||
13
plugins/vst/SfizzVstIDs.h
Normal file
13
plugins/vst/SfizzVstIDs.h
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
// SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
|
||||||
|
// This code is part of the sfizz library and is licensed under a BSD 2-clause
|
||||||
|
// license. You should have receive a LICENSE.md file along with the code.
|
||||||
|
// If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include <pluginterfaces/base/funknown.h>
|
||||||
|
|
||||||
|
#define SfizzVstProcessor_cid \
|
||||||
|
Steinberg::FUID(0xe8fab718, 0x15ed46e3, 0x8b598310, 0x1e12993f)
|
||||||
|
#define SfizzVstController_cid \
|
||||||
|
Steinberg::FUID(0x7129736c, 0xbc784134, 0xbb899d56, 0x2ebafe4f)
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#include "SfizzVstController.h"
|
#include "SfizzVstController.h"
|
||||||
#include "SfizzVstState.h"
|
#include "SfizzVstState.h"
|
||||||
#include "SfizzVstParameters.h"
|
#include "SfizzVstParameters.h"
|
||||||
|
#include "SfizzVstIDs.h"
|
||||||
#include "SfizzFileScan.h"
|
#include "SfizzFileScan.h"
|
||||||
#include "sfizz/import/ForeignInstrument.h"
|
#include "sfizz/import/ForeignInstrument.h"
|
||||||
#include "plugin/InstrumentDescription.h"
|
#include "plugin/InstrumentDescription.h"
|
||||||
|
|
@ -866,4 +867,4 @@ bool SfizzVstProcessor::writeMessage(Ring_Buffer& fifo, const char* type, const
|
||||||
Note(jpc) Generated at random with uuidgen.
|
Note(jpc) Generated at random with uuidgen.
|
||||||
Can't find docs on it... maybe it's to register somewhere?
|
Can't find docs on it... maybe it's to register somewhere?
|
||||||
*/
|
*/
|
||||||
FUID SfizzVstProcessor::cid(0xe8fab718, 0x15ed46e3, 0x8b598310, 0x1e12993f);
|
FUID SfizzVstProcessor::cid = SfizzVstProcessor_cid;
|
||||||
|
|
|
||||||
18
plugins/vst/Vst2PluginFactory.cpp
Normal file
18
plugins/vst/Vst2PluginFactory.cpp
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
// SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
|
||||||
|
// This code is part of the sfizz library and is licensed under a BSD 2-clause
|
||||||
|
// license. You should have receive a LICENSE.md file along with the code.
|
||||||
|
// If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz
|
||||||
|
|
||||||
|
#include "SfizzVstIDs.h"
|
||||||
|
#include "public.sdk/source/vst/vst2wrapper/vst2wrapper.h"
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------
|
||||||
|
::AudioEffect* createEffectInstance(audioMasterCallback audioMaster)
|
||||||
|
{
|
||||||
|
return Steinberg::Vst::Vst2Wrapper::create(
|
||||||
|
GetPluginFactory(),
|
||||||
|
SfizzVstProcessor_cid,
|
||||||
|
'Sfzz',
|
||||||
|
audioMaster);
|
||||||
|
}
|
||||||
|
|
@ -18,6 +18,7 @@ add_library(vst3sdk STATIC EXCLUDE_FROM_ALL
|
||||||
"${VST3SDK_BASEDIR}/pluginterfaces/base/funknown.cpp"
|
"${VST3SDK_BASEDIR}/pluginterfaces/base/funknown.cpp"
|
||||||
"${VST3SDK_BASEDIR}/pluginterfaces/base/ustring.cpp"
|
"${VST3SDK_BASEDIR}/pluginterfaces/base/ustring.cpp"
|
||||||
"${VST3SDK_BASEDIR}/public.sdk/source/common/commoniids.cpp"
|
"${VST3SDK_BASEDIR}/public.sdk/source/common/commoniids.cpp"
|
||||||
|
"${VST3SDK_BASEDIR}/public.sdk/source/common/memorystream.cpp"
|
||||||
"${VST3SDK_BASEDIR}/public.sdk/source/common/pluginview.cpp"
|
"${VST3SDK_BASEDIR}/public.sdk/source/common/pluginview.cpp"
|
||||||
"${VST3SDK_BASEDIR}/public.sdk/source/main/pluginfactory.cpp"
|
"${VST3SDK_BASEDIR}/public.sdk/source/main/pluginfactory.cpp"
|
||||||
"${VST3SDK_BASEDIR}/public.sdk/source/vst/vstaudioeffect.cpp"
|
"${VST3SDK_BASEDIR}/public.sdk/source/vst/vstaudioeffect.cpp"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue