From 540dadf0d4923f0380c62c49fe960874d9b51d94 Mon Sep 17 00:00:00 2001 From: CV funk Date: Sun, 19 May 2024 09:57:30 +0200 Subject: [PATCH 01/15] CV Funk v2.0.5 (#664) * Update CV funk to 2.0.3 Added Ouros stereo phase injection oscillator Numerous small buxfixes to other modules * CVfunk bugfix Fixed a bug reported by Windows10 users where switching circ/star modes in PentaSequencer would cause a crash. * CV funk v2.0.4 Added PressedDuck, ducking compressing saturating stereo mixer. Panel updates, CPU improvements. * Update CV funk to 2.0.5 Version 2.0.5 Added Flower Patch visualizer module. Fixed stereo normal on Pressed Duck Sidechain input. Added full-stereo processing of compression to Pressed Duck. Added stereo lights to all ring lights of Pressed Duck. Panel update to PentaSequencer * CV funk 2.0.5 edit: added self-illuminating layers --- plugins/CVfunk | 2 +- plugins/plugins.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/CVfunk b/plugins/CVfunk index d0abf0e..b158d0b 160000 --- a/plugins/CVfunk +++ b/plugins/CVfunk @@ -1 +1 @@ -Subproject commit d0abf0ea9c7847f61cc280a18c3d01ad4e0b5100 +Subproject commit b158d0bfe48cf685e7b4ff8e406d7e731f973eac diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index c4ce74e..5caa03b 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -1978,6 +1978,7 @@ static void initStatic__CVfunk() p->addModel(modelMagnets); p->addModel(modelOuros); p->addModel(modelPressedDuck); + p->addModel(modelFlowerPatch); #undef modelSteps } } From 2910b8ee4e611b3f70fc9a44830891d453a29e26 Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 23 May 2024 14:30:18 +0200 Subject: [PATCH 02/15] Update to latest carla Signed-off-by: falkTX --- carla | 2 +- deps/Makefile | 4 ---- dpf | 2 +- plugins/Cardinal/src/AIDA-X.cpp | 1 + plugins/Cardinal/src/Ildaeil.cpp | 8 ++++---- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/carla b/carla index 3c7d0e7..95ad25d 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 3c7d0e7b914d38a32b733cc5ced0b5696d2f9a03 +Subproject commit 95ad25d81d1ba53a205f9c758aa51ff91d5dabaf diff --git a/deps/Makefile b/deps/Makefile index a5bd941..29cca40 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -266,9 +266,6 @@ ifeq ($(CPU_I386),true) SURGE_CXX_FLAGS += -D__sigemptyset=sigemptyset endif -# use custom JUCE from DISTRHO and Carla -SURGE_CXX_FLAGS += -I$(abspath ../carla/source/modules) - # possibly use fftw? # ifeq ($(shell $(PKG_CONFIG) --exists fftw3 fftw3f && echo true),true) # SURGE_CXX_FLAGS += -DJUCE_DSP_USE_STATIC_FFTW=1 @@ -298,7 +295,6 @@ $(SURGE_DEP_PATH)/Makefile: $(SURGE_SRC_PATH)/CMakeLists.txt -DSURGE_SKIP_JUCE_FOR_RACK=TRUE \ -DSURGE_SKIP_LUA=TRUE \ -DSURGE_SKIP_ODDSOUND_MTS=TRUE \ - -DSURGE_JUCE_PATH=$(abspath ../carla/source) \ -DSURGE_SIMDE_PATH=$(abspath ../src/Rack/dep/simde) \ $(SURGE_SRC_PATH) diff --git a/dpf b/dpf index 01aca76..feaa5d3 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 01aca7649c1a3a5ee20a47c5ecd3cb2e29395f89 +Subproject commit feaa5d35709e669c1212b8012078586b3b622567 diff --git a/plugins/Cardinal/src/AIDA-X.cpp b/plugins/Cardinal/src/AIDA-X.cpp index 1c9f889..af1dc7a 100644 --- a/plugins/Cardinal/src/AIDA-X.cpp +++ b/plugins/Cardinal/src/AIDA-X.cpp @@ -439,6 +439,7 @@ struct AidaPluginModule : Module { model = newmodel.release(); // if processing, wait for process cycle to complete + using DISTRHO_NAMESPACE::d_msleep; while (oldmodel != nullptr && activeModel.load()) d_msleep(1); diff --git a/plugins/Cardinal/src/Ildaeil.cpp b/plugins/Cardinal/src/Ildaeil.cpp index 9ed7212..98f568e 100644 --- a/plugins/Cardinal/src/Ildaeil.cpp +++ b/plugins/Cardinal/src/Ildaeil.cpp @@ -629,11 +629,11 @@ struct IldaeilModule : Module { CarlaEngine* const engine = carla_get_engine_from_handle(fCarlaHostHandle); - water::XmlDocument xml(projectState); + water::XmlDocument xmlState{water::String(projectState)}; { const MutexLocker cml(sPluginInfoLoadMutex); - engine->loadProjectInternal(xml, true); + engine->loadProjectInternal(xmlState, true); } projectLoadedFromDSP(fUI); @@ -1664,7 +1664,7 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Runner { // save plugin info into cache if (sha1sum != nullptr) { - const water::String configDir(asset::config("Ildaeil")); + const String configDir(asset::config("Ildaeil").c_str()); const water::File cacheFile(configDir + CARLA_OS_SEP_STR "cache" CARLA_OS_SEP_STR + sha1sum); if (cacheFile.create().ok()) @@ -1755,7 +1755,7 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Runner { if (sha1sum == nullptr) return false; - const water::String configDir(asset::config("Ildaeil")); + const String configDir(asset::config("Ildaeil").c_str()); const water::File cacheFile(configDir + CARLA_OS_SEP_STR "cache" CARLA_OS_SEP_STR + sha1sum); if (cacheFile.existsAsFile()) From c0ac8301f86ca18f7d8dad5522bb32024c4dbe21 Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 23 May 2024 16:33:46 +0200 Subject: [PATCH 03/15] Fix macOS build after carla updates Signed-off-by: falkTX --- carla | 2 +- dpf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/carla b/carla index 95ad25d..4def5cc 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 95ad25d81d1ba53a205f9c758aa51ff91d5dabaf +Subproject commit 4def5cc1be22abf2be8fb71ab8788c2e51b140e4 diff --git a/dpf b/dpf index feaa5d3..8ac24f8 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit feaa5d35709e669c1212b8012078586b3b622567 +Subproject commit 8ac24f80446a0f3d48365e96a31f12fd201fd3ff From f43fd83580785eefd39555526650b5836ed4988a Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 23 May 2024 12:17:03 +0200 Subject: [PATCH 04/15] mini build no longer builds full set of plugins Signed-off-by: falkTX --- Makefile | 8 +++++++- plugins/Makefile | 31 ++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 6acfa09..2cf6ed6 100644 --- a/Makefile +++ b/Makefile @@ -192,6 +192,12 @@ plugins: deps resources: $(MAKE) resources -C plugins +mini-plugins: deps + $(MAKE) mini -C plugins + +mini-resources: + $(MAKE) mini-resources -C plugins + ifneq ($(CROSS_COMPILING),true) gen: cardinal resources dpf/utils/lv2_ttl_generator @$(CURDIR)/dpf/utils/generate-ttl.sh @@ -211,7 +217,7 @@ jack: carla deps dgl plugins resources native: carla deps dgl plugins resources $(MAKE) native -C src $(CARLA_EXTRA_ARGS) -mini: carla deps dgl plugins resources +mini: carla deps dgl mini-plugins mini-resources $(MAKE) mini -C src $(CARLA_EXTRA_ARGS) clap: carla deps dgl plugins resources diff --git a/plugins/Makefile b/plugins/Makefile index 8719cc1..68a36ef 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -1405,6 +1405,11 @@ ifneq ($(HEADLESS),true) $(MAKE) HEADLESS=true plugins-mini-headless.a endif +mini: plugins-mini$(TARGET_SUFFIX).a +ifneq ($(HEADLESS),true) + $(MAKE) HEADLESS=true plugins-mini-headless.a +endif + clean: rm -f *.a rm -rf $(BUILD_DIR) @@ -1793,31 +1798,37 @@ MINIRESOURCE_FILES += surgext/res/xt/glyphs/lt_7.svg # MOD builds only have LV2 main and FX variant ifeq ($(MOD_BUILD),true) -LV2_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.lv2/resources/PluginManifests/%.json) +MINI_RESOURCES = $(MINIPLUGIN_LIST:%=../bin/CardinalMini.lv2/resources/PluginManifests/%.json) +MINI_RESOURCES += $(MINIRESOURCE_FILES:%=../bin/CardinalMini.lv2/resources/%) + +LV2_RESOURCES = $(MINI_RESOURCES) +LV2_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.lv2/resources/PluginManifests/%.json) LV2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalFX.lv2/resources/PluginManifests/%.json) -LV2_RESOURCES += $(MINIPLUGIN_LIST:%=../bin/CardinalMini.lv2/resources/PluginManifests/%.json) LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/Cardinal.lv2/resources/%) LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.lv2/resources/%) -LV2_RESOURCES += $(MINIRESOURCE_FILES:%=../bin/CardinalMini.lv2/resources/%) # MOD builds only have LV2 FX variant for now else ifeq ($(WASM),true) -LV2_RESOURCES = $(PLUGIN_LIST:%=../bin/CardinalNative.lv2/resources/PluginManifests/%.json) -LV2_RESOURCES += $(MINIPLUGIN_LIST:%=../bin/CardinalMini.lv2/resources/PluginManifests/%.json) +MINI_RESOURCES = $(MINIPLUGIN_LIST:%=../bin/CardinalMini.lv2/resources/PluginManifests/%.json) +MINI_RESOURCES += $(MINIRESOURCE_FILES:%=../bin/CardinalMini.lv2/resources/%) + +LV2_RESOURCES = $(MINI_RESOURCES) +LV2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalNative.lv2/resources/PluginManifests/%.json) LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalNative.lv2/resources/%) -LV2_RESOURCES += $(MINIRESOURCE_FILES:%=../bin/CardinalMini.lv2/resources/%) else -LV2_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.lv2/resources/PluginManifests/%.json) -LV2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalFX.lv2/resources/PluginManifests/%.json) LV2_RESOURCES += $(MINIPLUGIN_LIST:%=../bin/CardinalMini.lv2/resources/PluginManifests/%.json) +LV2_RESOURCES += $(MINIRESOURCE_FILES:%=../bin/CardinalMini.lv2/resources/%) + +LV2_RESOURCES = $(MINI_RESOURCES) +LV2_RESOURCES += $(PLUGIN_LIST:%=../bin/Cardinal.lv2/resources/PluginManifests/%.json) +LV2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalFX.lv2/resources/PluginManifests/%.json) LV2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalSynth.lv2/resources/PluginManifests/%.json) LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/Cardinal.lv2/resources/%) LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.lv2/resources/%) LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalSynth.lv2/resources/%) -LV2_RESOURCES += $(MINIRESOURCE_FILES:%=../bin/CardinalMini.lv2/resources/%) ifeq ($(MACOS),true) VST2_RESOURCES = $(PLUGIN_LIST:%=../bin/CardinalFX.vst/Contents/Resources/PluginManifests/%.json) @@ -1848,6 +1859,8 @@ endif resources: $(JACK_RESOURCES) $(LV2_RESOURCES) $(VST2_RESOURCES) $(VST3_RESOURCES) $(CLAP_RESOURCES) +mini-resources: $(MINI_RESOURCES) + ../bin/Cardinal.lv2/resources/%: % -@mkdir -p "$(shell dirname $@)" $(SILENT)ln -sf $(abspath $<) $@ From b1bedc8956f903bf409d93d965039eb58862c6a0 Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 23 May 2024 19:37:56 +0200 Subject: [PATCH 05/15] Fix showing AU GUI, leave details for a later main variant Signed-off-by: falkTX --- Makefile | 3 +++ dpf | 2 +- src/Cardinal/DistrhoPluginInfo.h | 1 + src/CardinalPlugin.cpp | 23 +++++++++++++++++++++-- src/CardinalUI.cpp | 8 ++------ src/Makefile | 4 ++++ src/Makefile.cardinal.mk | 2 +- 7 files changed, 33 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 2cf6ed6..a820d8a 100644 --- a/Makefile +++ b/Makefile @@ -220,6 +220,9 @@ native: carla deps dgl plugins resources mini: carla deps dgl mini-plugins mini-resources $(MAKE) mini -C src $(CARLA_EXTRA_ARGS) +au: carla deps dgl plugins resources + $(MAKE) au -C src $(CARLA_EXTRA_ARGS) + clap: carla deps dgl plugins resources $(MAKE) clap -C src $(CARLA_EXTRA_ARGS) diff --git a/dpf b/dpf index 8ac24f8..32ba6c1 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 8ac24f80446a0f3d48365e96a31f12fd201fd3ff +Subproject commit 32ba6c1cb418e6a1d6d97c979e76c8ecab46fbc7 diff --git a/src/Cardinal/DistrhoPluginInfo.h b/src/Cardinal/DistrhoPluginInfo.h index 18afb2b..200488a 100644 --- a/src/Cardinal/DistrhoPluginInfo.h +++ b/src/Cardinal/DistrhoPluginInfo.h @@ -36,6 +36,7 @@ #define DISTRHO_PLUGIN_AU_TYPE aumf #define DISTRHO_PLUGIN_BRAND_ID Dstr #define DISTRHO_PLUGIN_UNIQUE_ID DcnM +#define DISTRHO_PLUGIN_EXTRA_IO { CARDINAL_NUM_AUDIO_INPUTS, CARDINAL_NUM_AUDIO_OUTPUTS }, { 2, 2 } #ifdef HEADLESS #define DISTRHO_PLUGIN_HAS_UI 0 diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index 3ed2fe9..4f5acb5 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -196,6 +196,14 @@ class CardinalPlugin : public CardinalBasePlugin float fMiniReportValues[kCardinalParameterCountAtMini - kCardinalParameterStartMini]; #endif + #ifdef DISTRHO_PLUGIN_EXTRA_IO + uint16_t fNumActiveInputs = DISTRHO_PLUGIN_NUM_INPUTS; + uint16_t fNumActiveOutputs = DISTRHO_PLUGIN_NUM_OUTPUTS; + #else + static constexpr const uint16_t fNumActiveInputs = DISTRHO_PLUGIN_NUM_INPUTS; + static constexpr const uint16_t fNumActiveOutputs = DISTRHO_PLUGIN_NUM_OUTPUTS; + #endif + public: CardinalPlugin() : CardinalBasePlugin(kCardinalParameterCount, 0, kCardinalStateCount), @@ -1135,7 +1143,10 @@ protected: #if DISTRHO_PLUGIN_NUM_INPUTS != 0 fAudioBufferCopy = new float*[DISTRHO_PLUGIN_NUM_INPUTS]; for (int i=0; ibufferSize]; + std::memset(fAudioBufferCopy[i], 0, sizeof(float) * context->bufferSize); + } #endif fNextExpectedFrame = 0; @@ -1226,7 +1237,7 @@ protected: else { #if DISTRHO_PLUGIN_NUM_INPUTS != 0 - for (int i=0; idataOuts = outputs; } - for (int i=0; iengine->setSampleRate(newSampleRate); } + #ifdef DISTRHO_PLUGIN_EXTRA_IO + void ioChanged(const uint16_t numInputs, const uint16_t numOutputs) override + { + fNumActiveInputs = numInputs; + fNumActiveOutputs = numOutputs; + } + #endif + // ------------------------------------------------------------------------------------------------------- private: diff --git a/src/CardinalUI.cpp b/src/CardinalUI.cpp index b088e59..c1c01fd 100644 --- a/src/CardinalUI.cpp +++ b/src/CardinalUI.cpp @@ -426,10 +426,6 @@ public: const double height = std::max(538.f, rack::settings::windowSize.y) * scaleFactor; setSize(width, height); } - else if (scaleFactor != 1.0) - { - setSize(DISTRHO_UI_DEFAULT_WIDTH * scaleFactor, DISTRHO_UI_DEFAULT_HEIGHT * scaleFactor); - } #if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS const DGL_NAMESPACE::Window::ScopedGraphicsContext sgc(window); @@ -932,7 +928,7 @@ protected: context->patch->loadAutosave(); } catch(const rack::Exception& e) { d_stderr(e.what()); - } DISTRHO_SAFE_EXCEPTION_RETURN("setState loadAutosave",); + } DISTRHO_SAFE_EXCEPTION_RETURN("stateChanged loadAutosave",); return; } @@ -1180,7 +1176,7 @@ protected: const int height = static_cast(ev.size.getHeight() / scaleFactor + 0.5); char sizeString[64] = {}; - std::snprintf(sizeString, sizeof(sizeString), "%d:%d", width, height); + std::snprintf(sizeString, sizeof(sizeString) - 1, "%d:%d", width, height); setState("windowSize", sizeString); if (rack::isStandalone()) diff --git a/src/Makefile b/src/Makefile index 24038a8..0e892e1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -142,6 +142,10 @@ native: $(TARGETS) mini: $(TARGETS) $(MAKE) jack -C CardinalMini +au: $(TARGETS) + $(MAKE) au -C CardinalFX $(CARDINAL_SYNTH_ARGS) + $(MAKE) au -C CardinalSynth $(CARDINAL_SYNTH_ARGS) + lv2: $(TARGETS) $(MAKE) lv2 -C Cardinal $(MAKE) lv2 -C CardinalFX $(CARDINAL_FX_ARGS) diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index fd4c058..56b3dd9 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -412,7 +412,7 @@ BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"' # Enable all possible plugin types and setup resources ifeq ($(CARDINAL_VARIANT),main) -TARGETS = jack lv2 vst3 clap +TARGETS = clap jack lv2 vst3 else ifeq ($(DSP_UI_SPLIT),true) TARGETS = lv2_sep else ifeq ($(CARDINAL_VARIANT),mini) From 5020931924022dddc94dd06fb0bedf02bc343786 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 May 2024 00:14:32 +0200 Subject: [PATCH 06/15] Set USE_FILE_BROWSER=true for DPF Signed-off-by: falkTX --- Makefile.base.mk | 2 ++ dpf | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile.base.mk b/Makefile.base.mk index e7e468f..de5ee3a 100644 --- a/Makefile.base.mk +++ b/Makefile.base.mk @@ -21,6 +21,7 @@ export DISTRHO_NAMESPACE = CardinalDISTRHO export DGL_NAMESPACE = CardinalDGL export NVG_DISABLE_SKIPPING_WHITESPACE = true export NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST +export USE_FILE_BROWSER = true export USE_NANOVG_FBO = true export WASM_EXCEPTIONS = true export WINDOWS_ICON_ID = 401 @@ -33,6 +34,7 @@ DGL_EXTRA_ARGS = \ DGL_NAMESPACE=$(DGL_NAMESPACE) \ NVG_DISABLE_SKIPPING_WHITESPACE=$(NVG_DISABLE_SKIPPING_WHITESPACE) \ NVG_FONT_TEXTURE_FLAGS=$(NVG_FONT_TEXTURE_FLAGS) \ + USE_FILE_BROWSER=$(USE_FILE_BROWSER) \ USE_NANOVG_FBO=$(USE_NANOVG_FBO) \ WASM_EXCEPTIONS=$(WASM_EXCEPTIONS) \ WINDOWS_ICON_ID=$(WINDOWS_ICON_ID) \ diff --git a/dpf b/dpf index 32ba6c1..256584c 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 32ba6c1cb418e6a1d6d97c979e76c8ecab46fbc7 +Subproject commit 256584c028db17e1d2264489e06fbb19ddb01868 From fc8baa4bd0d1f1e62e2bb32f423e915038a7cd6a Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 May 2024 11:06:19 +0200 Subject: [PATCH 07/15] Make sure USE_FILE_BROWSER=true is respected, fixes LTO Signed-off-by: falkTX --- carla | 2 +- dpf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/carla b/carla index 4def5cc..c37d53a 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 4def5cc1be22abf2be8fb71ab8788c2e51b140e4 +Subproject commit c37d53a4216654118e711fa41e88e7e801d5bd9b diff --git a/dpf b/dpf index 256584c..89adb5f 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 256584c028db17e1d2264489e06fbb19ddb01868 +Subproject commit 89adb5fde4a1ab125a9cc6e66d82ed9f7a76447c From 41bd519de7659401b3a8ecb068781027634ba2cd Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 May 2024 12:07:47 +0200 Subject: [PATCH 08/15] Fix win32 build Signed-off-by: falkTX --- dpf | 2 +- src/Makefile.cardinal.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dpf b/dpf index 89adb5f..8f10cdc 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 89adb5fde4a1ab125a9cc6e66d82ed9f7a76447c +Subproject commit 8f10cdc4f11a256f597fc39a7ac6de38a28cef57 diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 56b3dd9..16e6250 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -188,7 +188,7 @@ endif ifeq ($(MACOS),true) EXTRA_DSP_LIBS += -framework Accelerate -framework AppKit else ifeq ($(WINDOWS),true) -EXTRA_DSP_LIBS += -lole32 -lshlwapi -luuid -lversion +EXTRA_DSP_LIBS += -lole32 -lshlwapi -luuid -lversion -lwininet endif # -------------------------------------------------------------- From 9ed8f340257d841731225ed8674995b84fef6e13 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 May 2024 12:23:57 +0200 Subject: [PATCH 09/15] Make sure to use custom JUCE version for surgext builds Signed-off-by: falkTX --- .gitmodules | 3 +++ deps/JUCE | 1 + deps/Makefile | 4 ++++ src/Makefile.cardinal.mk | 2 +- 4 files changed, 9 insertions(+), 1 deletion(-) create mode 160000 deps/JUCE diff --git a/.gitmodules b/.gitmodules index 577b352..91755d3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -248,3 +248,6 @@ [submodule "plugins/PdArray"] path = plugins/PdArray url = https://github.com/mgunyho/PdArray.git +[submodule "deps/JUCE"] + path = deps/JUCE + url = https://github.com/CardinalModules/JUCE.git diff --git a/deps/JUCE b/deps/JUCE new file mode 160000 index 0000000..4aaa2a7 --- /dev/null +++ b/deps/JUCE @@ -0,0 +1 @@ +Subproject commit 4aaa2a7f4c83bd9807070825fbccd9d6d582e34d diff --git a/deps/Makefile b/deps/Makefile index 29cca40..6e985d4 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -266,6 +266,9 @@ ifeq ($(CPU_I386),true) SURGE_CXX_FLAGS += -D__sigemptyset=sigemptyset endif +# use custom JUCE +SURGE_CXX_FLAGS += -I$(abspath ../deps/JUCE/modules) + # possibly use fftw? # ifeq ($(shell $(PKG_CONFIG) --exists fftw3 fftw3f && echo true),true) # SURGE_CXX_FLAGS += -DJUCE_DSP_USE_STATIC_FFTW=1 @@ -295,6 +298,7 @@ $(SURGE_DEP_PATH)/Makefile: $(SURGE_SRC_PATH)/CMakeLists.txt -DSURGE_SKIP_JUCE_FOR_RACK=TRUE \ -DSURGE_SKIP_LUA=TRUE \ -DSURGE_SKIP_ODDSOUND_MTS=TRUE \ + -DSURGE_JUCE_PATH=$(abspath ../deps/JUCE) \ -DSURGE_SIMDE_PATH=$(abspath ../src/Rack/dep/simde) \ $(SURGE_SRC_PATH) diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 16e6250..56b3dd9 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -188,7 +188,7 @@ endif ifeq ($(MACOS),true) EXTRA_DSP_LIBS += -framework Accelerate -framework AppKit else ifeq ($(WINDOWS),true) -EXTRA_DSP_LIBS += -lole32 -lshlwapi -luuid -lversion -lwininet +EXTRA_DSP_LIBS += -lole32 -lshlwapi -luuid -lversion endif # -------------------------------------------------------------- From fe1e7d3311570208baf56123aa05730a2b8dcac0 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 May 2024 18:20:39 +0200 Subject: [PATCH 10/15] Bump version to 24.05, add surge nimbus to mini Signed-off-by: falkTX --- .github/ISSUE_TEMPLATE/bug.yaml | 2 +- Makefile | 2 +- plugins/plugins-mini.cpp | 2 +- src/CardinalCommon.cpp | 2 +- src/CardinalPlugin.cpp | 2 +- utils/macOS/Info_JACK.plist | 2 +- utils/macOS/Info_Native.plist | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index 21d67a5..0511b12 100644 --- a/.github/ISSUE_TEMPLATE/bug.yaml +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -5,7 +5,7 @@ body: id: version attributes: label: Version - value: "24.04" + value: "24.05" validations: required: true - type: dropdown diff --git a/Makefile b/Makefile index a820d8a..b128c43 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ include $(ROOT)/Makefile.base.mk # src/CardinalPlugin.cpp `getVersion` # utils/macOS/Info_{JACK,Native}.plist # .github/ISSUE_TEMPLATE/bug.yaml src/CardinalCommon.cpp src/CardinalPlugin.cpp utils/macOS/Info_{JACK,Native}.plist -VERSION = 24.04 +VERSION = 24.05 # -------------------------------------------------------------- # Build targets diff --git a/plugins/plugins-mini.cpp b/plugins/plugins-mini.cpp index c6f45f8..fadda3c 100644 --- a/plugins/plugins-mini.cpp +++ b/plugins/plugins-mini.cpp @@ -575,6 +575,7 @@ static void initStatic__surgext() spl.removeModule("SurgeXTDigitalRingMod"); spl.removeModule("SurgeXTVCF"); + p->addModel(modelFXNimbus); spl.removeModule("SurgeXTFXBonsai"); spl.removeModule("SurgeXTFXChorus"); spl.removeModule("SurgeXTFXChow"); @@ -586,7 +587,6 @@ static void initStatic__surgext() spl.removeModule("SurgeXTFXFlanger"); spl.removeModule("SurgeXTFXFrequencyShifter"); spl.removeModule("SurgeXTFXNeuron"); - spl.removeModule("SurgeXTFXNimbus"); spl.removeModule("SurgeXTFXPhaser"); spl.removeModule("SurgeXTFXResonator"); spl.removeModule("SurgeXTFXReverb"); diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index 5512e5e..fd21343 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.cpp @@ -99,7 +99,7 @@ void destroyStaticPlugins(); } } -const std::string CARDINAL_VERSION = "24.04"; +const std::string CARDINAL_VERSION = "24.05"; // ----------------------------------------------------------------------------------------------------------- diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index 4f5acb5..5139aec 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -414,7 +414,7 @@ protected: uint32_t getVersion() const override { - return d_version(0, 24, 4); + return d_version(0, 24, 5); } int64_t getUniqueId() const override diff --git a/utils/macOS/Info_JACK.plist b/utils/macOS/Info_JACK.plist index 66bb498..d0980b3 100644 --- a/utils/macOS/Info_JACK.plist +++ b/utils/macOS/Info_JACK.plist @@ -11,7 +11,7 @@ CFBundleIdentifier studio.kx.distrho.cardinal.jack CFBundleShortVersionString - 23.04 + 24.05 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright diff --git a/utils/macOS/Info_Native.plist b/utils/macOS/Info_Native.plist index 310766e..1672ad6 100644 --- a/utils/macOS/Info_Native.plist +++ b/utils/macOS/Info_Native.plist @@ -11,7 +11,7 @@ CFBundleIdentifier studio.kx.distrho.cardinal.native CFBundleShortVersionString - 24.04 + 24.05 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright From e5ae62d326440d169dea1b56f5f9019dbd441dd9 Mon Sep 17 00:00:00 2001 From: dreamer <1185977+dromer@users.noreply.github.com> Date: Sat, 25 May 2024 17:41:56 +0200 Subject: [PATCH 11/15] add rcm-modules (#669) * add rcm-modules * Fix build Signed-off-by: falkTX * append README and LICENSES files * setup symbol conflicts for RCM Signed-off-by: falkTX --------- Signed-off-by: falkTX Co-authored-by: falkTX --- .gitmodules | 3 +++ README.md | 1 + docs/LICENSES.md | 2 ++ plugins/Makefile | 23 +++++++++++++++++++++++ plugins/plugins.cpp | 27 +++++++++++++++++++++++++++ plugins/rcm-modules | 1 + 6 files changed, 57 insertions(+) create mode 160000 plugins/rcm-modules diff --git a/.gitmodules b/.gitmodules index 91755d3..7d9b38a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -251,3 +251,6 @@ [submodule "deps/JUCE"] path = deps/JUCE url = https://github.com/CardinalModules/JUCE.git +[submodule "plugins/rcm-modules"] + path = plugins/rcm-modules + url = https://github.com/Rcomian/rcm-modules.git diff --git a/README.md b/README.md index da1eb25..0161637 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,7 @@ At the moment the following 3rd-party modules are provided: - [PinkTrombone](https://github.com/VegaDeftwing/PinkTromboneVCV) - [Prism](https://github.com/SteveRussell33/Prism) - [rackwindows](https://github.com/n0jo/rackwindows) +- [RCM](https://github.com/Rcomian/rcm-modules/) - [RebelTech](https://github.com/hemmer/rebel-tech-vcv) - [repelzen](https://github.com/wiqid/repelzen) - [Sapphire](https://github.com/cosinekitty/sapphire) diff --git a/docs/LICENSES.md b/docs/LICENSES.md index 01641de..d2b048f 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -77,6 +77,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | PinkTrombone | GPL-3.0-or-later | | | Prism | BSD-3-Clause | | | Rackwindows | MIT | | +| RCM | GPL-2.0-or-later | | | repelzen | GPL-3.0-or-later | | | RebelTech | GPL-2.0-or-later | | | Sapphire | GPL-3.0-or-later | | @@ -240,6 +241,7 @@ Below is a list of artwork licenses from plugins | Prism/* | CC-BY-SA-4.0 | | | Prism/RobotoCondensed-Regular.ttf | Apache-2.0 | | | Rackwindows/* | MIT | [Same license as source code](https://github.com/n0jo/rackwindows/issues/15) | +| RCM/* | GPL-2.0-or-later | No artwork specific license provided | | repelzen/* | CC-BY-SA-4.0 | | | RebelTech/* | CC-BY-NC-4.0 | | | Sapphire/* | GPL-3.0-or-later | No artwork specific license provided | diff --git a/plugins/Makefile b/plugins/Makefile index 68a36ef..f560dc2 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -1002,6 +1002,16 @@ PRISM_CUSTOM = bogaudio Scale PLUGIN_FILES += $(filter-out rackwindows/src/plugin.cpp,$(wildcard rackwindows/src/*.cpp)) +# -------------------------------------------------------------- +# RCM + +PLUGIN_FILES += $(filter-out rcm-modules/src/plugin.cpp,$(wildcard rcm-modules/src/*.cpp)) +PLUGIN_FILES += $(wildcard rcm-modules/src/*.c) +PLUGIN_FILES += $(wildcard rcm-modules/src/PianoRoll/*.cpp) + +# modules/types which are present in other plugins +RCM_CUSTOM = Transport + # -------------------------------------------------------------- # RebelTech @@ -2680,6 +2690,19 @@ $(BUILD_DIR)/rackwindows/%.cpp.o: rackwindows/%.cpp -Wno-implicit-fallthrough \ -Wno-sign-compare +$(BUILD_DIR)/rcm-modules/%.c.o: rcm-modules/%.c + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ \ + $(foreach m,$(RCM_CUSTOM),$(call custom_module_names,$(m),RCM)) + +$(BUILD_DIR)/rcm-modules/%.cpp.o: rcm-modules/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(RCM_CUSTOM),$(call custom_module_names,$(m),RCM)) \ + -DpluginInstance=pluginInstance__RCM + $(BUILD_DIR)/RebelTech/%.cpp.o: RebelTech/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 5caa03b..8950bf3 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -796,6 +796,9 @@ extern Model* modelBlankPanel; // rackwindows #include "rackwindows/src/plugin.hpp" +// RCM +#include "rcm-modules/src/plugin.hpp" + // RebelTech #define BefacoInputPort BefacoInputPortRebelTech #define BefacoOutputPort BefacoOutputPortRebelTech @@ -961,6 +964,7 @@ Plugin* pluginInstance__PdArray; Plugin* pluginInstance__PinkTrombone; Plugin* pluginInstance__Prism; Plugin* pluginInstance__rackwindows; +Plugin* pluginInstance__RCM; Plugin* pluginInstance__RebelTech; Plugin* pluginInstance__repelzen; Plugin* pluginInstance__sapphire; @@ -2996,6 +3000,28 @@ static void initStatic__rackwindows() } } +static void initStatic__RCM() +{ + Plugin* const p = new Plugin; + pluginInstance__RCM = p; + + const StaticPluginLoader spl(p, "rcm-modules"); + if (spl.ok()) + { + p->addModel(modelGVerbModule); + p->addModel(modelCV0to10Module); + p->addModel(modelCVS0to10Module); + p->addModel(modelCV5to5Module); + p->addModel(modelCVMmtModule); + p->addModel(modelCVTglModule); + p->addModel(modelPianoRollModule); + p->addModel(modelDuckModule); + p->addModel(modelSEQAdapterModule); + p->addModel(modelSyncModule); + p->addModel(modelPolyNosModule); + } +} + static void initStatic__RebelTech() { Plugin* const p = new Plugin; @@ -3458,6 +3484,7 @@ void initStaticPlugins() initStatic__PinkTrombone(); initStatic__Prism(); initStatic__rackwindows(); + initStatic__RCM(); initStatic__RebelTech(); initStatic__repelzen(); initStatic__Sapphire(); diff --git a/plugins/rcm-modules b/plugins/rcm-modules new file mode 160000 index 0000000..c4a243e --- /dev/null +++ b/plugins/rcm-modules @@ -0,0 +1 @@ +Subproject commit c4a243ec7089254aa19225c0666bb4bda2163a6a From ad25bfc37024338fb23b38f680cf4dbf1640328e Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 25 May 2024 17:47:24 +0200 Subject: [PATCH 12/15] Forgot to add Biset to README Signed-off-by: falkTX --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0161637..718db52 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,7 @@ At the moment the following 3rd-party modules are provided: - [Bacon Music](https://github.com/baconpaul/BaconPlugs) - [Befaco](https://github.com/VCVRack/Befaco) - [Bidoo](https://github.com/sebastien-bouffier/Bidoo) +- [Biset](https://github.com/gibbonjoyeux/VCV-Biset) - [Bogaudio](https://github.com/bogaudio/BogaudioModules) - [Catro/Modulo](https://github.com/catronomix/catro-modulo) - [cf](https://github.com/cfoulc/cf) From e0da10a92280db1c1fb9e97df098f3e2ffb33e59 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 27 May 2024 11:16:49 +0200 Subject: [PATCH 13/15] Add a missing resource for mini Signed-off-by: falkTX --- plugins/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/Makefile b/plugins/Makefile index f560dc2..9bcbbcc 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -1706,6 +1706,7 @@ MINIRESOURCE_FILES += surgext/res/xt/dark/components/knob-pointer-14.svg MINIRESOURCE_FILES += surgext/res/xt/dark/components/knob-pointer-16.svg MINIRESOURCE_FILES += surgext/res/xt/dark/components/mod-button.svg MINIRESOURCE_FILES += surgext/res/xt/dark/components/port.svg +MINIRESOURCE_FILES += surgext/res/xt/dark/panels/fx/BlankNoDisplay.svg MINIRESOURCE_FILES += surgext/res/xt/dark/panels/other/EGLFO.svg MINIRESOURCE_FILES += surgext/res/xt/dark/panels/other/Matrix.svg MINIRESOURCE_FILES += surgext/res/xt/dark/panels/other/Mixer.svg From ae94366191ac3f788b76a72683f385ac446697e3 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 27 May 2024 11:17:21 +0200 Subject: [PATCH 14/15] Test LTO for mini builds too Signed-off-by: falkTX --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 71bec68..30750c4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -504,6 +504,7 @@ jobs: - name: Build linux (LTO) run: | make features + make WITH_LTO=true -j $(nproc) mini make WITH_LTO=true -j $(nproc) native sysdeps: From 77b5becf75c8842cd30ee99d326782894fb334d3 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 27 May 2024 11:39:49 +0200 Subject: [PATCH 15/15] Fixed mixed-usage headless/normal CardinalPluginContext Signed-off-by: falkTX --- include/plugincontext.hpp | 4 ---- src/CardinalCommon.cpp | 14 +++++--------- src/Makefile | 1 + 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/include/plugincontext.hpp b/include/plugincontext.hpp index 74def30..661b31d 100644 --- a/include/plugincontext.hpp +++ b/include/plugincontext.hpp @@ -89,16 +89,12 @@ struct CardinalPluginContext : rack::Context { const CardinalDISTRHO::MidiEvent* midiEvents; uint32_t midiEventCount; CardinalDISTRHO::Plugin* const plugin; - #ifndef HEADLESS CardinalDGL::NanoTopLevelWidget* tlw; CardinalDISTRHO::UI* ui; - #endif CardinalPluginContext(CardinalDISTRHO::Plugin* const p); void writeMidiMessage(const rack::midi::Message& message, uint8_t channel); - #ifndef HEADLESS bool addIdleCallback(IdleCallback* cb) const; void removeIdleCallback(IdleCallback* cb) const; - #endif }; #ifndef HEADLESS diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index fd21343..3226cc0 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.cpp @@ -162,19 +162,16 @@ CardinalPluginContext::CardinalPluginContext(Plugin* const p) dataOuts(nullptr), midiEvents(nullptr), midiEventCount(0), - plugin(p) - #ifndef HEADLESS - , tlw(nullptr) - , ui(nullptr) - #endif + plugin(p), + tlw(nullptr), + ui(nullptr) { std::memset(parameters, 0, sizeof(parameters)); } -#ifndef HEADLESS bool CardinalPluginContext::addIdleCallback(IdleCallback* const cb) const { - #ifndef CARDINAL_COMMON_DSP_ONLY + #if !(defined(HEADLESS) || defined(CARDINAL_COMMON_DSP_ONLY)) if (ui != nullptr) { ui->addIdleCallback(cb); @@ -190,7 +187,7 @@ bool CardinalPluginContext::addIdleCallback(IdleCallback* const cb) const void CardinalPluginContext::removeIdleCallback(IdleCallback* const cb) const { - #ifndef CARDINAL_COMMON_DSP_ONLY + #if !(defined(HEADLESS) || defined(CARDINAL_COMMON_DSP_ONLY)) if (ui != nullptr) ui->removeIdleCallback(cb); #else @@ -198,7 +195,6 @@ void CardinalPluginContext::removeIdleCallback(IdleCallback* const cb) const (void)cb; #endif } -#endif void CardinalPluginContext::writeMidiMessage(const rack::midi::Message& message, const uint8_t channel) { diff --git a/src/Makefile b/src/Makefile index 0e892e1..48d3bed 100644 --- a/src/Makefile +++ b/src/Makefile @@ -141,6 +141,7 @@ native: $(TARGETS) mini: $(TARGETS) $(MAKE) jack -C CardinalMini + $(MAKE) lv2_sep -C CardinalMiniSep au: $(TARGETS) $(MAKE) au -C CardinalFX $(CARDINAL_SYNTH_ARGS)