From 8e62521572bb8c76c1e6b81fb67eb94ed96f50bb Mon Sep 17 00:00:00 2001 From: Don Cross Date: Tue, 7 Jan 2025 01:03:18 -0500 Subject: [PATCH 01/55] Sapphire v2.5.7: Elastika CPU optimization + resampler option. (#789) Elastika now uses about 60% of the CPU it used to, thanks to a complete overhaul of its physics engine. Added an optional resampler to run Elastika at a different rate than the engine rate. For backward compatibility, the resampler is disabled by default. UI improvement: the channel count sliders in Hiss, Pop, and Split/Add/Merge now visually "snap" in steps, instead of sliding smoothly. --- plugins/Sapphire | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Sapphire b/plugins/Sapphire index 9665f4b..53464d2 160000 --- a/plugins/Sapphire +++ b/plugins/Sapphire @@ -1 +1 @@ -Subproject commit 9665f4bddb59841ef74ff206fe91345c146fed52 +Subproject commit 53464d2e626f5203e4f666069a43950481bc2b42 From 89a18eb2f8af0c78bd60d621718fcec10c0327fb Mon Sep 17 00:00:00 2001 From: Don Cross Date: Wed, 8 Jan 2025 03:26:40 -0500 Subject: [PATCH 02/55] Sapphire v2.5.7, release candidate 2: Elastika minor cleanup (#790) Removed unused member variable PhysicsMesh::gravity. The gravity concept was abandoned before I released the first version of Elastika, and has never been used. --- plugins/Sapphire | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Sapphire b/plugins/Sapphire index 53464d2..f838c23 160000 --- a/plugins/Sapphire +++ b/plugins/Sapphire @@ -1 +1 @@ -Subproject commit 53464d2e626f5203e4f666069a43950481bc2b42 +Subproject commit f838c2364366c2b258cd63dd5ec5158237c96ed1 From 2e9bc2d68a31114c5170007b83fd6b983c126132 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Fri, 28 Feb 2025 06:18:17 -0500 Subject: [PATCH 03/55] Sapphire v2.5.8 - new module "Env". (#805) Added new module Sapphire Env: envelope follower and pitch detector. Elastika adds polyphonic stereo in/out options. Minor display glitch fixed in Tin + Tricorder combination. --- plugins/Sapphire | 2 +- plugins/plugins.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/Sapphire b/plugins/Sapphire index f838c23..c65bf21 160000 --- a/plugins/Sapphire +++ b/plugins/Sapphire @@ -1 +1 @@ -Subproject commit f838c2364366c2b258cd63dd5ec5158237c96ed1 +Subproject commit c65bf21e00c984613749ce76ba07633f3eb8d61f diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 5882a85..67829de 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -3174,6 +3174,7 @@ static void initStatic__Sapphire() { p->addModel(modelSapphireChaops); p->addModel(modelSapphireElastika); + p->addModel(modelSapphireEnv); p->addModel(modelSapphireFrolic); p->addModel(modelSapphireGalaxy); p->addModel(modelSapphireGlee); From fc854653dac9b7c7f662a28391be8b97f5ca7518 Mon Sep 17 00:00:00 2001 From: dreamer <1185977+dromer@users.noreply.github.com> Date: Mon, 10 Mar 2025 07:10:41 +0100 Subject: [PATCH 04/55] update Befaco to v2.9.0 and add new modules (#810) --- plugins/Befaco | 2 +- plugins/Makefile | 2 +- plugins/plugins.cpp | 15 ++++++++++++++- src/custom/dep.cpp | 5 +++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/plugins/Befaco b/plugins/Befaco index 5a80023..5914634 160000 --- a/plugins/Befaco +++ b/plugins/Befaco @@ -1 +1 @@ -Subproject commit 5a80023d86e0f67ead3e27385170310cd430d44c +Subproject commit 5914634cd91cf11cc32394616252beb19c5c934c diff --git a/plugins/Makefile b/plugins/Makefile index 58bd300..ff10677 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -560,7 +560,7 @@ PLUGIN_FILES += $(filter-out Befaco/src/plugin.cpp Befaco/src/MidiThing.cpp,$(wi PLUGIN_FILES += $(wildcard Befaco/src/noise-plethora/*/*.cpp) # modules/types which are present in other plugins -BEFACO_CUSTOM = ADSR Mixer chowdsp Burst RecordButton +BEFACO_CUSTOM = ADSR Mixer chowdsp Burst RecordButton Mixer2 Slew BEFACO_FLAGS = $(filter-out -fsingle-precision-constant,$(filter-out -std=gnu++11,$(BUILD_CXX_FLAGS))) BEFACO_FLAGS += -std=gnu++17 diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 67829de..096d2d9 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -147,10 +147,14 @@ extern Model* modelChord; #define modelADSR modelBefacoADSR #define modelMixer modelBefacoMixer #define modelBurst modelBefacoBurst +#define modelMixer2 modelBefacoMixer2 +#define modelSlew modelBefacoSlew #include "Befaco/src/plugin.hpp" #undef modelADSR #undef modelMixer #undef modelBurst +#undef modelMixer2 +#undef modelSlew // Bidoo #include "Bidoo/src/plugin.hpp" @@ -1614,6 +1618,8 @@ static void initStatic__Befaco() #define modelADSR modelBefacoADSR #define modelMixer modelBefacoMixer #define modelBurst modelBefacoBurst +#define modelMixer2 modelBefacoMixer2 +#define modelSlew modelBefacoSlew p->addModel(modelEvenVCO); p->addModel(modelRampage); p->addModel(modelABC); @@ -1640,9 +1646,16 @@ static void initStatic__Befaco() p->addModel(modelOctaves); p->addModel(modelBypass); p->addModel(modelBandit); + p->addModel(modelAtte); + p->addModel(modelAxBC); + p->addModel(modelMixer2); + p->addModel(modelMuDi); + p->addModel(modelSlew); #undef modelADSR #undef modelMixer #undef modelBurst +#undef modelMixer2 +#undef modelSlew // NOTE disabled in Cardinal due to MIDI usage spl.removeModule("MidiThingV2"); @@ -2044,7 +2057,7 @@ static void initStatic__CVfunk() p->addModel(modelStepWave); p->addModel(modelPreeeeeeeeeeessedDuck); p->addModel(modelArrange); - p->addModel(modelTriDelay); + p->addModel(modelTriDelay); #undef modelSteps } } diff --git a/src/custom/dep.cpp b/src/custom/dep.cpp index c6b83cf..12feb52 100644 --- a/src/custom/dep.cpp +++ b/src/custom/dep.cpp @@ -435,6 +435,11 @@ static const struct { { kModeBefaco, "/Befaco/res/panels/Octaves.svg" }, { kModeBefaco, "/Befaco/res/panels/Bypass.svg" }, { kModeBefaco, "/Befaco/res/panels/Bandit.svg" }, + { kModeBefaco, "/Befaco/res/panels/Atte.svg" }, + { kModeBefaco, "/Befaco/res/panels/AxBC.svg" }, + { kModeBefaco, "/Befaco/res/panels/Mixer2.svg" }, + { kModeBefaco, "/Befaco/res/panels/MuDi.svg" }, + { kModeBefaco, "/Befaco/res/panels/Slew.svg" }, // GPLv3+ { kModeCardinal, "/Cardinal/res/AudioFile.svg" }, { kModeCardinal, "/Cardinal/res/AudioToCVPitch.svg" }, From 04d9e2762d2741a46572e0e5f1312ff36055335e Mon Sep 17 00:00:00 2001 From: rl2939 <60378449+rl2939@users.noreply.github.com> Date: Tue, 18 Mar 2025 02:08:49 -0400 Subject: [PATCH 05/55] Update JW-Modules to 2.0.8. (#814) * Update JW-Modules to 2.0.8 * Update build.yml --- .github/workflows/build.yml | 4 ++-- plugins/JW-Modules | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ba1e33c..b76a8c4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -583,8 +583,8 @@ jobs: - name: Set up dependencies run: | # custom repos - wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_11.1.0_all.deb - sudo dpkg -i kxstudio-repos_11.1.0_all.deb + wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_11.2.0_all.deb + sudo dpkg -i kxstudio-repos_11.2.0_all.deb sudo apt-get update -qq # build-deps sudo apt-get install -yqq libdbus-1-dev libgl1-mesa-dev liblo-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev diff --git a/plugins/JW-Modules b/plugins/JW-Modules index 9d8f851..d49cb1d 160000 --- a/plugins/JW-Modules +++ b/plugins/JW-Modules @@ -1 +1 @@ -Subproject commit 9d8f8515deb20d7e14ca85b4c1d04ec6b66b3e8d +Subproject commit d49cb1de630f278852d098dfbb09e3f4c9a8165e From 0407fefafb20044097b502ed7265165aac38e74d Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 23 Apr 2025 21:58:33 +0200 Subject: [PATCH 06/55] Update dpf Signed-off-by: falkTX --- dpf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpf b/dpf index 32d911c..d2f31da 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 32d911c1decd721520e44adce2ca7a92ca0ec4f0 +Subproject commit d2f31dadba31dcd33feaac7c26587491f796ab87 From 1d8278b591e90679334b937f222b5a00fec6ec49 Mon Sep 17 00:00:00 2001 From: rl2939 <60378449+rl2939@users.noreply.github.com> Date: Wed, 23 Apr 2025 16:04:45 -0400 Subject: [PATCH 07/55] [Build System] Update Ubuntu version to 22.04 (#824) * Update Ubuntu build. * Add package python-is-python3. * Try installing python3 instead of python. * Replace Ubuntu version with 22.04. * Update macos to 14. * Revert "Update macos to 14." --- .github/workflows/build.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b76a8c4..c5c9785 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: target: [aarch64, armhf, i686, riscv64, x86_64] runs-on: ubuntu-latest container: - image: ubuntu:20.04 + image: ubuntu:22.04 steps: - name: Install git run: | @@ -125,7 +125,7 @@ jobs: *.tar.gz linux-x86_64-debug: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -239,7 +239,7 @@ jobs: target: modduox-static - name: moddwarf target: moddwarf - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -254,7 +254,7 @@ jobs: - name: Set up dependencies run: | sudo apt-get update -qq - sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static + sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python3 libtool-bin liblo-dev qemu-user-static sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra sudo apt-get clean - name: Bootstrap toolchain @@ -471,7 +471,7 @@ jobs: Cardinal-*.zip headless: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -488,7 +488,7 @@ jobs: make HEADLESS=true -j $(nproc) lto: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -505,7 +505,7 @@ jobs: make WITH_LTO=true -j $(nproc) native sysdeps: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -521,7 +521,7 @@ jobs: make SYSDEPS=true -j $(nproc) source-tarball: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -561,7 +561,7 @@ jobs: /home/runner/*/*/cardinal*.tar.xz plugin-validation: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: From 850e76ec10d565712df3b63a91e78985e6dff845 Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 23 Apr 2025 23:39:51 +0200 Subject: [PATCH 08/55] Update PawPaw, fixing build with new cmake Signed-off-by: falkTX --- deps/PawPaw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/PawPaw b/deps/PawPaw index 0985cf8..0946f78 160000 --- a/deps/PawPaw +++ b/deps/PawPaw @@ -1 +1 @@ -Subproject commit 0985cf8d1c3a00b1958ef90e0f1aa511b865241a +Subproject commit 0946f783f0e9e230bca893289325f91144a3429f From fbea15e1036e70685fe0121c2991d95bd16b7fda Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 26 Apr 2025 22:36:49 +0200 Subject: [PATCH 09/55] Add darkglass-anagram headless build Signed-off-by: falkTX --- .github/workflows/build.yml | 4 +++- dpf | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c5c9785..aef017e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -228,10 +228,12 @@ jobs: files: | ${{ github.event.repository.name }}-*.pkg - modaudio: + mod-plugin-builder: strategy: matrix: include: + - name: darkglass-anagram + target: darkglass-anagram - name: modduo target: modduo-static extraflags: MODDUO=true diff --git a/dpf b/dpf index d2f31da..f3be5ae 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit d2f31dadba31dcd33feaac7c26587491f796ab87 +Subproject commit f3be5aee081d87cc7a6795110525569670ff0907 From 52fa1604f0118ea1c769f694ecf2421b8dae9360 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 27 Apr 2025 00:40:14 +0200 Subject: [PATCH 10/55] Force-fix build with cmake 4 Signed-off-by: falkTX --- deps/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/deps/Makefile b/deps/Makefile index 0354e0c..c53e998 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -57,6 +57,7 @@ SPACE += CMAKE = cmake CMAKE += -DCMAKE_INSTALL_LIBDIR=lib CMAKE += -DCMAKE_INSTALL_PREFIX='$(RACK_DEP_PATH)' +CMAKE += -DCMAKE_POLICY_VERSION_MINIMUM=3.5 CMAKE += -DBUILD_SHARED_LIBS=OFF # make sure debug/release matches From d30b356845f948e9db43311182554a5465d71644 Mon Sep 17 00:00:00 2001 From: rl2939 <60378449+rl2939@users.noreply.github.com> Date: Tue, 13 May 2025 15:05:58 -0400 Subject: [PATCH 11/55] Added eightfold. (#735) * Added eightfold. * Add C++17 flags for eightfold. * Add comment to explain C++17 flags. * Undo "Add comment to explain C++17 flags." * Update license.md to add artwork infomation about eightfold. * eightfold -> eightfold/* in LICENSES.md --- .gitmodules | 3 +++ README.md | 1 + docs/LICENSES.md | 2 ++ plugins/Makefile | 18 ++++++++++++++++++ plugins/eightfold | 1 + plugins/plugins.cpp | 21 +++++++++++++++++++++ 6 files changed, 46 insertions(+) create mode 160000 plugins/eightfold diff --git a/.gitmodules b/.gitmodules index 8460a09..b054833 100644 --- a/.gitmodules +++ b/.gitmodules @@ -260,4 +260,7 @@ [submodule "plugins/admiral"] path = plugins/admiral url = https://github.com/wapiflapi/admiral.git +[submodule "plugins/eightfold"] + path = plugins/eightfold + url = https://github.com/scanner-darkly/eightfold.git diff --git a/README.md b/README.md index 3de00ba..a216d0e 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,7 @@ At the moment the following 3rd-party modules are provided: - [dBiz](https://github.com/dBiz/dBiz) - [DHE Modules](https://github.com/dhemery/DHE-Modules) - [DrumKit](https://svmodular.com/plugin/vcv/drumkit.html) +- [eightfold](https://github.com/scanner-darkly/eightfold) - [EnigmaCurry](https://github.com/EnigmaCurry/EnigmaCurry-vcv-pack) - [E-Series](https://github.com/VCVRack/ESeries) - [ExpertSleepers Encoders](https://expert-sleepers.co.uk/vcvrack_encoders.html) diff --git a/docs/LICENSES.md b/docs/LICENSES.md index 7e17118..7e6318c 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -40,6 +40,7 @@ Below follows a list of all code licenses used in Cardinal and linked submodules | dBiz | GPL-3.0-or-later | | | DHE-Modules | MIT | | | DrumKit | CC0-1.0 | | +| eightfold | GPL-3.0-or-later | | | EnigmaCurry | GPL-3.0-or-later | | | E-Series | GPL-3.0-or-later | | | ExpertSleepers Encoders | MIT | | @@ -178,6 +179,7 @@ Below is a list of artwork licenses from plugins | DHE-Modules/* | MIT | Same license as source code | | DrumKit/* | CC0-1.0 | | | DrumKit/component/NovaMono.ttf | OFL-1.1-RFN | | +| eightfold/* | GPL-3.0-or-later | No artwork specific license provided | | EnigmaCurry/res/fonts/dseg/* | OFL-1.1-RFN | | | EnigmaCurry/res/fonts/Fantasque/* | OFL-1.1 | | | EnigmaCurry/res/fonts/manrope/* | OFL-1.1 | | diff --git a/plugins/Makefile b/plugins/Makefile index ff10677..07901ec 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -707,6 +707,17 @@ PLUGIN_FILES += $(wildcard DrumKit/deps/SynthDevKit/src/*.cpp) # modules/types which are present in other plugins DRUMKIT_CUSTOM = ADSR Envelope LowFrequencyOscillator +# -------------------------------------------------------------- +# eightfold + +PLUGIN_FILES += $(filter-out eightfold/src/plugin.cpp,$(wildcard eightfold/src/*.cpp)) +# modules/types which are present in other plugins +EIGHTFOLD_CUSTOM = Comparator comparator + + +EIGHTFOLD_FLAGS = $(filter-out -std=gnu++11,$(BUILD_CXX_FLAGS)) +EIGHTFOLD_FLAGS += -std=gnu++17 + # -------------------------------------------------------------- # EnigmaCurry @@ -2347,6 +2358,13 @@ $(BUILD_DIR)/DrumKit/%.cpp.o: DrumKit/%.cpp -Dinit=init__DrumKit \ -Wno-sign-compare +$(BUILD_DIR)/eightfold/src/%.cpp.o: eightfold/src/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(EIGHTFOLD_FLAGS) -c -o $@ \ + $(foreach m,$(EIGHTFOLD_CUSTOM),$(call custom_module_names,$(m),eightfold)) \ + -DpluginInstance=pluginInstance__eightfold + $(BUILD_DIR)/EnigmaCurry/src/%.cpp.o: EnigmaCurry/src/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/eightfold b/plugins/eightfold new file mode 160000 index 0000000..a541c5c --- /dev/null +++ b/plugins/eightfold @@ -0,0 +1 @@ +Subproject commit a541c5cfdc3fb9ad8e4f345470f817eaf576b987 diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 096d2d9..0bdb641 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -399,6 +399,9 @@ namespace xycloid { void init(Plugin*); } #include "DrumKit/src/DrumKit.hpp" void setupSamples(); +// eightfold +#include "eightfold/src/plugin.hpp" + // EnigmaCurry #define modelPulse modelEnigmaCurryPulse #include "EnigmaCurry/src/plugin.hpp" @@ -952,6 +955,7 @@ Plugin* pluginInstance__CVfunk; Plugin* pluginInstance__dBiz; Plugin* pluginInstance__DHE; extern Plugin* pluginInstance__DrumKit; +Plugin* pluginInstance__eightfold; Plugin* pluginInstance__EnigmaCurry; Plugin* pluginInstance__ESeries; Plugin* pluginInstance__ExpertSleepersEncoders; @@ -2164,6 +2168,22 @@ static void initStatic__DrumKit() } } +static void initStatic__eightfold() +{ + Plugin* const p = new Plugin; + pluginInstance__eightfold = p; + + const StaticPluginLoader spl(p, "eightfold"); + if (spl.ok()) + { + p->addModel(modelSDOrcasHeartV2); + p->addModel(modelSDFormation); + p->addModel(modelSDLines); + p->addModel(modelSDTransgate); + p->addModel(modelSDComparator); + } +} + static void initStatic__EnigmaCurry() { Plugin* const p = new Plugin; @@ -3580,6 +3600,7 @@ void initStaticPlugins() initStatic__dBiz(); initStatic__DHE(); initStatic__DrumKit(); + initStatic__eightfold(); initStatic__EnigmaCurry(); initStatic__ESeries(); initStatic__ExpertSleepersEncoders(); From ed75b4989c7e3c9bf0f38e174c7e4352fc4a8b59 Mon Sep 17 00:00:00 2001 From: rl2939 <60378449+rl2939@users.noreply.github.com> Date: Tue, 13 May 2025 15:06:05 -0400 Subject: [PATCH 12/55] Update HetrickCV. (#795) * Update HetrickCV. * Update makefile --- plugins/HetrickCV | 2 +- plugins/Makefile | 1 + plugins/plugins.cpp | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/HetrickCV b/plugins/HetrickCV index 49e2bc0..52b1e03 160000 --- a/plugins/HetrickCV +++ b/plugins/HetrickCV @@ -1 +1 @@ -Subproject commit 49e2bc0f6a3ef4d1616b78d6280a6d4e7ee222d3 +Subproject commit 52b1e03c34bd1baa264395c150cd62d8e192b12f diff --git a/plugins/Makefile b/plugins/Makefile index 07901ec..c3a7e3f 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -1457,6 +1457,7 @@ clean: PLUGIN_LIST = $(subst /plugin.json,,$(wildcard */plugin.json)) UNWANTED_FILES = HetrickCV/res/illustrator - deprecated/MyModule.svg +UNWANTED_FILES += $(wildcard "HetrickCV/res/affinity redo/*") UNWANTED_FILES += $(wildcard Meander/res/*) UNWANTED_FILES += $(wildcard Mog/res/*) UNWANTED_FILES += $(wildcard Mog/res/*/*) diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 0bdb641..9f499fe 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -457,6 +457,7 @@ void saveGtgPluginDefault(const char*, int) {} extern Model* modelTwoToFour; extern Model* modelAnalogToDigital; extern Model* modelASR; +extern Model* modelBinaryCounter; extern Model* modelBinaryGate; extern Model* modelBinaryNoise; extern Model* modelBitshift; @@ -2416,6 +2417,7 @@ static void initStatic__HetrickCV() p->addModel(modelTwoToFour); p->addModel(modelAnalogToDigital); p->addModel(modelASR); + p->addModel(modelBinaryCounter); p->addModel(modelBinaryGate); p->addModel(modelBinaryNoise); p->addModel(modelBitshift); From 7587c28d12bfcec29bdd8791a21d801768a2ffae Mon Sep 17 00:00:00 2001 From: dreamer <1185977+dromer@users.noreply.github.com> Date: Wed, 14 May 2025 07:05:37 +0200 Subject: [PATCH 13/55] update JW-Modules (#828) --- docs/LICENSES.md | 1 + plugins/JW-Modules | 2 +- plugins/Makefile | 2 +- plugins/plugins.cpp | 5 +++++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/LICENSES.md b/docs/LICENSES.md index 7e6318c..671f0e3 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -203,6 +203,7 @@ Below is a list of artwork licenses from plugins | ImpromptuModular/res/comp/complib/* | CC-BY-NC-4.0 | | | JW-Modules/* | BSD-3-Clause | No artwork specific license provided | | JW-Modules/DejaVuSansMono.ttf | Bitstream-Vera | Unused in Cardinal | +| JW-Modules/res/fonts/ShareTechMono-Regular.ttf | OFL-1.1 | | | kocmoc/* | GPL-3.0-or-later | No artwork specific license provided | | LifeFormModular/* | MIT | No artwork specific license provided | | LilacLoop/* | GPL-3.0-or-later | No artwork specific license provided | diff --git a/plugins/JW-Modules b/plugins/JW-Modules index d49cb1d..72c8b56 160000 --- a/plugins/JW-Modules +++ b/plugins/JW-Modules @@ -1 +1 @@ -Subproject commit d49cb1de630f278852d098dfbb09e3f4c9a8165e +Subproject commit 72c8b569dd2cc12ce16abe2da582fc58e07c3d54 diff --git a/plugins/Makefile b/plugins/Makefile index c3a7e3f..53042ba 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -835,7 +835,7 @@ endif endif # modules/types which are present in other plugins -JW_CUSTOM = PlayHead Quantizer +JW_CUSTOM = PlayHead Quantizer Arrange # -------------------------------------------------------------- # kocmoc diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 9f499fe..1ed3649 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -574,8 +574,10 @@ extern Model* modelBlankPanel; // JW-Modules #define modelQuantizer modelJWQuantizer +#define modelArrange modelJWArrange #include "JW-Modules/src/JWModules.hpp" #undef modelQuantizer +#undef modelArrange // kocmoc #include "kocmoc/src/plugin.hpp" @@ -2561,6 +2563,7 @@ static void initStatic__JW() if (spl.ok()) { #define modelQuantizer modelJWQuantizer +#define modelArrange modelJWArrange p->addModel(modelAdd5); p->addModel(modelAbcdSeq); p->addModel(modelBouncyBalls); @@ -2596,7 +2599,9 @@ static void initStatic__JW() #else spl.removeModule("Str1ker"); #endif + p->addModel(modelArrange); #undef modelQuantizer +#undef modelArrange } } From 87d6e4eeceb27a4ad62238d60f34eeb5e352c010 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Fri, 30 May 2025 22:26:51 -0400 Subject: [PATCH 14/55] Sapphire v2.5.9 - new module Echo (#832) * Sapphire v2.5.9 - new module Echo Added a new multitap delay module: [Echo](https://github.com/cosinekitty/sapphire/blob/main/doc/Echo.md). Added "neon mode" menu options to make the Sapphire panel glow. This effect is most visible when the room brightness is dim. Chaops did not reset the FREEZE button on initialize. This has been fixed. Fixed minor polyphony bug in Env: the number of channels in the GAIN control's CV input did not affect the number of output channels. This has been fixed. Fixed typos in help text for Gravy and Sauce. * Sapphire v2.5.9 attempt 2: fixed memory errors * Sapphire v2.5.9 - fixed build problem for Windows. There was a compatibility problem between MINGW and my own member function named `format`. I don't need MINGW so I disabled it in the Cardinal Makefile. This solution was suggested by @falkTX. It is nice because I don't have to change any Sapphire code! --- plugins/Makefile | 1 + plugins/Sapphire | 2 +- plugins/plugins.cpp | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/Makefile b/plugins/Makefile index 53042ba..b975411 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -2763,6 +2763,7 @@ $(BUILD_DIR)/Sapphire/%.cpp.o: Sapphire/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -std=gnu++17 -c -o $@ \ $(foreach m,$(SAPPHIRE_CUSTOM),$(call custom_module_names,$(m),Sapphire)) \ + -DSKIP_MINGW_FORMAT \ -DpluginInstance=pluginInstance__sapphire $(BUILD_DIR)/sonusmodular/%.cpp.o: sonusmodular/%.cpp diff --git a/plugins/Sapphire b/plugins/Sapphire index c65bf21..a1f7deb 160000 --- a/plugins/Sapphire +++ b/plugins/Sapphire @@ -1 +1 @@ -Subproject commit c65bf21e00c984613749ce76ba07633f3eb8d61f +Subproject commit a1f7deb7931b7ef0fc4fa9f8a3871d9e37e81e73 diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 1ed3649..45c0f52 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -3213,6 +3213,9 @@ static void initStatic__Sapphire() if (spl.ok()) { p->addModel(modelSapphireChaops); + p->addModel(modelSapphireEcho); + p->addModel(modelSapphireEchoOut); + p->addModel(modelSapphireEchoTap); p->addModel(modelSapphireElastika); p->addModel(modelSapphireEnv); p->addModel(modelSapphireFrolic); From 088953ad90d9a6b17bdfc6bcdc6565c487bd3fc2 Mon Sep 17 00:00:00 2001 From: rl2939 <60378449+rl2939@users.noreply.github.com> Date: Sun, 15 Jun 2025 05:36:38 -0400 Subject: [PATCH 15/55] Update kocmoc. (#837) --- plugins/kocmoc | 2 +- plugins/plugins.cpp | 1 + src/custom/dep.cpp | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/kocmoc b/plugins/kocmoc index eaf7cbf..ea69aca 160000 --- a/plugins/kocmoc +++ b/plugins/kocmoc @@ -1 +1 @@ -Subproject commit eaf7cbf3af0a8525d3c649c53eab476c3052d41b +Subproject commit ea69acab96db49c32601b609cdfe06444ecee0e8 diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 45c0f52..6f73b37 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -2618,6 +2618,7 @@ static void initStatic__kocmoc() p->addModel(modelTRG); p->addModel(modelLADR); p->addModel(modeluLADR); + p->addModel(modelDIOD); p->addModel(modelOP); p->addModel(modelPHASR); p->addModel(modelMUL); diff --git a/src/custom/dep.cpp b/src/custom/dep.cpp index 12feb52..e99f2ba 100644 --- a/src/custom/dep.cpp +++ b/src/custom/dep.cpp @@ -284,6 +284,7 @@ static const struct { { kModeLittleUtils, "/LittleUtils/res/TeleportOut.svg", {}, -1 }, // GPL-3.0-or-later { kModeKocmoc, "/kocmoc/res/DDLY.svg", {}, -1 }, + { kModeKocmoc, "/kocmoc/res/DIOD.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/LADR.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/uLADR.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/MUL.svg", {}, -1 }, From a6e5f1915771ac08b275e5d25ff51d41a29013a7 Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 16 Jun 2025 20:55:22 +0200 Subject: [PATCH 16/55] Fix wasm build Signed-off-by: falkTX --- plugins/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Makefile b/plugins/Makefile index b975411..53088e9 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -843,7 +843,7 @@ JW_CUSTOM = PlayHead Quantizer Arrange PLUGIN_FILES += $(filter-out kocmoc/src/plugin.cpp,$(wildcard kocmoc/src/*.cpp)) # modules/types which are present in other plugins -KOCMOC_CUSTOM = Phasor __ct_base __ct_comp +KOCMOC_CUSTOM = Diode Phasor __ct_base __ct_comp # -------------------------------------------------------------- # LifeFormModular From 03eee39a6ae79de2aa11525f83166d33063a59d2 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Tue, 17 Jun 2025 01:43:11 -0400 Subject: [PATCH 17/55] Sapphire v2.6.000 (#838) * Sapphire v2.6.000 Complete overhaul of undo/redo: now you can undo/redo most actions across Sapphire modules. Now in Echo, when you undo creating an Echo module, then redo it, it no longer automatically re-creates the Echo Out to the right. This is because doing so destroys any future actions that still could be redone. You can redo creating the Echo Out, followed by redoing anything that happened after that. Echo used to only support panning when there were exactly 2 channels of audio. Now you can pan any even number of polyphonic channels arranged in the order (L0, R0, L1, R1, ..., L7, R7). Now when a Sapphire module is initialized, any low-sensitivity attenuverters are reset to normal sensitivity. I also fixed some other miscellaneous things that weren't being reset to their default on initialize. Sapphire Pop now has two new buttons: - Pulse mode: toggles output between triggers/gates - Sync: press the button to sync polyphonic channels The option to enable/disable the output limiter warning light now appears on the gain knob itself in the following modules: Elastika, Nucleus, Polynucleus, Sauce, Gravy. The option still exists in the main menu. Display a gate/trigger symbol over the REV label and FRZ label. You can click on it to toggle the gate/trigger mode. Sapphire Gravy no longer makes a click/pop sound when you press the 3-way band mode switch (LP, BP, HP). When you click on the GATE/TRIGGER label in Moots, it now toggles between GATE and TRIGGER. Before, you had to use a menu option to toggle. The menu option is still there, but the new way is much easier. * Second attempt at merging Sapphire v2.6.000 : C++ template help for some compilers. * Third attempt to merge Sapphire v 2.6.000. The use of a deduction hint did not help build Sapphire. This one compiler is not able to figure out the template parameters, so I added explicit template parameters in every case that caused an error. --- plugins/Sapphire | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Sapphire b/plugins/Sapphire index a1f7deb..e2bcefc 160000 --- a/plugins/Sapphire +++ b/plugins/Sapphire @@ -1 +1 @@ -Subproject commit a1f7deb7931b7ef0fc4fa9f8a3871d9e37e81e73 +Subproject commit e2bcefcaa7753f017cd131a28aae0e5e346aafec From 5a0b783fbef7e55265e8f8e2d4f75067ae63a565 Mon Sep 17 00:00:00 2001 From: dreamer <1185977+dromer@users.noreply.github.com> Date: Tue, 17 Jun 2025 17:00:27 +0200 Subject: [PATCH 18/55] use WSTD-Drums (#836) * use WSTD-Drums --- .gitmodules | 7 ++--- README.md | 2 +- docs/LICENSES.md | 2 +- plugins/DrumKit | 1 - plugins/Makefile | 46 ++++++++++++++-------------- plugins/WSTD-Drums | 1 + plugins/plugins.cpp | 60 ++++++++++++++++++------------------- src/CardinalRemote/Makefile | 2 +- src/Makefile.cardinal.mk | 2 +- src/custom/dep.cpp | 35 ++++++++++------------ src/override/plugin.cpp | 13 ++++++++ 11 files changed, 89 insertions(+), 82 deletions(-) delete mode 160000 plugins/DrumKit create mode 160000 plugins/WSTD-Drums diff --git a/.gitmodules b/.gitmodules index b054833..fadc093 100644 --- a/.gitmodules +++ b/.gitmodules @@ -49,9 +49,9 @@ [submodule "plugins/ValleyAudio"] path = plugins/ValleyAudio url = https://github.com/ValleyAudio/ValleyRackFree.git -[submodule "plugins/DrumKit"] - path = plugins/DrumKit - url = https://github.com/SVModular/DrumKit.git +[submodule "plugins/WSTD-Drums"] + path = plugins/WSTD-Drums + url = https://github.com/Wasted-Audio/WSTD-Drums.git [submodule "carla"] path = carla url = https://github.com/falkTX/Carla.git @@ -263,4 +263,3 @@ [submodule "plugins/eightfold"] path = plugins/eightfold url = https://github.com/scanner-darkly/eightfold.git - diff --git a/README.md b/README.md index a216d0e..2f6bdb7 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,6 @@ At the moment the following 3rd-party modules are provided: - [CVfunk](https://github.com/codygeary/CVfunk-Modules) - [dBiz](https://github.com/dBiz/dBiz) - [DHE Modules](https://github.com/dhemery/DHE-Modules) -- [DrumKit](https://svmodular.com/plugin/vcv/drumkit.html) - [eightfold](https://github.com/scanner-darkly/eightfold) - [EnigmaCurry](https://github.com/EnigmaCurry/EnigmaCurry-vcv-pack) - [E-Series](https://github.com/VCVRack/ESeries) @@ -199,6 +198,7 @@ At the moment the following 3rd-party modules are provided: - [Valley](https://github.com/ValleyAudio/ValleyRackFree) - [Voxglitch](https://github.com/clone45/voxglitch) - [WhatTheRack](https://github.com/korfuri/WhatTheRack) +- [WSTD-Drums](https://github.com/Wasted-Audio/WSTD-Drums) - [ZetaCarinae](https://github.com/mhampton/ZetaCarinaeModules) - [ZZC](https://github.com/zezic/ZZC) diff --git a/docs/LICENSES.md b/docs/LICENSES.md index 671f0e3..abd1431 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -39,7 +39,6 @@ Below follows a list of all code licenses used in Cardinal and linked submodules | CVfunk | MIT | | | dBiz | GPL-3.0-or-later | | | DHE-Modules | MIT | | -| DrumKit | CC0-1.0 | | | eightfold | GPL-3.0-or-later | | | EnigmaCurry | GPL-3.0-or-later | | | E-Series | GPL-3.0-or-later | | @@ -92,6 +91,7 @@ Below follows a list of all code licenses used in Cardinal and linked submodules | unless_modules | GPL-3.0-or-later | | | Valley | GPL-3.0-or-later | | | Voxglitch | GPL-3.0-or-later | | +| WSTD-Drums | CC0-1.0 | | | WhatTheRack | WTFPL | | | ZetaCarinae | GPL-3.0-or-later | | | ZZC | GPL-3.0-or-later | | diff --git a/plugins/DrumKit b/plugins/DrumKit deleted file mode 160000 index b94c5de..0000000 --- a/plugins/DrumKit +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b94c5deb9b93d810f582221f03db8a6feaee6679 diff --git a/plugins/Makefile b/plugins/Makefile index 53088e9..a97ac9f 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -694,19 +694,6 @@ DBIZ_CUSTOM_PER_FILE = LERP MultiFilter Oscillator calcOutput sineOsc subBank PLUGIN_FILES += $(filter-out DHE-Modules/src/plugin.cpp,$(wildcard DHE-Modules/src/modules/*/init.cpp)) -# -------------------------------------------------------------- -# DrumKit - -PLUGIN_FILES += $(wildcard DrumKit/src/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/src/controller/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/src/view/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/src/model/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/deps/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/deps/SynthDevKit/src/*.cpp) - -# modules/types which are present in other plugins -DRUMKIT_CUSTOM = ADSR Envelope LowFrequencyOscillator - # -------------------------------------------------------------- # eightfold @@ -1338,6 +1325,19 @@ VOXGLITCH_CUSTOM_PER_FILE = AudioBuffer GateSequencer Grain SamplePlayer Sequenc PLUGIN_FILES += $(filter-out WhatTheRack/src/WhatTheRack.cpp,$(wildcard WhatTheRack/src/*.cpp)) +# -------------------------------------------------------------- +# WSTD-Drums + +PLUGIN_FILES += $(wildcard WSTD-Drums/src/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/src/controller/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/src/view/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/src/model/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/deps/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/deps/SynthDevKit/src/*.cpp) + +# modules/types which are present in other plugins +WSTD_DRUMS_CUSTOM = ADSR Envelope LowFrequencyOscillator + # -------------------------------------------------------------- # ZetaCarinaeModules @@ -1487,7 +1487,7 @@ RESOURCE_FILES += BaconPlugs/res/midi/goldberg RESOURCE_FILES += Befaco/res/SpringReverbIR.f32 RESOURCE_FILES += cf/playeroscs RESOURCE_FILES += DHE-Modules/svg -RESOURCE_FILES += DrumKit/res/samples +RESOURCE_FILES += WSTD-Drums/res/samples RESOURCE_FILES += Meander/res RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityPresets RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityShapes @@ -2350,15 +2350,6 @@ $(BUILD_DIR)/DHE-Modules/src/%.cpp.o: DHE-Modules/src/%.cpp -DpluginInstance=pluginInstance__DHE \ -IDHE-Modules/src -$(BUILD_DIR)/DrumKit/%.cpp.o: DrumKit/%.cpp - -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" - @echo "Compiling $<" - $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ - $(foreach m,$(DRUMKIT_CUSTOM),$(call custom_module_names,$(m),DrumKit)) \ - -DpluginInstance=pluginInstance__DrumKit \ - -Dinit=init__DrumKit \ - -Wno-sign-compare - $(BUILD_DIR)/eightfold/src/%.cpp.o: eightfold/src/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" @@ -2846,6 +2837,15 @@ $(BUILD_DIR)/WhatTheRack/%.cpp.o: WhatTheRack/%.cpp $(foreach m,$(WHATTHERACK_CUSTOM),$(call custom_module_names,$(m),WhatTheRack)) \ -DpluginInstance=pluginInstance__WhatTheRack +$(BUILD_DIR)/WSTD-Drums/%.cpp.o: WSTD-Drums/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(WSTD_DRUMS_CUSTOM),$(call custom_module_names,$(m),WSTD_Drums)) \ + -DpluginInstance=pluginInstance__WSTD_Drums \ + -Dinit=init__WSTD_Drums \ + -Wno-sign-compare + $(BUILD_DIR)/ZamAudio/%.cpp.o: ZamAudio/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/WSTD-Drums b/plugins/WSTD-Drums new file mode 160000 index 0000000..05330ce --- /dev/null +++ b/plugins/WSTD-Drums @@ -0,0 +1 @@ +Subproject commit 05330ce99f4ec742f906c77ab5d8758a15decb4c diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 6f73b37..bc11224 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -395,10 +395,6 @@ namespace truth { void init(Plugin*); } namespace xycloid { void init(Plugin*); } } -// DrumKit -#include "DrumKit/src/DrumKit.hpp" -void setupSamples(); - // eightfold #include "eightfold/src/plugin.hpp" @@ -900,6 +896,10 @@ void surgext_rack_update_theme(); // WhatTheRack #include "WhatTheRack/src/WhatTheRack.hpp" +// WSTD-Drums +#include "WSTD-Drums/src/WSTD_Drums.hpp" +void setupSamples(); + // ZetaCarinaeModules #include "ZetaCarinaeModules/src/plugin.hpp" @@ -957,7 +957,6 @@ Plugin* pluginInstance__Computerscare; Plugin* pluginInstance__CVfunk; Plugin* pluginInstance__dBiz; Plugin* pluginInstance__DHE; -extern Plugin* pluginInstance__DrumKit; Plugin* pluginInstance__eightfold; Plugin* pluginInstance__EnigmaCurry; Plugin* pluginInstance__ESeries; @@ -1010,6 +1009,7 @@ Plugin* pluginInstance__unless_modules; Plugin* pluginInstance__ValleyAudio; Plugin* pluginInstance__Voxglitch; Plugin* pluginInstance__WhatTheRack; +extern Plugin* pluginInstance__WSTD_Drums; Plugin* pluginInstance__ZetaCarinaeModules; Plugin* pluginInstance__ZZC; @@ -2147,30 +2147,6 @@ static void initStatic__DHE() } } -static void initStatic__DrumKit() -{ - Plugin* const p = new Plugin; - pluginInstance__DrumKit = p; - - const StaticPluginLoader spl(p, "DrumKit"); - if (spl.ok()) - { - setupSamples(); - p->addModel(modelBD9); - p->addModel(modelSnare); - p->addModel(modelClosedHH); - p->addModel(modelOpenHH); - p->addModel(modelDMX); - p->addModel(modelCR78); - p->addModel(modelSBD); - p->addModel(modelGnome); - p->addModel(modelSequencer); - p->addModel(modelTomi); - p->addModel(modelBaronial); - p->addModel(modelMarionette); - } -} - static void initStatic__eightfold() { Plugin* const p = new Plugin; @@ -3538,6 +3514,30 @@ static void initStatic__WhatTheRack() } } +static void initStatic__WSTD_Drums() +{ + Plugin* const p = new Plugin; + pluginInstance__WSTD_Drums = p; + + const StaticPluginLoader spl(p, "WSTD-Drums"); + if (spl.ok()) + { + setupSamples(); + p->addModel(modelBD9); + p->addModel(modelSnare); + p->addModel(modelClosedHH); + p->addModel(modelOpenHH); + p->addModel(modelDMX); + p->addModel(modelCR78); + p->addModel(modelSBD); + p->addModel(modelGnome); + p->addModel(modelSequencer); + p->addModel(modelTomi); + p->addModel(modelBaronial); + p->addModel(modelMarionette); + } +} + static void initStatic__ZetaCarinaeModules() { Plugin* p = new Plugin; @@ -3610,7 +3610,6 @@ void initStaticPlugins() initStatic__CVfunk(); initStatic__dBiz(); initStatic__DHE(); - initStatic__DrumKit(); initStatic__eightfold(); initStatic__EnigmaCurry(); initStatic__ESeries(); @@ -3663,6 +3662,7 @@ void initStaticPlugins() initStatic__ValleyAudio(); initStatic__Voxglitch(); initStatic__WhatTheRack(); + initStatic__WSTD_Drums(); initStatic__ZetaCarinaeModules(); initStatic__ZZC(); diff --git a/src/CardinalRemote/Makefile b/src/CardinalRemote/Makefile index 8c89164..6e53f44 100644 --- a/src/CardinalRemote/Makefile +++ b/src/CardinalRemote/Makefile @@ -229,7 +229,6 @@ SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/chopin SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/debussy SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/goldberg SYMLINKED_DIRS_RESOURCES += cf/playeroscs -SYMLINKED_DIRS_RESOURCES += DrumKit/res/samples SYMLINKED_DIRS_RESOURCES += Fundamental/presets SYMLINKED_DIRS_RESOURCES += GrandeModular/presets SYMLINKED_DIRS_RESOURCES += LyraeModules/presets @@ -247,6 +246,7 @@ SYMLINKED_DIRS_RESOURCES += surgext/build/surge-data/fx_presets SYMLINKED_DIRS_RESOURCES += surgext/build/surge-data/wavetables SYMLINKED_DIRS_RESOURCES += surgext/patches SYMLINKED_DIRS_RESOURCES += surgext/presets +SYMLINKED_DIRS_RESOURCES += WSTD-Drums/res/samples LINK_FLAGS += $(foreach d,$(SYMLINKED_DIRS_RESOURCES),--preload-file=../../bin/CardinalNative.lv2/resources/$(d)@/resources/$(d)) endif LINK_FLAGS += -sALLOW_MEMORY_GROWTH diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 0cc66af..576a893 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -317,7 +317,6 @@ SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/debussy SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/goldberg SYMLINKED_DIRS_RESOURCES += cf/playeroscs SYMLINKED_DIRS_RESOURCES += DHE-Modules/svg -SYMLINKED_DIRS_RESOURCES += DrumKit/res/samples SYMLINKED_DIRS_RESOURCES += GrandeModular/presets SYMLINKED_DIRS_RESOURCES += LyraeModules/presets SYMLINKED_DIRS_RESOURCES += Meander/res @@ -332,6 +331,7 @@ SYMLINKED_DIRS_RESOURCES += Orbits/presets SYMLINKED_DIRS_RESOURCES += stoermelder-packone/presets SYMLINKED_DIRS_RESOURCES += surgext/build/surge-data/fx_presets SYMLINKED_DIRS_RESOURCES += surgext/build/surge-data/wavetables +SYMLINKED_DIRS_RESOURCES += WSTD-Drums/res/samples endif LINK_FLAGS += $(foreach d,$(SYMLINKED_DIRS_RESOURCES),--preload-file=../../bin/CardinalNative.lv2/resources/$(d)@/resources/$(d)) diff --git a/src/custom/dep.cpp b/src/custom/dep.cpp index e99f2ba..74bbebf 100644 --- a/src/custom/dep.cpp +++ b/src/custom/dep.cpp @@ -54,7 +54,6 @@ enum DarkMode { kModeCf, kModeComputerscare, kModeDHE, - kModeDrumKit, kModeESeries, kModeLilacLoop, kModeLittleUtils, @@ -258,19 +257,6 @@ static const struct { { kModeDHE, "/DHE-Modules/svg/truth-4.svg", {}, -1 }, { kModeDHE, "/DHE-Modules/svg/upstage.svg", {}, -1 }, { kModeDHE, "/DHE-Modules/svg/xycloid.svg", {}, -1 }, - // CC0-1.0 - { kModeDrumKit, "/DrumKit/res/Baronial.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/BD9.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/ClosedHH.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/CR78.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/DMX.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Gnome.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Marionette.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/OpenHH.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/SBD.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Sequencer.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Snare.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Tomi.svg", {}, -1 }, // Custom, runtime dark mode used with permission { kModeESeries,"/ESeries/res/E340.svg", {}, -1 }, // GPL3.0-or-later @@ -374,6 +360,7 @@ enum LightMode { kModePrism, kModeRepelzen, kModeSonusmodular, + kModeWSTDDrums, }; static const struct { @@ -594,6 +581,20 @@ static const struct { { kModeSonusmodular, "/sonusmodular/res/tropicana.svg" }, { kModeSonusmodular, "/sonusmodular/res/twoff.svg" }, { kModeSonusmodular, "/sonusmodular/res/yabp.svg" }, + // CC0-1.0 + { kModeWSTDDrums, "/WSTD-Drums/res/Baronial.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/BD9.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/ClosedHH.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/CR78.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/DMX.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Gnome.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Marionette.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/OpenHH.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/SBD.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Sequencer.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Snare.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Tomi.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/component/Knob.svg" }, }; static inline @@ -630,12 +631,6 @@ bool invertPaintForDarkMode(const DarkMode mode, NSVGshape* const shape, NSVGpai { switch (mode) { - // Special case for DrumKit background gradient - case kModeDrumKit: - std::free(paint.gradient); - paint.type = NSVG_PAINT_COLOR; - paint.color = 0xff191919; - return true; // Special case for PathSet shifty gradient case kModePathSet: paint.gradient->stops[0].color = 0xff7c4919; // 50% darker than main blue diff --git a/src/override/plugin.cpp b/src/override/plugin.cpp index 957fe9d..7b059e4 100644 --- a/src/override/plugin.cpp +++ b/src/override/plugin.cpp @@ -48,6 +48,7 @@ static const std::map pluginSlugFallbacks = { {"AudibleInstrumentsPreview", "AudibleInstruments"}, {"SequelSequencers", "DanielDavies"}, {"DelexanderVol1", "DelexandraVol1"}, + {"DrumKit", "WSTD-Drums"} // {"", ""}, }; @@ -102,6 +103,18 @@ static const std::map moduleSlugFallbacks = {{"Core", "Notes"}, {"Cardinal", "TextEditor"}}, {{"Core", "Blank"}, {"Cardinal", "Blank"}}, {{"MindMeld-ShapeMasterPro", "ShapeMasterPro"}, {"MindMeldModular", "ShapeMaster"}}, + {{"DrumKit", "BassDrum9"}, {"WSTD-Drums", "BassDrum9"}}, + {{"DrumKit", "ClosedHiHat"}, {"WSTD-Drums", "ClosedHiHat"}}, + {{"DrumKit", "CR78"}, {"WSTD-Drums", "CR78"}}, + {{"DrumKit", "DMX"}, {"WSTD-Drums", "DMX"}}, + {{"DrumKit", "OpenHiHat"}, {"WSTD-Drums", "OpenHiHat"}}, + {{"DrumKit", "SyntheticBassDrum"}, {"WSTD-Drums", "SyntheticBassDrum"}}, + {{"DrumKit", "SnareDrumN"}, {"WSTD-Drums", "SnareDrumN"}}, + {{"DrumKit", "Tomi"}, {"WSTD-Drums", "Tomi"}}, + {{"DrumKit", "Gnome"}, {"WSTD-Drums", "Gnome"}}, + {{"DrumKit", "Sequencer"}, {"WSTD-Drums", "Sequencer"}}, + {{"DrumKit", "Baronial"}, {"WSTD-Drums", "Baronial"}}, + {{"DrumKit", "MarionetteBass"}, {"WSTD-Drums", "MarionetteBass"}}, // {{"", ""}, {"", ""}}, }; From f28288899f57a78ba4da0f12f634afe1ae49277a Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 20 Jun 2025 18:05:41 +0200 Subject: [PATCH 19/55] Update dpf and PawPaw deps, rebuild CI cache Signed-off-by: falkTX --- .github/workflows/build.yml | 3 ++- deps/PawPaw | 2 +- dpf | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aef017e..0c8684e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,11 +3,12 @@ name: build on: [push, pull_request] env: - CACHE_VERSION: 11 + CACHE_VERSION: 12 CARDINAL_UNDER_WINE: 1 CIBUILD: true DEBIAN_FRONTEND: noninteractive LIBGL_ALWAYS_SOFTWARE: true + PAWPAW_CI: 1 PAWPAW_FAST_MATH: 1 PAWPAW_SKIP_GLIB: 1 PAWPAW_SKIP_LTO: 1 diff --git a/deps/PawPaw b/deps/PawPaw index 0946f78..f6eaed1 160000 --- a/deps/PawPaw +++ b/deps/PawPaw @@ -1 +1 @@ -Subproject commit 0946f783f0e9e230bca893289325f91144a3429f +Subproject commit f6eaed13bdeccec013d81ba2261f98aa8f452702 diff --git a/dpf b/dpf index f3be5ae..6d4bf6b 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit f3be5aee081d87cc7a6795110525569670ff0907 +Subproject commit 6d4bf6b47e69516b3e9a8925279364f98456d959 From 713cb6b2a55e5c1288795f5fa4d40764d16a579f Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 20 Jun 2025 18:23:23 +0200 Subject: [PATCH 20/55] Fix shell basename command used for building plugins Signed-off-by: falkTX --- plugins/Makefile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/plugins/Makefile b/plugins/Makefile index a97ac9f..e641c00 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -2210,7 +2210,7 @@ $(BUILD_DIR)/AS/%.cpp.o: AS/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(AS_CUSTOM),$(call custom_module_names,$(m),AS)) \ - $(foreach m,$(AS_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),AS_$(shell basename $*))) \ + $(foreach m,$(AS_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),AS_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__AS \ -Wno-unused-private-field @@ -2266,7 +2266,7 @@ $(BUILD_DIR)/Bidoo%.cpp.o: Bidoo%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(BIDOO_CUSTOM),$(call custom_module_names,$(m),Bidoo)) \ - $(foreach m,$(BIDOO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Bidoo_$(shell basename $*))) \ + $(foreach m,$(BIDOO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Bidoo_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__Bidoo \ -DSKIP_MINGW_FORMAT \ -IBidoo/src/dep/gverb/include \ @@ -2286,7 +2286,7 @@ $(BUILD_DIR)/BogaudioModules%.cpp.o: BogaudioModules%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(BOGAUDIO_CUSTOM),$(call custom_module_names,$(m),Bogaudio)) \ - $(foreach m,$(BOGAUDIO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Bogaudio_$(shell basename $*))) \ + $(foreach m,$(BOGAUDIO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Bogaudio_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__BogaudioModules \ -DRACK_SIMD=1 \ -DSKIP_MINGW_FORMAT \ @@ -2339,7 +2339,7 @@ $(BUILD_DIR)/dBiz/src/%.cpp.o: dBiz/src/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(DBIZ_CUSTOM),$(call custom_module_names,$(m),dBiz)) \ - $(foreach m,$(DBIZ_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),dBiz_$(shell basename $*))) \ + $(foreach m,$(DBIZ_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),dBiz_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__dBiz $(BUILD_DIR)/DHE-Modules/src/%.cpp.o: DHE-Modules/src/%.cpp @@ -2499,7 +2499,7 @@ $(BUILD_DIR)/ImpromptuModular%.cpp.o: ImpromptuModular%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(IMPROMPTUMODULAR_CUSTOM),$(call custom_module_names,$(m),ImpromptuModular)) \ - $(foreach m,$(IMPROMPTUMODULAR_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ImpromptuModular_$(shell basename $*))) \ + $(foreach m,$(IMPROMPTUMODULAR_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ImpromptuModular_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__ImpromptuModular \ -Wno-format-truncation @@ -2508,7 +2508,7 @@ $(BUILD_DIR)/ihtsyn/%.cpp.o: ihtsyn/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(IHTSYN_CUSTOM),$(call custom_module_names,$(m),ihtsyn)) \ - $(foreach m,$(IHTSYN_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ihtsyn_$(shell basename $*))) \ + $(foreach m,$(IHTSYN_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ihtsyn_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__ihtsyn $(BUILD_DIR)/JW-Modules/src/WavHead.cpp.o: JW-Modules/src/WavHead.cpp @@ -2629,7 +2629,7 @@ $(BUILD_DIR)/mscHack/%.cpp.o: mscHack/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(MSCHACK_CUSTOM),$(call custom_module_names,$(m),mscHack)) \ - $(foreach m,$(MSCHACK_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),mscHack_$(shell basename $*))) \ + $(foreach m,$(MSCHACK_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),mscHack_$(shell basename -- $*))) \ -DthePlugin=pluginInstance__mscHack \ -Dinit=init__mscHack \ -Wno-class-memaccess \ @@ -2710,7 +2710,7 @@ $(BUILD_DIR)/Prism/%.cpp.o: Prism/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(PRISM_CUSTOM),$(call custom_module_names,$(m),Prism)) \ - $(foreach m,$(PRISM_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Prism_$(shell basename $*))) \ + $(foreach m,$(PRISM_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Prism_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__Prism \ $(BUILD_DIR)/rackwindows/%.cpp.o: rackwindows/%.cpp @@ -2784,7 +2784,7 @@ $(BUILD_DIR)/stoermelder-packone/%.cpp.o: stoermelder-packone/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(STOERMELDER_PACKONE_CUSTOM),$(call custom_module_names,$(m),stoermelder_p1)) \ - $(foreach m,$(STOERMELDER_PACKONE_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),stoermelder_p1_$(shell basename $*))) \ + $(foreach m,$(STOERMELDER_PACKONE_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),stoermelder_p1_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__stoermelder_p1 \ -Dinit=init__stoermelder_p1 @@ -2814,7 +2814,7 @@ $(BUILD_DIR)/ValleyAudio/%.cpp.o: ValleyAudio/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(VALLEYAUDIO_CUSTOM),$(call custom_module_names,$(m),ValleyAudio)) \ - $(foreach m,$(VALLEYAUDIO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ValleyAudio_$(shell basename $*))) \ + $(foreach m,$(VALLEYAUDIO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ValleyAudio_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__ValleyAudio \ -DSTDIO_OVERRIDE=ValleyAudio \ -IValleyAudio/src \ @@ -2826,7 +2826,7 @@ $(BUILD_DIR)/voxglitch/%.cpp.o: voxglitch/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(VOXGLITCH_CUSTOM),$(call custom_module_names,$(m),Voxglitch)) \ - $(foreach m,$(VOXGLITCH_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Voxglitch_$(shell basename $*))) \ + $(foreach m,$(VOXGLITCH_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Voxglitch_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__Voxglitch \ -DSKIP_MINGW_FORMAT From 5bd2f87cf3760ecfdde626cbfff19c8edca892eb Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 20 Jun 2025 18:27:07 +0200 Subject: [PATCH 21/55] Bump version to 25.06 Signed-off-by: falkTX --- .github/ISSUE_TEMPLATE/bug.yaml | 2 +- Makefile | 2 +- src/CardinalCommon.cpp | 4 ++-- src/CardinalPlugin.cpp | 4 ++-- utils/macOS/Info_JACK.plist | 4 ++-- utils/macOS/Info_Native.plist | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index e04dd50..c8e1ced 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.12" + value: "25.06" validations: required: true - type: dropdown diff --git a/Makefile b/Makefile index 507cd76..ce97c4b 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.12 +VERSION = 25.06 # -------------------------------------------------------------- # Build targets diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index 1c4cc46..afe2594 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.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 */ @@ -99,7 +99,7 @@ void destroyStaticPlugins(); } } -const std::string CARDINAL_VERSION = "24.12"; +const std::string CARDINAL_VERSION = "25.06"; // ----------------------------------------------------------------------------------------------------------- diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index b69ab28..f154871 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.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 */ @@ -414,7 +414,7 @@ protected: uint32_t getVersion() const override { - return d_version(0, 24, 12); + return d_version(0, 25, 6); } int64_t getUniqueId() const override diff --git a/utils/macOS/Info_JACK.plist b/utils/macOS/Info_JACK.plist index c97c0e1..80a5cf1 100644 --- a/utils/macOS/Info_JACK.plist +++ b/utils/macOS/Info_JACK.plist @@ -11,11 +11,11 @@ CFBundleIdentifier studio.kx.distrho.cardinal.jack CFBundleShortVersionString - 24.12 + 25.06 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright - (C) 2011-2024 Filipe Coelho. + (C) 2011-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 published by the Free Software Foundation; either version 3 of the License, or any later version. NSHighResolutionCapable diff --git a/utils/macOS/Info_Native.plist b/utils/macOS/Info_Native.plist index 5051b55..b9c5068 100644 --- a/utils/macOS/Info_Native.plist +++ b/utils/macOS/Info_Native.plist @@ -11,11 +11,11 @@ CFBundleIdentifier studio.kx.distrho.cardinal.native CFBundleShortVersionString - 24.12 + 25.06 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright - (C) 2011-2024 Filipe Coelho. + (C) 2011-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 published by the Free Software Foundation; either version 3 of the License, or any later version. NSHighResolutionCapable From bc287aaadd0951887c5e148ccad5baaf4ef885d0 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 20 Jun 2025 20:00:40 +0200 Subject: [PATCH 22/55] Update carla and dpf deps Signed-off-by: falkTX --- carla | 2 +- dpf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/carla b/carla index 17000e7..154047d 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 17000e7fe99459b25a50094a8b00bdfa12f2bfbc +Subproject commit 154047d9e203d3e6de472d1a1c9ad1e7531176b0 diff --git a/dpf b/dpf index 6d4bf6b..2ba9bea 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 6d4bf6b47e69516b3e9a8925279364f98456d959 +Subproject commit 2ba9bea2871bf4c37b102e88b1ec6219fa513950 From 4bb5c804b7f2619ca29499132d460b2533a90f6d Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 21 Jun 2025 11:10:45 +0200 Subject: [PATCH 23/55] Fix macOS builds Signed-off-by: falkTX --- dpf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dpf b/dpf index 2ba9bea..889681f 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 2ba9bea2871bf4c37b102e88b1ec6219fa513950 +Subproject commit 889681f58e5426e99a61d0c569f963e46cf0cce3 From 54b481356cba3d7a091d593267a502ad293879f4 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 21 Jun 2025 12:16:44 +0200 Subject: [PATCH 24/55] Fix Windows builds Signed-off-by: falkTX --- carla | 2 +- dpf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/carla b/carla index 154047d..c9b6055 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 154047d9e203d3e6de472d1a1c9ad1e7531176b0 +Subproject commit c9b60551497a7a9b76d86d694b6af08afe96335c diff --git a/dpf b/dpf index 889681f..8c30f9f 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 889681f58e5426e99a61d0c569f963e46cf0cce3 +Subproject commit 8c30f9f1eddba89805f4131aeb2d6ca3e31a46b1 From 51dd5be9143eec98842ecaf94c66347b6aee9809 Mon Sep 17 00:00:00 2001 From: markterm Date: Sat, 21 Jun 2025 15:04:30 +0100 Subject: [PATCH 25/55] Support triggering bar phase/clock every 4/8 bars (#798) * Support triggering bar phase/clock every 4/8 bars * Fixed kHostTimeBeatPhase * Fixed barPhase calculation --- plugins/Cardinal/src/HostTime.cpp | 46 +++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/plugins/Cardinal/src/HostTime.cpp b/plugins/Cardinal/src/HostTime.cpp index a28c4cd..f6c2f9d 100644 --- a/plugins/Cardinal/src/HostTime.cpp +++ b/plugins/Cardinal/src/HostTime.cpp @@ -40,11 +40,18 @@ struct HostTime : TerminalModule { kHostTimeCount }; + enum BarDivisions { + Bars1 = 1, + Bars4 = 4, + Bars8 = 8 + }; + const CardinalPluginContext* const pcontext; rack::dsp::PulseGenerator pulseReset, pulseBar, pulseBeat, pulseClock; float sampleTime = 0.0f; uint32_t lastProcessCounter = 0; + BarDivisions barDivision = Bars1; // cached time values struct { bool reset = true; @@ -122,7 +129,9 @@ struct HostTime : TerminalModule { { timeInfo.beat = 1; ++timeInfo.bar; - pulseBar.trigger(); + + if (timeInfo.bar % barDivision == 1) + pulseBar.trigger(); } } @@ -148,9 +157,10 @@ struct HostTime : TerminalModule { ? tick / pcontext->ticksPerBeat : 0.0f; const float barPhase = playingWithBBT && pcontext->beatsPerBar > 0 - ? ((float) (timeInfo.beat - 1) + beatPhase) / pcontext->beatsPerBar + ? ((float)((timeInfo.bar - 1) % barDivision) + (timeInfo.beat - 1) + beatPhase) + / (pcontext->beatsPerBar * barDivision) : 0.0f; - + lights[kHostTimeRolling].setBrightness(playing ? 1.0f : 0.0f); lights[kHostTimeReset].setBrightnessSmooth(hasReset ? 1.0f : 0.0f, args.sampleTime * 0.5f); lights[kHostTimeBar].setBrightnessSmooth(hasBar ? 1.0f : 0.0f, args.sampleTime * 0.5f); @@ -170,6 +180,20 @@ struct HostTime : TerminalModule { void processTerminalOutput(const ProcessArgs&) override {} + + json_t* dataToJson() override { + json_t* rootJ = json_object(); + json_object_set_new(rootJ, "barDivision", json_integer(barDivision)); + return rootJ; + } + + void dataFromJson(json_t* rootJ) override { + if (json_t* bdJ = json_object_get(rootJ, "barDivision")) { + int value = json_integer_value(bdJ); + if (value == Bars1 || value == Bars4 || value == Bars8) + barDivision = static_cast(value); + } + } }; // -------------------------------------------------------------------------------------------------------------------- @@ -286,6 +310,22 @@ struct HostTimeWidget : ModuleWidgetWith8HP { ModuleWidget::drawLayer(args, layer); } + + void appendContextMenu(Menu* menu) override { + struct BarDivisionItem : MenuItem { + HostTime* module; + HostTime::BarDivisions value; + void onAction(const event::Action& e) override { + module->barDivision = value; + } + }; + + menu->addChild(new MenuSeparator); + menu->addChild(construct(&MenuLabel::text, "Bar Division")); + menu->addChild(construct(&BarDivisionItem::text, "Bars/1", &BarDivisionItem::module, module, &BarDivisionItem::value, HostTime::Bars1)); + menu->addChild(construct(&BarDivisionItem::text, "Bars/4", &BarDivisionItem::module, module, &BarDivisionItem::value, HostTime::Bars4)); + menu->addChild(construct(&BarDivisionItem::text, "Bars/8", &BarDivisionItem::module, module, &BarDivisionItem::value, HostTime::Bars8)); + } }; #else struct HostTimeWidget : ModuleWidget { From 47e2db19a3eaa66758889bc97909ad3fad9a851b Mon Sep 17 00:00:00 2001 From: dreamer Date: Sat, 21 Jun 2025 16:48:32 +0200 Subject: [PATCH 26/55] update HetrickCV --- plugins/HetrickCV | 2 +- plugins/plugins.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/HetrickCV b/plugins/HetrickCV index 52b1e03..8c46fbe 160000 --- a/plugins/HetrickCV +++ b/plugins/HetrickCV @@ -1 +1 @@ -Subproject commit 52b1e03c34bd1baa264395c150cd62d8e192b12f +Subproject commit 8c46fbe13acdcb87991719bddcc6ec8abcf152ef diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index bc11224..e012e94 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -464,6 +464,7 @@ extern Model* modelChaos2Op; extern Model* modelChaos3Op; extern Model* modelChaoticAttractors; extern Model* modelClockedNoise; +extern Model* modelClockToPhasor; extern Model* modelComparator; extern Model* modelContrast; extern Model* modelCrackle; @@ -482,6 +483,7 @@ extern Model* modelGingerbread; extern Model* modelLogicCombine; extern Model* modelMidSide; extern Model* modelMinMax; +extern Model* modelNormals; extern Model* modelPhaseDrivenSequencer; extern Model* modelPhaseDrivenSequencer32; extern Model* modelPhasorAnalyzer; @@ -511,8 +513,10 @@ extern Model* modelPhasorSubstepShape; extern Model* modelPhasorSwing; extern Model* modelPhasorTimetable; extern Model* modelPhasorToClock; +extern Model* modelPhasorToRandom; extern Model* modelPhasorToLFO; extern Model* modelPhasorToWaveforms; +extern Model* modelPolymetricPhasors; extern Model* modelProbability; extern Model* modelRandomGates; extern Model* modelRotator; @@ -2406,6 +2410,7 @@ static void initStatic__HetrickCV() p->addModel(modelChaos3Op); p->addModel(modelChaoticAttractors); p->addModel(modelClockedNoise); + p->addModel(modelClockToPhasor); p->addModel(modelComparator); p->addModel(modelContrast); p->addModel(modelCrackle); @@ -2424,6 +2429,7 @@ static void initStatic__HetrickCV() p->addModel(modelLogicCombine); p->addModel(modelMidSide); p->addModel(modelMinMax); + p->addModel(modelNormals); p->addModel(modelPhaseDrivenSequencer); p->addModel(modelPhaseDrivenSequencer32); p->addModel(modelPhasorAnalyzer); @@ -2453,8 +2459,10 @@ static void initStatic__HetrickCV() p->addModel(modelPhasorSwing); p->addModel(modelPhasorTimetable); p->addModel(modelPhasorToClock); + p->addModel(modelPhasorToRandom); p->addModel(modelPhasorToLFO); p->addModel(modelPhasorToWaveforms); + p->addModel(modelPolymetricPhasors); p->addModel(modelProbability); p->addModel(modelRandomGates); p->addModel(modelRotator); From 9132ddb9752bc1b0dd70dd668a0f8c4d2d5ac411 Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 14 Aug 2025 16:33:31 +0300 Subject: [PATCH 27/55] 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 28/55] 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 29/55] 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 30/55] 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 31/55] 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 32/55] 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 33/55] 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 34/55] 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 35/55] 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 36/55] 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 37/55] 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 38/55] 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 39/55] 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 40/55] 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 41/55] 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 42/55] 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 43/55] 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 44/55] 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 45/55] 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 46/55] 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 From 4cadcede8ac7bcf0787827ac7859bb6a91881f3c Mon Sep 17 00:00:00 2001 From: Don Cross Date: Tue, 25 Nov 2025 01:46:48 -0500 Subject: [PATCH 47/55] Sapphire 2.6.002: various user interface improvements (#870) - Echo now has a GAIN control group to adjust the input audio level. - Chaos modules now have buttons to insert Chaops, Tricorder expanders. - Tricorder has buttons to insert Tin, Tout expanders. - Galaxy, Gravy, Elastika now have buttons to configure stereo port behavior. More details in changelog: https://github.com/cosinekitty/sapphire/blob/main/CHANGELOG.md Screen shots and examples: https://github.com/cosinekitty/sapphire/releases/tag/rc2.6.002.10 --- plugins/Sapphire | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Sapphire b/plugins/Sapphire index ef10da4..8d33556 160000 --- a/plugins/Sapphire +++ b/plugins/Sapphire @@ -1 +1 @@ -Subproject commit ef10da4e2578162b2db2f6534857d6504491daf4 +Subproject commit 8d335560fee339b212515ca24581239f4021f634 From 9935517643110dd08cf925f45bcb2362a66d2ca6 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Fri, 5 Dec 2025 09:38:01 -0500 Subject: [PATCH 48/55] Sapphire v2.6.003 (#878) - Added "wait for sync" button to Sapphire Pop that makes it silent until the next SYNC button/trigger. - Sapphire Galaxy now includes a button and a trigger input port to clear the reverb tank. - Added an "insert Tricorder" button to Split/Add/Merge. - Fixed minor bugs with undo/redo of stereo split/merge buttons. --- plugins/Sapphire | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Sapphire b/plugins/Sapphire index 8d33556..191fbee 160000 --- a/plugins/Sapphire +++ b/plugins/Sapphire @@ -1 +1 @@ -Subproject commit 8d335560fee339b212515ca24581239f4021f634 +Subproject commit 191fbee21a6be7d9c18eacc6f3a1804455d5358d From 6bd905d6c910b1301809c3ce09923b2b4b96e7b1 Mon Sep 17 00:00:00 2001 From: rl2939 <60378449+rl2939@users.noreply.github.com> Date: Sun, 7 Dec 2025 16:19:54 -0500 Subject: [PATCH 49/55] Update Venom. (#880) --- plugins/Venom | 2 +- plugins/plugins.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/Venom b/plugins/Venom index 1dc0e06..ba95ede 160000 --- a/plugins/Venom +++ b/plugins/Venom @@ -1 +1 @@ -Subproject commit 1dc0e0612b75fcf4849f28cb6e569e3b6f13981a +Subproject commit ba95ede2370d340e0f7143dd897ff7e089bda336 diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index bde0d12..019db5f 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -3525,6 +3525,7 @@ static void initStatic__Venom() p->addModel(modelVenomMousePad); p->addModel(modelVenomMultiMerge); p->addModel(modelVenomMultiSplit); + p->addModel(modelVenomSVF); p->addModel(modelVenomOscillator); p->addModel(modelVenomNORS_IQ); p->addModel(modelVenomNORSIQChord2Scale); From 71d4032bdf1179c6d22d0112ba16ee2945219776 Mon Sep 17 00:00:00 2001 From: dreamer Date: Thu, 11 Dec 2025 13:42:18 +0100 Subject: [PATCH 50/55] bump cache version --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 19fb6c8..adab6d1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,7 @@ name: build on: [push, pull_request] env: - CACHE_VERSION: 12 + CACHE_VERSION: 13 CARDINAL_UNDER_WINE: 1 CIBUILD: true DEBIAN_FRONTEND: noninteractive From 9e26f982d8592a9b6fb2942b07c83536e819f082 Mon Sep 17 00:00:00 2001 From: dreamer <1185977+dromer@users.noreply.github.com> Date: Thu, 11 Dec 2025 19:00:28 +0100 Subject: [PATCH 51/55] use macos-14 (#882) * use macos-14 * bump cache version --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index adab6d1..455397b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,7 @@ name: build on: [push, pull_request] env: - CACHE_VERSION: 13 + CACHE_VERSION: 14 CARDINAL_UNDER_WINE: 1 CIBUILD: true DEBIAN_FRONTEND: noninteractive @@ -158,7 +158,7 @@ jobs: *.tar.xz macos: - runs-on: macos-13 + runs-on: macos-14 steps: - uses: actions/checkout@v4 with: From de385782f047945aabb1de5651a8c9e5d82c239d Mon Sep 17 00:00:00 2001 From: dreamer <1185977+dromer@users.noreply.github.com> Date: Fri, 12 Dec 2025 15:52:12 +0100 Subject: [PATCH 52/55] only force APP_VERSION_MAJOR in modules as necessary (#884) * force APP_VERSION_MAJOR to module version * compare first digit before forcing * compare like in Rack * Cleanup Signed-off-by: falkTX * use rack-like var names Signed-off-by: falkTX --------- Signed-off-by: falkTX Co-authored-by: falkTX --- plugins/plugins.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 019db5f..80759e2 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -1069,10 +1069,17 @@ struct StaticPluginLoader { return; } - // force ABI, we use static plugins so this doesnt matter as long as it builds - json_t* const version = json_string((APP_VERSION_MAJOR + ".0").c_str()); - json_object_set(rootJ, "version", version); - json_decref(version); + std::string version; + if (json_t* const versionJ = json_object_get(rootJ, "version")) + version = json_string_value(versionJ); + + if (!string::startsWith(version, APP_VERSION_MAJOR + ".")) + { + // force ABI, we use static plugins so this doesnt matter as long as it builds + json_t* const versionJ = json_string((APP_VERSION_MAJOR + ".0").c_str()); + json_object_set(rootJ, "version", versionJ); + json_decref(versionJ); + } // Load manifest p->fromJson(rootJ); From 3e0de89ba8eb7e01d68f49071f200c736254fc42 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 21 Dec 2025 12:15:25 +0100 Subject: [PATCH 53/55] Bump version to 25.12 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 371cd2e..d065fb3 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.10" + value: "25.12" validations: required: true - type: dropdown diff --git a/Makefile b/Makefile index 080bd4d..28ac96c 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.10 +VERSION = 25.12 # --------------------------------------------------------------------------------------------------------------------- # Build targets diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index 415e9d8..5fa78a9 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.cpp @@ -99,7 +99,7 @@ void destroyStaticPlugins(); } } -const std::string CARDINAL_VERSION = "25.10"; +const std::string CARDINAL_VERSION = "25.12"; // ----------------------------------------------------------------------------------------------------------- diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index dfe19a7..2b39c60 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -414,7 +414,7 @@ protected: uint32_t getVersion() const override { - return d_version(0, 25, 10); + return d_version(0, 25, 12); } int64_t getUniqueId() const override diff --git a/utils/macOS/Info_JACK.plist b/utils/macOS/Info_JACK.plist index 8071faf..b5f832a 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.10 + 25.12 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright diff --git a/utils/macOS/Info_Native.plist b/utils/macOS/Info_Native.plist index 73bfbe8..f7ac992 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.10 + 25.12 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright From 6d072780d101ced51176342bd519436f7df1bdb1 Mon Sep 17 00:00:00 2001 From: rl2939 <60378449+rl2939@users.noreply.github.com> Date: Tue, 18 Nov 2025 21:52:03 -0500 Subject: [PATCH 54/55] Add tuner tag to AudioToCVPitch. --- plugins/Cardinal/plugin.json | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/Cardinal/plugin.json b/plugins/Cardinal/plugin.json index 1765211..003ff9f 100644 --- a/plugins/Cardinal/plugin.json +++ b/plugins/Cardinal/plugin.json @@ -171,6 +171,7 @@ "description": "Converts a monophonic audio signal to CV pitch", "manualUrl": "https://github.com/DISTRHO/Cardinal/blob/main/docs/CARDINAL-MODULES.md#audio-to-cv-pitch", "tags": [ + "Tuner", "Utility" ] }, From 7c589fe6114bf3103a3a6ac6da39a842fd374e97 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 1 Dec 2025 15:15:55 +0800 Subject: [PATCH 55/55] Add command line example for startup in headless builds Can potentially help address #796 Signed-off-by: falkTX --- docs/OSC-REMOTE-CONTROL.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/OSC-REMOTE-CONTROL.md b/docs/OSC-REMOTE-CONTROL.md index 6867317..ccdede8 100644 --- a/docs/OSC-REMOTE-CONTROL.md +++ b/docs/OSC-REMOTE-CONTROL.md @@ -23,6 +23,17 @@ If all went well opening the "Engine" menu again should show a checkmark, indica For the moment there is no error dialog or information in case things go wrong. If you are unable to connect, make sure your OS network firewall settings allows opening port 2228. +### Automatic startup on headless builds + +If you do a headless build there is no UI to click on to enable remote control, so for this reason the headless builds (standalone, not plugins) will have OSC remote control enabled by default. + +To change the port for the OSC server use the `CARDINAL_REMOTE_HOST_PORT` environment variable, for example: +```sh +env CARDINAL_REMOTE_HOST_PORT=2228 CardinalNative +``` + +This can be useful for starting Cardinal where no mouse/keyboard are attached but you want remote control. + ## TouchOSC example setup A TouchOSC compatible file is available [here](https://github.com/DISTRHO/Cardinal/raw/main/patches/touchosc/24-direct-fader-params.tosc).