From 9132ddb9752bc1b0dd70dd668a0f8c4d2d5ac411 Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 14 Aug 2025 16:33:31 +0300 Subject: [PATCH 01/20] Fix crash when connecting to OSC remote Signed-off-by: falkTX --- src/override/Scene.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/override/Scene.cpp b/src/override/Scene.cpp index 909b498..5b6e85a 100644 --- a/src/override/Scene.cpp +++ b/src/override/Scene.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2024 Filipe Coelho + * Copyright (C) 2021-2025 Filipe Coelho * SPDX-License-Identifier: GPL-3.0-or-later */ @@ -207,20 +207,23 @@ void Scene::step() { (internal->historyActionIndex != actionIndex && actionIndex > 0 && time - internal->lastSceneChangeTime >= 1.0)) { - remoteDetails->first = false; - - const std::string& name(APP->history->actions[actionIndex - 1]->name); - static const std::vector ignoredNames = { - "move knob", - "move modules", - "move switch", - }; - if (std::find(ignoredNames.cbegin(), ignoredNames.cend(), name) == ignoredNames.cend()) { - printf("action '%s'\n", APP->history->actions[actionIndex - 1]->name.c_str()); + if (remoteDetails->first) { + remoteDetails->first = false; remoteUtils::sendFullPatchToRemote(remoteDetails); - - if (remoteDetails->screenshot) { - window::generateScreenshot(); + } else { + const std::string& name(APP->history->actions[actionIndex - 1]->name); + static const std::vector ignoredNames = { + "move knob", + "move modules", + "move switch", + }; + if (std::find(ignoredNames.cbegin(), ignoredNames.cend(), name) == ignoredNames.cend()) { + d_debug("action '%s'\n", APP->history->actions[actionIndex - 1]->name.c_str()); + remoteUtils::sendFullPatchToRemote(remoteDetails); + + if (remoteDetails->screenshot) { + window::generateScreenshot(); + } } } internal->historyActionIndex = actionIndex; From e162c4a266e0e9673635d99d46d0d56c4d19b961 Mon Sep 17 00:00:00 2001 From: Cody Geary Date: Sat, 16 Aug 2025 13:37:28 +0200 Subject: [PATCH 02/20] CV funk v2.0.24 (#850) * CV funk v2.0.24 Adding new modules: Tatami - stereo polyphonic wavelder Cartesia - 4x4x4 channel 3D sequencer JunkDNA - A DNA sequence generator and gate sequencer Picus - Burst Generator Node - 2Channel stereo crossfading mixer Weave - Advanced chord generator and permutator Wonk - Chaotic LFO Hammer - Rotating clock modulator Hub - 2X bipolar VCAs for LFO mixing. * Resolve conflict with Node Treated Node the same as Steps in the makefile and plugins.cpp. Hopefully it works to resolve things. * Update plugins.cpp Fixing the fix.. There was an earlier part in plugins.cpp where I also had to temp rename/unrename 'Node'. --- plugins/CVfunk | 2 +- plugins/Makefile | 2 +- plugins/plugins.cpp | 13 +++++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/plugins/CVfunk b/plugins/CVfunk index a116e6b..51f2b4e 160000 --- a/plugins/CVfunk +++ b/plugins/CVfunk @@ -1 +1 @@ -Subproject commit a116e6b18ac05974a23509cc47adfd86e8406385 +Subproject commit 51f2b4e61cde7978fb84cdd892a1d3aaedc0ff5b diff --git a/plugins/Makefile b/plugins/Makefile index e641c00..45c50b3 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -678,7 +678,7 @@ COMPUTERSCARE_CUSTOM = Quantizer PanelBorder PLUGIN_FILES += $(filter-out CVfunk/src/plugin.cpp,$(wildcard CVfunk/src/*.cpp)) # modules/types which are present in other plugins -CVFUNK_CUSTOM = Steps +CVFUNK_CUSTOM = Steps Node # -------------------------------------------------------------- # dBiz diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index e012e94..edcf204 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -343,9 +343,11 @@ extern Model* modelTestVCF; #include "cf/src/plugin.hpp" // CVfunk +#define modelNode modelCVfunkNode #define modelSteps modelCVfunkSteps #include "CVfunk/src/plugin.hpp" #undef modelSteps +#undef modelNode // ChowDSP #include "ChowDSP/src/plugin.hpp" @@ -2048,6 +2050,7 @@ static void initStatic__CVfunk() if (spl.ok()) { #define modelSteps modelCVfunkSteps + #define modelNode modelCVfunkNode p->addModel(modelSteps); p->addModel(modelEnvelopeArray); p->addModel(modelPentaSequencer); @@ -2069,6 +2072,16 @@ static void initStatic__CVfunk() p->addModel(modelPreeeeeeeeeeessedDuck); p->addModel(modelArrange); p->addModel(modelTriDelay); + p->addModel(modelTatami); + p->addModel(modelCartesia); + p->addModel(modelJunkDNA); + p->addModel(modelPicus); + p->addModel(modelNode); + p->addModel(modelWeave); + p->addModel(modelWonk); + p->addModel(modelHammer); + p->addModel(modelHub); + #undef modelNode #undef modelSteps } } From 2b9e629a7332a38a30a2d0c7a782a549628788f6 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 16 Aug 2025 16:06:51 +0200 Subject: [PATCH 03/20] Update dpf, fix wasm audio input quality Signed-off-by: falkTX --- carla | 2 +- dpf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/carla b/carla index c9b6055..bd96b7c 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit c9b60551497a7a9b76d86d694b6af08afe96335c +Subproject commit bd96b7c403832bfc2f96e55c71711f136e1a4f88 diff --git a/dpf b/dpf index 8c30f9f..79e5339 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 8c30f9f1eddba89805f4131aeb2d6ca3e31a46b1 +Subproject commit 79e5339bef455583a4b5762addfd6578d4230f05 From 595e3a5c9fda3b95a86d9f5b33e8ef476928537b Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 16 Aug 2025 17:39:50 +0200 Subject: [PATCH 04/20] Fix wasm build Signed-off-by: falkTX --- carla | 2 +- src/Makefile.cardinal.mk | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/carla b/carla index bd96b7c..31c97d2 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit bd96b7c403832bfc2f96e55c71711f136e1a4f88 +Subproject commit 31c97d211808a20d0b5ade0612bcd09e0f31785d diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 576a893..e246242 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -264,6 +264,9 @@ endif ifeq ($(WASM),true) APP_EXT = .js +UI_TYPE = gles2 +else +UI_TYPE = opengl endif USE_VST2_BUNDLE = true From 670471e81e19bbd2a3b46accffb0c2a0ec67f564 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 16 Aug 2025 22:11:24 +0200 Subject: [PATCH 05/20] carla related build fixes Signed-off-by: falkTX --- carla | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/carla b/carla index 31c97d2..034d0c4 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 31c97d211808a20d0b5ade0612bcd09e0f31785d +Subproject commit 034d0c4242ba834e0b5a8967a5eefedf9d97178c From 39eda2c307a3396fa94a677fff1d83a5a5473efa Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 16 Aug 2025 22:43:36 +0200 Subject: [PATCH 06/20] Fix wasm build Signed-off-by: falkTX --- Makefile | 23 ++++++++++++++++------- src/Makefile.cardinal.mk | 2 -- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index ce97c4b..be09b5d 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ #!/usr/bin/make -f # DISTRHO Cardinal Plugin -# Copyright (C) 2021-2024 Filipe Coelho +# Copyright (C) 2021-2025 Filipe Coelho # SPDX-License-Identifier: GPL-3.0-or-later ROOT = . include $(ROOT)/Makefile.base.mk -# ----------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Set version # also set in: @@ -17,18 +17,18 @@ include $(ROOT)/Makefile.base.mk # .github/ISSUE_TEMPLATE/bug.yaml src/CardinalCommon.cpp src/CardinalPlugin.cpp utils/macOS/Info_{JACK,Native}.plist VERSION = 25.06 -# -------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Build targets all: cardinal carla deps dgl plugins gen resources -# -------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Build config PREFIX ?= /usr/local DESTDIR ?= -# -------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Carla config CARLA_EXTRA_ARGS = \ @@ -44,7 +44,16 @@ ifneq ($(DEBUG),true) CARLA_EXTRA_ARGS += EXTERNAL_PLUGINS=true endif -# -------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- +# DGL config + +ifeq ($(WASM),true) +UI_TYPE = gles2 +else +UI_TYPE = opengl +endif + +# --------------------------------------------------------------------------------------------------------------------- # Check for required system-wide dependencies ifeq ($(SYSDEPS),true) @@ -183,7 +192,7 @@ endif dgl: ifneq ($(HEADLESS),true) - $(MAKE) opengl -C dpf/dgl $(DGL_EXTRA_ARGS) + $(MAKE) $(UI_TYPE) -C dpf/dgl $(DGL_EXTRA_ARGS) endif plugins: deps diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index e246242..2701aa5 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -265,8 +265,6 @@ endif ifeq ($(WASM),true) APP_EXT = .js UI_TYPE = gles2 -else -UI_TYPE = opengl endif USE_VST2_BUNDLE = true From e494aff6e88599d153abde6a364d946d79798ffe Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 20 Aug 2025 14:15:32 +0200 Subject: [PATCH 07/20] Allow "mapi" build target to build CardinalFX as shared lib Signed-off-by: falkTX --- Makefile | 3 +++ dpf | 2 +- src/CardinalCommon.cpp | 3 ++- src/Makefile | 3 +++ src/Makefile.cardinal.mk | 5 +++++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index be09b5d..9aa443f 100644 --- a/Makefile +++ b/Makefile @@ -238,6 +238,9 @@ clap: carla deps dgl plugins resources lv2: carla deps dgl plugins resources $(MAKE) lv2 -C src $(CARLA_EXTRA_ARGS) +mapi: carla deps dgl plugins resources + $(MAKE) mapi -C src $(CARLA_EXTRA_ARGS) + vst2: carla deps dgl plugins resources $(MAKE) vst2 -C src $(CARLA_EXTRA_ARGS) diff --git a/dpf b/dpf index 79e5339..50f4a7c 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 79e5339bef455583a4b5762addfd6578d4230f05 +Subproject commit 50f4a7c6c2e092e6035cf69b3456b03cbfe412b0 diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index afe2594..e5baea0 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.cpp @@ -875,7 +875,8 @@ void Initializer::stopRemoteServer() lo_server_thread_stop(oscServerThread); lo_server_thread_del_method(oscServerThread, nullptr, nullptr); lo_server_thread_free(oscServerThread); - oscServerThread = oscServer = nullptr; + oscServerThread = nullptr; + oscServer = nullptr; } #else if (oscServer != nullptr) diff --git a/src/Makefile b/src/Makefile index 48d3bed..8799bff 100644 --- a/src/Makefile +++ b/src/Makefile @@ -147,6 +147,9 @@ au: $(TARGETS) $(MAKE) au -C CardinalFX $(CARDINAL_SYNTH_ARGS) $(MAKE) au -C CardinalSynth $(CARDINAL_SYNTH_ARGS) +mapi: $(TARGETS) + $(MAKE) mapi -C CardinalFX $(CARDINAL_FX_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 2701aa5..731dc36 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -409,6 +409,11 @@ endif BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"' +# -------------------------------------------------------------- +# we know what we are doing, promise! + +BUILD_CXX_FLAGS += -DDISTRHO_NO_WARNINGS + # -------------------------------------------------------------- # Enable all possible plugin types and setup resources From 6cc9bd16e3628b448706ab70431b05e3ad552e26 Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 20 Aug 2025 14:35:23 +0200 Subject: [PATCH 08/20] Use DPF provided functions to find docs and config dir Signed-off-by: falkTX --- src/CardinalCommon.cpp | 51 ++---------------------------------------- 1 file changed, 2 insertions(+), 49 deletions(-) diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index e5baea0..818540a 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.cpp @@ -626,47 +626,7 @@ Initializer::Initializer(const CardinalBasePlugin* const plugin, const CardinalB if (asset::userDir.empty()) { - #if defined(DISTRHO_OS_WASM) - asset::userDir = "/userfiles"; - #elif defined(ARCH_MAC) - asset::userDir = system::join(homeDir(), "Documents", "Cardinal"); - #elif defined(ARCH_WIN) - asset::userDir = system::join(getSpecialPath(kSpecialPathMyDocuments), "Cardinal"); - #else - std::string xdgConfigDir; - if (const char* const xdgEnv = getenv("XDG_CONFIG_HOME")) - xdgConfigDir = xdgEnv; - if (xdgConfigDir.empty()) - xdgConfigDir = system::join(homeDir(), ".config"); - - const std::string xdgDirsConfigPath(system::join(xdgConfigDir, "user-dirs.dirs")); - - if (system::exists(xdgDirsConfigPath)) - { - std::ifstream xdgDirsConfigFile(xdgDirsConfigPath, std::ios::in|std::ios::ate); - std::string xdgDirsConfig(xdgDirsConfigFile.tellg(), 0); - - xdgDirsConfigFile.seekg(0); - xdgDirsConfigFile.read(&xdgDirsConfig[0], xdgDirsConfig.size()); - - if (const char* const xdgDocsDir = std::strstr(xdgDirsConfig.c_str(), "XDG_DOCUMENTS_DIR=\"")) - { - if (const char* const xdgDocsDirNL = std::strstr(xdgDocsDir, "\"\n")) - { - asset::userDir = std::string(xdgDocsDir + 19, xdgDocsDirNL - xdgDocsDir - 19); - - if (string::startsWith(asset::userDir, "$HOME")) - asset::userDir.replace(asset::userDir.begin(), asset::userDir.begin() + 5, homeDir()); - - if (! system::exists(asset::userDir)) - asset::userDir.clear(); - } - } - } - - if (asset::userDir.empty()) - asset::userDir = system::join(homeDir(), "Documents", "Cardinal"); - #endif + asset::userDir = system::join(getSpecialDir(kSpecialDirDocuments), "Cardinal"); if (isRealInstance) { @@ -683,17 +643,10 @@ Initializer::Initializer(const CardinalBasePlugin* const plugin, const CardinalB #ifndef CARDINAL_COMMON_DSP_ONLY if (asset::configDir.empty()) { - #if defined(ARCH_MAC) || defined(ARCH_WIN) || defined(DISTRHO_OS_WASM) - asset::configDir = asset::userDir; - #else - if (const char* const xdgEnv = getenv("XDG_CONFIG_HOME")) - asset::configDir = system::join(xdgEnv, "Cardinal"); - else - asset::configDir = system::join(homeDir(), ".config", "Cardinal"); + asset::configDir = system::join(getSpecialDir(kSpecialDirConfig), "Cardinal"); if (isRealInstance) system::createDirectory(asset::configDir); - #endif } #endif From c65993826a97cba149bbdde589383a6e40b7ffdf Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 20 Aug 2025 20:02:21 +0200 Subject: [PATCH 09/20] Fix Linux docs dir when $XDG_CONFIG_HOME does not exist Signed-off-by: falkTX --- dpf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpf b/dpf index 50f4a7c..201fa73 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 50f4a7c6c2e092e6035cf69b3456b03cbfe412b0 +Subproject commit 201fa7387a2ec5bb3bc8352e4551eafccbcfcfb8 From 52c3470e4eee295ece2f85c0b73b9f750d77b322 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Wed, 20 Aug 2025 17:49:04 -0400 Subject: [PATCH 10/20] Sapphire v 2.6.001 (#852) * Sapphire v 2.6.001 release candidate 10. Changes since Sapphire v 2.6.000: - Added new module Sapphire Zoo, a programmable chaotic oscillator. - "Insert Tricorder on right" is a new menu option present in all Sapphire modules that work with Tricorder. - Frolic, Glee, Lark, Zoo include "Insert Chaops on left" menu option. * Fixed Sapphire commit to include bug fix. --- plugins/Sapphire | 2 +- plugins/plugins.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/Sapphire b/plugins/Sapphire index e2bcefc..ef10da4 160000 --- a/plugins/Sapphire +++ b/plugins/Sapphire @@ -1 +1 @@ -Subproject commit e2bcefcaa7753f017cd131a28aae0e5e346aafec +Subproject commit ef10da4e2578162b2db2f6534857d6504491daf4 diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index edcf204..76ace7e 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -3234,6 +3234,7 @@ static void initStatic__Sapphire() p->addModel(modelSapphireTout); p->addModel(modelSapphireTricorder); p->addModel(modelSapphireTubeUnit); + p->addModel(modelSapphireZoo); } } From 6afb94e2c0ca949a0e86640af81dab2f532a9b8b Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 2 Sep 2025 10:56:28 +0200 Subject: [PATCH 11/20] Fix wasm chrome/ium usage, fix default size in some systems Signed-off-by: falkTX --- carla | 2 +- dpf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/carla b/carla index 034d0c4..12bc40f 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 034d0c4242ba834e0b5a8967a5eefedf9d97178c +Subproject commit 12bc40fd6c9c5b36481c7df55086b27ba9ae8a80 diff --git a/dpf b/dpf index 201fa73..ab25198 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 201fa7387a2ec5bb3bc8352e4551eafccbcfcfb8 +Subproject commit ab25198ea9f361145e3f8e694d90bd2a93ee830c From 06591bd82a4ff2908d921ff73133657ba5ba13c6 Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 2 Sep 2025 10:57:44 +0200 Subject: [PATCH 12/20] Fix macOS CI 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 0c8684e..b719da5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -180,6 +180,7 @@ jobs: key: macos-universal-v${{ env.CACHE_VERSION }} - name: Setup dependencies run: | + brew uninstall --force --ignore-dependencies cmake ./deps/PawPaw/.github/workflows/bootstrap-deps.sh macos-universal-10.15 - name: Build extra dependencies run: | From 17a238ad8fe52cf8fbf6bf99ad7cc59043ba14dc Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 19 Oct 2025 20:38:37 +0200 Subject: [PATCH 13/20] Implement glfwGetKey for a future plugin Signed-off-by: falkTX --- src/custom/glfw.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/custom/glfw.cpp b/src/custom/glfw.cpp index b9c72b9..f069ac2 100644 --- a/src/custom/glfw.cpp +++ b/src/custom/glfw.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2024 Filipe Coelho + * Copyright (C) 2021-2025 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -17,6 +17,7 @@ #include "Application.hpp" #include "CardinalPluginContext.hpp" +#include "widget/event.hpp" #include @@ -207,3 +208,12 @@ GLFWAPI const char* glfwGetKeyName(const int key, int) default: return nullptr; } } + +int glfwGetKey(GLFWwindow*, const int key) +{ + CardinalPluginContext* const context = static_cast(APP); + DISTRHO_SAFE_ASSERT_RETURN(context != nullptr, GLFW_RELEASE); + DISTRHO_SAFE_ASSERT_RETURN(context->event != nullptr, GLFW_RELEASE); + + return context->event->heldKeys.find(key) != context->event->heldKeys.end() ? GLFW_PRESS : GLFW_RELEASE; +} From 0d56c57e4f5cb75c33107866aa8bbb12b754b2a7 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 20 Oct 2025 09:56:28 +0200 Subject: [PATCH 14/20] Fix headless builds Signed-off-by: falkTX --- src/custom/RemoteNanoVG.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/custom/RemoteNanoVG.cpp b/src/custom/RemoteNanoVG.cpp index 59aab3d..06ea39a 100644 --- a/src/custom/RemoteNanoVG.cpp +++ b/src/custom/RemoteNanoVG.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2022 Filipe Coelho + * Copyright (C) 2021-2025 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -55,6 +55,7 @@ GLFWAPI void glfwSetClipboardString(GLFWwindow*, const char*) {} GLFWAPI GLFWcursor* glfwCreateStandardCursor(int) { return nullptr; } GLFWAPI void glfwSetCursor(GLFWwindow*, GLFWcursor*) {} GLFWAPI const char* glfwGetKeyName(int, int) { return nullptr; } +GLFWAPI int glfwGetKey(GLFWwindow*, int) { return 0; } GLFWAPI int glfwGetKeyScancode(int) { return 0; } GLFWAPI double glfwGetTime(void) { return 0.0; } From 8ff2b383c4ef13cc6e6fea22f8cf36ff2d5ba0a0 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Fri, 24 Oct 2025 07:06:58 -0400 Subject: [PATCH 15/20] Add Venom plugin to Cardinal. (#862) * Add Venom plugin to Cardinal. This commit integrates the Venom plugin into Cardinal. This code is functionally equivalent to Venom 2.13.2 for VCV Rack. --- .gitmodules | 3 ++ README.md | 1 + docs/LICENSES.md | 2 ++ plugins/Makefile | 14 ++++++++ plugins/Venom | 1 + plugins/plugins.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 105 insertions(+) create mode 160000 plugins/Venom diff --git a/.gitmodules b/.gitmodules index fadc093..bd50812 100644 --- a/.gitmodules +++ b/.gitmodules @@ -263,3 +263,6 @@ [submodule "plugins/eightfold"] path = plugins/eightfold url = https://github.com/scanner-darkly/eightfold.git +[submodule "plugins/Venom"] + path = plugins/Venom + url = https://github.com/DaveBenham/VenomModules diff --git a/README.md b/README.md index 2f6bdb7..7c11944 100644 --- a/README.md +++ b/README.md @@ -196,6 +196,7 @@ At the moment the following 3rd-party modules are provided: - [Surge XT](https://github.com/surge-synthesizer/surge-rack) - [unless_modules](https://gitlab.com/unlessgames/unless_modules) - [Valley](https://github.com/ValleyAudio/ValleyRackFree) +- [Venom](https://github.com/DaveBenham/VenomModules) - [Voxglitch](https://github.com/clone45/voxglitch) - [WhatTheRack](https://github.com/korfuri/WhatTheRack) - [WSTD-Drums](https://github.com/Wasted-Audio/WSTD-Drums) diff --git a/docs/LICENSES.md b/docs/LICENSES.md index abd1431..b659fa7 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -90,6 +90,7 @@ Below follows a list of all code licenses used in Cardinal and linked submodules | Surge XT | GPL-3.0-or-later | | | unless_modules | GPL-3.0-or-later | | | Valley | GPL-3.0-or-later | | +| Venom | GPL-3.0-or-later | | | Voxglitch | GPL-3.0-or-later | | | WSTD-Drums | CC0-1.0 | | | WhatTheRack | WTFPL | | @@ -266,6 +267,7 @@ Below is a list of artwork licenses from plugins | ValleyAudio/din1451alt.ttf | CC-BY-3.0-DE | | | ValleyAudio/DSEG14Classic-*.ttf | OFL-1.1-RFN | | | ValleyAudio/ShareTechMono-*.ttf | OFL-1.1-RFN | | +| Venom/* | GPL-3.0-or-later | No artwork specific license provided | | voxglitch/* | GPL-3.0-or-later | No artwork specific license provided | | voxglitch/ShareTechMono-Regular.ttf | OFL-1.1-RFN | | | WhatTheRack/* | WTFPL | | diff --git a/plugins/Makefile b/plugins/Makefile index 45c50b3..7931034 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -1310,6 +1310,11 @@ PLUGIN_BINARIES += ValleyAudio/src/XFADE.bin VALLEYAUDIO_CUSTOM = $(DRWAV) Chord DigitalDisplay VALLEYAUDIO_CUSTOM_PER_FILE = TempoKnob +# -------------------------------------------------------------- +# Venom + +PLUGIN_FILES += $(filter-out Venom/src/plugin.cpp,$(wildcard Venom/src/*.cpp)) + # -------------------------------------------------------------- # Voxglitch @@ -2821,6 +2826,15 @@ $(BUILD_DIR)/ValleyAudio/%.cpp.o: ValleyAudio/%.cpp -Wno-sign-compare \ -Wno-unused-but-set-variable +$(BUILD_DIR)/Venom/%.cpp.o: Venom/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(VENOM_CUSTOM),$(call custom_module_names,$(m),Venom)) \ + -DSKIP_MINGW_FORMAT \ + -DpluginInstance=pluginInstance__Venom \ + -lglfw + $(BUILD_DIR)/voxglitch/%.cpp.o: voxglitch/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/Venom b/plugins/Venom new file mode 160000 index 0000000..1dc0e06 --- /dev/null +++ b/plugins/Venom @@ -0,0 +1 @@ +Subproject commit 1dc0e0612b75fcf4849f28cb6e569e3b6f13981a diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 76ace7e..d5d1de8 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -894,6 +894,13 @@ void surgext_rack_update_theme(); // ValleyAudio #include "ValleyAudio/src/Valley.hpp" +// Venom +#include "Venom/src/plugin.hpp" +namespace Venom +{ + void readDefaultThemes(); +} + // Voxglitch #define modelLooper modelVoxglitchLooper #include "voxglitch/src/plugin.hpp" @@ -1013,6 +1020,7 @@ extern Plugin* pluginInstance__stoermelder_p1; Plugin* pluginInstance__surgext; Plugin* pluginInstance__unless_modules; Plugin* pluginInstance__ValleyAudio; +Plugin* pluginInstance__Venom; Plugin* pluginInstance__Voxglitch; Plugin* pluginInstance__WhatTheRack; extern Plugin* pluginInstance__WSTD_Drums; @@ -3482,6 +3490,81 @@ static void initStatic__ValleyAudio() } } +static void initStatic__Venom() +{ + Plugin* const p = new Plugin; + pluginInstance__Venom = p; + + const StaticPluginLoader spl(p, "Venom"); + if (spl.ok()) + { + p->addModel(modelVenomAD_ASR); + p->addModel(modelVenomAuxClone); + p->addModel(modelVenomBayInput); + p->addModel(modelVenomBayNorm); + p->addModel(modelVenomBayOutput); + p->addModel(modelVenomBenjolinOsc); + p->addModel(modelVenomBenjolinGatesExpander); + p->addModel(modelVenomBenjolinVoltsExpander); + p->addModel(modelVenomBernoulliSwitch); + p->addModel(modelVenomBernoulliSwitchExpander); + p->addModel(modelVenomBlocker); + p->addModel(modelVenomBypass); + p->addModel(modelVenomCloneMerge); + p->addModel(modelVenomCompare2); + p->addModel(modelVenomCrossFade3D); + p->addModel(modelVenomHQ); + p->addModel(modelVenomKnob5); + p->addModel(modelVenomLinearBeats); + p->addModel(modelVenomLinearBeatsExpander); + p->addModel(modelVenomLogic); + p->addModel(modelVenomMix4); + p->addModel(modelVenomMix4Stereo); + p->addModel(modelVenomMixFade); + p->addModel(modelVenomMixFade2); + p->addModel(modelVenomMixMute); + p->addModel(modelVenomMixOffset); + p->addModel(modelVenomMixPan); + p->addModel(modelVenomMixSend); + p->addModel(modelVenomMixSolo); + p->addModel(modelVenomMousePad); + p->addModel(modelVenomMultiMerge); + p->addModel(modelVenomMultiSplit); + p->addModel(modelVenomOscillator); + p->addModel(modelVenomNORS_IQ); + p->addModel(modelVenomNORSIQChord2Scale); + p->addModel(modelVenomPan3D); + p->addModel(modelVenomPolyClone); + p->addModel(modelVenomPolyFade); + p->addModel(modelVenomPolyOffset); + p->addModel(modelVenomPolySHASR); + p->addModel(modelVenomPolyScale); + p->addModel(modelVenomPolyUnison); + p->addModel(modelVenomPush5); + p->addModel(modelVenomQuadVCPolarizer); + p->addModel(modelVenomRecurse); + p->addModel(modelVenomRecurseStereo); + p->addModel(modelVenomReformation); + p->addModel(modelVenomRhythmExplorer); + p->addModel(modelVenomShapedVCA); + p->addModel(modelVenomSlew); + p->addModel(modelVenomSphereToXYZ); + p->addModel(modelVenomThru); + p->addModel(modelVenomVCAMix4); + p->addModel(modelVenomVCAMix4Stereo); + p->addModel(modelVenomVCOUnit); + p->addModel(modelVenomBlank); + p->addModel(modelVenomWaveFolder); + p->addModel(modelVenomWaveMangler); + p->addModel(modelVenomWaveMultiplier); + p->addModel(modelVenomWidgetMenuExtender); + p->addModel(modelVenomWinComp); + p->addModel(modelVenomXM_OP); + + Venom::readDefaultThemes(); + } +} + static void initStatic__Voxglitch() { Plugin* p = new Plugin; @@ -3682,6 +3765,7 @@ void initStaticPlugins() initStatic__surgext(); initStatic__unless_modules(); initStatic__ValleyAudio(); + initStatic__Venom(); initStatic__Voxglitch(); initStatic__WhatTheRack(); initStatic__WSTD_Drums(); From 9c1aa6839ffc1410131c5480dff45da0f9336b10 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 Oct 2025 13:46:12 +0200 Subject: [PATCH 16/20] Bump version to 25.10 Signed-off-by: falkTX --- .github/ISSUE_TEMPLATE/bug.yaml | 2 +- Makefile | 2 +- src/CardinalCommon.cpp | 2 +- src/CardinalPlugin.cpp | 2 +- utils/macOS/Info_JACK.plist | 2 +- utils/macOS/Info_Native.plist | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index c8e1ced..371cd2e 100644 --- a/.github/ISSUE_TEMPLATE/bug.yaml +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -5,7 +5,7 @@ body: id: version attributes: label: Version - value: "25.06" + value: "25.10" validations: required: true - type: dropdown diff --git a/Makefile b/Makefile index 9aa443f..080bd4d 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 = 25.06 +VERSION = 25.10 # --------------------------------------------------------------------------------------------------------------------- # Build targets diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index 818540a..415e9d8 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.cpp @@ -99,7 +99,7 @@ void destroyStaticPlugins(); } } -const std::string CARDINAL_VERSION = "25.06"; +const std::string CARDINAL_VERSION = "25.10"; // ----------------------------------------------------------------------------------------------------------- diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index f154871..dfe19a7 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -414,7 +414,7 @@ protected: uint32_t getVersion() const override { - return d_version(0, 25, 6); + return d_version(0, 25, 10); } int64_t getUniqueId() const override diff --git a/utils/macOS/Info_JACK.plist b/utils/macOS/Info_JACK.plist index 80a5cf1..8071faf 100644 --- a/utils/macOS/Info_JACK.plist +++ b/utils/macOS/Info_JACK.plist @@ -11,7 +11,7 @@ CFBundleIdentifier studio.kx.distrho.cardinal.jack CFBundleShortVersionString - 25.06 + 25.10 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright diff --git a/utils/macOS/Info_Native.plist b/utils/macOS/Info_Native.plist index b9c5068..73bfbe8 100644 --- a/utils/macOS/Info_Native.plist +++ b/utils/macOS/Info_Native.plist @@ -11,7 +11,7 @@ CFBundleIdentifier studio.kx.distrho.cardinal.native CFBundleShortVersionString - 25.06 + 25.10 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright From 80454b5709bef18605d9c4329b3979999f6dfd73 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 Oct 2025 13:48:45 +0200 Subject: [PATCH 17/20] Update to latest carla and dpf Signed-off-by: falkTX --- carla | 2 +- dpf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/carla b/carla index 12bc40f..1d8dcb5 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 12bc40fd6c9c5b36481c7df55086b27ba9ae8a80 +Subproject commit 1d8dcb5aab5e0c30352e9f928ce3e40cbc86a439 diff --git a/dpf b/dpf index ab25198..4238e1c 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit ab25198ea9f361145e3f8e694d90bd2a93ee830c +Subproject commit 4238e1c7f0351bbe488d79f0899c540543ac7583 From a1b55eff07f68fa92bb09878bdc4a153d898ea06 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 Oct 2025 14:03:13 +0200 Subject: [PATCH 18/20] Remove mpv test plugin, cleanup Signed-off-by: falkTX --- plugins/Cardinal/plugin.json | 9 --------- plugins/Makefile | 10 ++-------- plugins/plugins.cpp | 11 +++-------- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/plugins/Cardinal/plugin.json b/plugins/Cardinal/plugin.json index 4086063..1765211 100644 --- a/plugins/Cardinal/plugin.json +++ b/plugins/Cardinal/plugin.json @@ -192,15 +192,6 @@ "Utility" ] }, - { - "slug": "MPV", - "name": "MPV", - "description": "An embed video player inside Cardinal", - "manualUrl": "https://github.com/DISTRHO/Cardinal/blob/main/docs/CARDINAL-MODULES.md#mpv", - "tags": [ - "Visual" - ] - }, { "slug": "SassyScope", "name": "Sassy Scope", diff --git a/plugins/Makefile b/plugins/Makefile index 7931034..3560229 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -255,18 +255,12 @@ PLUGIN_FILES += Cardinal/src/glBars.cpp endif endif -ifneq ($(STATIC_BUILD),true) +ifneq ($(MOD_BUILD),true) PLUGIN_FILES += Cardinal/src/AudioFile.cpp ifneq ($(WASM),true) PLUGIN_FILES += Cardinal/src/Carla.cpp PLUGIN_FILES += Cardinal/src/Ildaeil.cpp endif -ifneq ($(HEADLESS),true) -ifeq ($(HAVE_X11),true) -PLUGIN_FILES += Cardinal/src/EmbedWidget.cpp -PLUGIN_FILES += Cardinal/src/MPV.cpp -endif -endif endif ifneq ($(HEADLESS),true) @@ -810,7 +804,7 @@ IHTSYN_CUSTOM_PER_FILE += mv_statevariable PLUGIN_FILES += $(filter-out JW-Modules/src/JWModules.cpp JW-Modules/src/Str1ker.cpp,$(wildcard JW-Modules/src/*.cpp)) -ifneq ($(STATIC_BUILD),true) +ifneq ($(MOD_BUILD),true) PLUGIN_FILES += JW-Modules/src/Str1ker.cpp PLUGIN_FILES += $(wildcard JW-Modules/lib/oscpack/ip/*.cpp) PLUGIN_FILES += $(wildcard JW-Modules/lib/oscpack/osc/*.cpp) diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index d5d1de8..bde0d12 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -1157,12 +1157,12 @@ static void initStatic__Cardinal() #else spl.removeModule("glBars"); #endif - #ifndef STATIC_BUILD + #ifndef __MOD_DEVICES__ p->addModel(modelAudioFile); #else spl.removeModule("AudioFile"); #endif - #if !(defined(DISTRHO_OS_WASM) || defined(STATIC_BUILD)) + #if !(defined(DISTRHO_OS_WASM) || defined(__MOD_DEVICES__)) p->addModel(modelCarla); p->addModel(modelIldaeil); #else @@ -1174,11 +1174,6 @@ static void initStatic__Cardinal() #else spl.removeModule("SassyScope"); #endif - #if defined(HAVE_X11) && !defined(HEADLESS) && !defined(STATIC_BUILD) - p->addModel(modelMPV); - #else - spl.removeModule("MPV"); - #endif #ifdef HAVE_FFTW3F p->addModel(modelAudioToCVPitch); #else @@ -2599,7 +2594,7 @@ static void initStatic__JW() p->addModel(modelCoolBreeze); p->addModel(modelPete); p->addModel(modelTimer); - #ifndef STATIC_BUILD + #ifndef __MOD_DEVICES__ p->addModel(modelStr1ker); #else spl.removeModule("Str1ker"); From 295f0b133202141deb63e5825a2c62c259b9a706 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 Oct 2025 20:06:26 +0200 Subject: [PATCH 19/20] Update dpf, use xvfb-run during win32/64 base build Signed-off-by: falkTX --- .github/workflows/build.yml | 2 +- dpf | 2 +- src/CardinalUI.cpp | 14 -------------- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b719da5..19fb6c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -426,7 +426,7 @@ jobs: export PATH="/usr/lib/ccache:${PATH}" source deps/PawPaw/local.env ${{ matrix.target }} make features - make NOOPT=true -j $(nproc) + xvfb-run make NOOPT=true -j $(nproc) - name: Build cross-compiled (carla) if: steps.cache.outputs.cache-hit == 'true' shell: bash diff --git a/dpf b/dpf index 4238e1c..2cc2280 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 4238e1c7f0351bbe488d79f0899c540543ac7583 +Subproject commit 2cc2280fa0d060cb137f7ab6f07f8b8b0133f3b4 diff --git a/src/CardinalUI.cpp b/src/CardinalUI.cpp index 806608d..3402e85 100644 --- a/src/CardinalUI.cpp +++ b/src/CardinalUI.cpp @@ -1259,20 +1259,6 @@ protected: #endif } -#if 0 - void uiReshape(const uint width, const uint height) override - { - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0, width, 0.0, height, -1.0, 1.0); - glViewport(0, 0, width, height); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - } -#endif - private: /** Set our UI class as non-copyable and add a leak detector just in case. From 6fda5c6ccd50c45279d273149af11c4b003cb154 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 24 Oct 2025 22:19:20 +0200 Subject: [PATCH 20/20] Fix wasm build Signed-off-by: falkTX --- dpf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpf b/dpf index 2cc2280..04eb914 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 2cc2280fa0d060cb137f7ab6f07f8b8b0133f3b4 +Subproject commit 04eb91490c70a0c3f524e473087e263d8a9d550f