From e5200783b7d44ffa844d090d213bfee610475d11 Mon Sep 17 00:00:00 2001 From: Yan Pujante Date: Mon, 25 Nov 2024 11:26:20 -0800 Subject: [PATCH] Upgraded to latest VST3 SDK - could not rebuild on the currently used version of macOS => using latest Jamba/VST3 SDK (3.7.12) - this unfortunately triggers removing support for VST2 --- CMakeLists.txt | 7 +--- README.md | 4 +- fetch_jamba.cmake | 65 +++++++++++++++++---------------- libsndfile.cmake | 40 +++++++------------- r8brain-free-src.cmake | 50 +++++++++---------------- src/cpp/SampleSplitter_VST2.cpp | 21 ----------- 6 files changed, 69 insertions(+), 118 deletions(-) delete mode 100644 src/cpp/SampleSplitter_VST2.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index b201cce..18a7b2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,5 @@ cmake_minimum_required(VERSION 3.19) -# build VST 2? -option(JAMBA_ENABLE_VST2 "Use VST2" ON) - # build Audio Unit? option(JAMBA_ENABLE_AUDIO_UNIT "Enable Audio Unit" ON) @@ -20,8 +17,8 @@ include(fetch_jamba.cmake) include("${JAMBA_ROOT_DIR}/cmake/JambaSetArchitecture.cmake") set(PLUGIN_MAJOR_VERSION 1) -set(PLUGIN_MINOR_VERSION 5) -set(PLUGIN_PATCH_VERSION 1) +set(PLUGIN_MINOR_VERSION 6) +set(PLUGIN_PATCH_VERSION 0) set(PLUGIN_VERSION "${PLUGIN_MAJOR_VERSION}.${PLUGIN_MINOR_VERSION}.${PLUGIN_PATCH_VERSION}") project("vst-sam-spl-64" VERSION "${PLUGIN_VERSION}") diff --git a/README.md b/README.md index da9859b..afd368c 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,10 @@ Check the [SAM-SPL 64](https://pongasoft.com/vst/SAM-SPL64.html) documentation f Release Notes ------------- -### 2024-11-23 - `v1.5.1` +### 2024-11-25 - `v1.6.0` * Fixed a crash when exporting the sample +* Migrated to Jamba 7.1.1 / VST SDK 3.7.12 +* Removed support for VST2 ### 2023-04-27 - `v1.5.0` * Added support for MP3, Flag, Ogg Vorbis (in addition to WAV and AIFF) diff --git a/fetch_jamba.cmake b/fetch_jamba.cmake index 7c57a05..9a5b1d3 100644 --- a/fetch_jamba.cmake +++ b/fetch_jamba.cmake @@ -1,42 +1,43 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.19) include(FetchContent) -if(JAMBA_ROOT_DIR) - # instructs FetchContent to not download or update but use the location instead - set(FETCHCONTENT_SOURCE_DIR_JAMBA ${JAMBA_ROOT_DIR}) -else() - set(FETCHCONTENT_SOURCE_DIR_JAMBA "") -endif() +set(JAMBA_GIT_REPO "https://github.com/pongasoft/jamba" CACHE STRING "Jamba git repository url") +set(JAMBA_GIT_TAG v7.1.1 CACHE STRING "Jamba git tag") +set(JAMBA_DOWNLOAD_URL "${JAMBA_GIT_REPO}/archive/refs/tags/v7.1.1.zip" CACHE STRING "Jamba download url") +set(JAMBA_DOWNLOAD_URL_HASH "SHA256=16cadf1040e84007db6469a062675d0ba66e5e46d0b11cad46859b10109fc96a" CACHE STRING "Jamba download url hash") -set(JAMBA_GIT_REPO "https://github.com/pongasoft/jamba" CACHE STRING "Jamba git repository url" FORCE) -set(JAMBA_GIT_TAG v6.2.1 CACHE STRING "Jamba git tag" FORCE) - -FetchContent_Declare(jamba - GIT_REPOSITORY ${JAMBA_GIT_REPO} - GIT_TAG ${JAMBA_GIT_TAG} - GIT_CONFIG advice.detachedHead=false - GIT_SHALLOW true - SOURCE_DIR "${CMAKE_BINARY_DIR}/jamba" +if(JAMBA_ROOT_DIR) + message(STATUS "Using jamba from local ${JAMBA_ROOT_DIR}") + FetchContent_Populate(jamba + QUIET + SOURCE_DIR "${JAMBA_ROOT_DIR}" BINARY_DIR "${CMAKE_BINARY_DIR}/jamba-build" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - -FetchContent_GetProperties(jamba) - -if(NOT jamba_POPULATED) - - if(FETCHCONTENT_SOURCE_DIR_JAMBA) - message(STATUS "Using jamba from local ${FETCHCONTENT_SOURCE_DIR_JAMBA}") + ) +else() + if(JAMBA_DOWNLOAD_URL STREQUAL "" OR JAMBA_DOWNLOAD_URL_HASH STREQUAL "") + message(STATUS "Fetching jamba from ${JAMBA_GIT_REPO}/tree/${JAMBA_GIT_TAG}") + FetchContent_Populate(jamba + QUIET + GIT_REPOSITORY ${JAMBA_GIT_REPO} + GIT_TAG ${JAMBA_GIT_TAG} + GIT_CONFIG advice.detachedHead=false + GIT_SHALLOW true + SOURCE_DIR "${CMAKE_BINARY_DIR}/jamba" + BINARY_DIR "${CMAKE_BINARY_DIR}/jamba-build" + ) else() - message(STATUS "Fetching jamba ${JAMBA_GIT_REPO}/tree/${JAMBA_GIT_TAG}") + message(STATUS "Fetching jamba from ${JAMBA_DOWNLOAD_URL}") + FetchContent_Populate(jamba + QUIET + URL "${JAMBA_DOWNLOAD_URL}" + URL_HASH "${JAMBA_DOWNLOAD_URL_HASH}" + DOWNLOAD_EXTRACT_TIMESTAMP true + SOURCE_DIR "${CMAKE_BINARY_DIR}/jamba" + BINARY_DIR "${CMAKE_BINARY_DIR}/jamba-build" + ) endif() - - FetchContent_Populate(jamba) - endif() set(JAMBA_ROOT_DIR ${jamba_SOURCE_DIR}) + diff --git a/libsndfile.cmake b/libsndfile.cmake index d36fee0..cabf1ec 100644 --- a/libsndfile.cmake +++ b/libsndfile.cmake @@ -2,41 +2,27 @@ cmake_minimum_required(VERSION 3.12) include(FetchContent) -if(LIBSNDFILE_ROOT_DIR) - # instructs FetchContent to not download or update but use the location instead - set(FETCHCONTENT_SOURCE_DIR_LIBSNDFILE ${LIBSNDFILE_ROOT_DIR}) -else() - set(FETCHCONTENT_SOURCE_DIR_LIBSNDFILE "") -endif() - set(LIBSNDFILE_GIT_REPO "https://github.com/erikd/libsndfile" CACHE STRING "libsndfile git repository url" FORCE) set(LIBSNDFILE_GIT_TAG c11deaa04ec84161996824061f6d705970972e2e CACHE STRING "libsndfile git tag" FORCE) -FetchContent_Declare(libsndfile +if(LIBSNDFILE_ROOT_DIR) + message(STATUS "Using libsndfile from local ${LIBSNDFILE_ROOT_DIR}") + FetchContent_Populate(libsndfile + QUIET + SOURCE_DIR "${LIBSNDFILE_ROOT_DIR}" + BINARY_DIR "${CMAKE_BINARY_DIR}/libsndfile-build" + ) +else() + message(STATUS "Fetching libsndfile from ${LIBSNDFILE_GIT_REPO}/tree/${LIBSNDFILE_GIT_TAG}") + FetchContent_Populate(libsndfile + QUIET GIT_REPOSITORY ${LIBSNDFILE_GIT_REPO} GIT_TAG ${LIBSNDFILE_GIT_TAG} GIT_CONFIG advice.detachedHead=false -# GIT_SHALLOW true + # GIT_SHALLOW true SOURCE_DIR "${CMAKE_BINARY_DIR}/libsndfile" BINARY_DIR "${CMAKE_BINARY_DIR}/libsndfile-build" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - -FetchContent_GetProperties(libsndfile) - -if(NOT libsndfile_POPULATED) - - if(FETCHCONTENT_SOURCE_DIR_LIBSNDFILE) - message(STATUS "Using libsndfile from local ${FETCHCONTENT_SOURCE_DIR_LIBSNDFILE}") - else() - message(STATUS "Fetching libsndfile ${LIBSNDFILE_GIT_REPO}/tree/${LIBSNDFILE_GIT_TAG}") - endif() - - FetchContent_Populate(libsndfile) - + ) endif() set(LIBSNDFILE_ROOT_DIR ${libsndfile_SOURCE_DIR}) diff --git a/r8brain-free-src.cmake b/r8brain-free-src.cmake index 589fb32..6f492fa 100644 --- a/r8brain-free-src.cmake +++ b/r8brain-free-src.cmake @@ -2,43 +2,29 @@ cmake_minimum_required(VERSION 3.12) include(FetchContent) -if(R8BRAIN-FREE-SRC_ROOT_DIR) - # instructs FetchContent to not download or update but use the location instead - set(FETCHCONTENT_SOURCE_DIR_R8BRAIN-FREE-SRC ${R8BRAIN-FREE-SRC_ROOT_DIR}) -else() - set(FETCHCONTENT_SOURCE_DIR_R8BRAIN-FREE-SRC "") -endif() - set(R8BRAIN-FREE-SRC_GIT_REPO "https://github.com/avaneev/r8brain-free-src" CACHE STRING "r8brain-free-src git repository url" FORCE) set(R8BRAIN-FREE-SRC_GIT_TAG 6453d7756c1449afda66cc98a9b406006900fc13 CACHE STRING "r8brain-free-src git tag" FORCE) -FetchContent_Declare(r8brain-free-src - GIT_REPOSITORY ${R8BRAIN-FREE-SRC_GIT_REPO} - GIT_TAG ${R8BRAIN-FREE-SRC_GIT_TAG} - GIT_CONFIG advice.detachedHead=false - GIT_SHALLOW false - SOURCE_DIR "${CMAKE_BINARY_DIR}/r8brain-free-src" - BINARY_DIR "${CMAKE_BINARY_DIR}/r8brain-free-src-build" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - -FetchContent_GetProperties(r8brain-free-src) - -if(NOT r8brain-free-src_POPULATED) - - if(FETCHCONTENT_SOURCE_DIR_R8BRAIN-FREE-SRC) - message(STATUS "Using r8brain-free-src from local ${FETCHCONTENT_SOURCE_DIR_R8BRAIN-FREE-SRC}") - else() - message(STATUS "Fetching r8brain-free-src ${R8BRAIN-FREE-SRC_GIT_REPO}/tree/${R8BRAIN-FREE-SRC_GIT_TAG}") - endif() - - FetchContent_Populate(r8brain-free-src) - +if(R8BRAIN-FREE-SRC_ROOT_DIR) + message(STATUS "Using r8brain-free-src from local ${R8BRAIN-FREE-SRC_ROOT_DIR}") + FetchContent_Populate(r8brain-free-src + QUIET + SOURCE_DIR "${R8BRAIN-FREE-SRC_ROOT_DIR}" + BINARY_DIR "${CMAKE_BINARY_DIR}/r8brain-free-src-build" + ) +else() + message(STATUS "Fetching r8brain-free-src ${R8BRAIN-FREE-SRC_GIT_REPO}/tree/${R8BRAIN-FREE-SRC_GIT_TAG}") + FetchContent_Populate(r8brain-free-src + GIT_REPOSITORY ${R8BRAIN-FREE-SRC_GIT_REPO} + GIT_TAG ${R8BRAIN-FREE-SRC_GIT_TAG} + GIT_CONFIG advice.detachedHead=false + GIT_SHALLOW false + SOURCE_DIR "${CMAKE_BINARY_DIR}/r8brain-free-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/r8brain-free-src-build" + ) endif() + # No CMakeLists.txt included => creating one file(WRITE "${r8brain-free-src_SOURCE_DIR}/CMakeLists.txt" [=[ diff --git a/src/cpp/SampleSplitter_VST2.cpp b/src/cpp/SampleSplitter_VST2.cpp deleted file mode 100644 index c0d3ad2..0000000 --- a/src/cpp/SampleSplitter_VST2.cpp +++ /dev/null @@ -1,21 +0,0 @@ -//------------------------------------------------------------------------------------------------------------ -// This file contains the standard boilerplate code that VST2 requires to instantiate the plugin -// components: it creates an adapter which wraps the VST3 plugin to adapt its API to the VST2 world. -// -// Note that VST2 requires a 4 letter code that needs to be registered with Steinberg => -// http://service.steinberg.de/databases/plugin.nsf/plugIn?openForm -// -// Steinberg is planning to officially kill VST2 in October 2018 => -// https://sdk.steinberg.net/viewtopic.php?f=6&t=557 -//------------------------------------------------------------------------------------------------------------ -#include -#include "SampleSplitterCIDs.h" - -//------------------------------------------------------------------------ -::AudioEffect *createEffectInstance(audioMasterCallback audioMaster) -{ - return Steinberg::Vst::Vst2Wrapper::create(GetPluginFactory(), - pongasoft::VST::SampleSplitter::SampleSplitterProcessorUID, - 'uhri', - audioMaster); -}