From 17a238ad8fe52cf8fbf6bf99ad7cc59043ba14dc Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 19 Oct 2025 20:38:37 +0200 Subject: [PATCH 01/33] 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 02/33] 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 03/33] 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 04/33] 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 05/33] 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 06/33] 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 07/33] 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 08/33] 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 09/33] 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 10/33] 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 11/33] 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 12/33] 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 13/33] 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 14/33] 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 15/33] 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 16/33] 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 17/33] 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). From 4c154b6f8a4bd5bf2a2964d9685f17d5717a75c1 Mon Sep 17 00:00:00 2001 From: nooneknows <157999171+nooneknowspeter@users.noreply.github.com> Date: Tue, 8 Jul 2025 21:26:34 -0400 Subject: [PATCH 18/33] feat: add new example patches --- .../examples/nooneknowspeter_-_Catalyst.vcv | 2175 ++++++++++ patches/examples/nooneknowspeter_-_Velour.vcv | 2055 ++++++++++ patches/examples/nooneknowspeter_-_Xmas.vcv | 3631 +++++++++++++++++ 3 files changed, 7861 insertions(+) create mode 100644 patches/examples/nooneknowspeter_-_Catalyst.vcv create mode 100644 patches/examples/nooneknowspeter_-_Velour.vcv create mode 100644 patches/examples/nooneknowspeter_-_Xmas.vcv diff --git a/patches/examples/nooneknowspeter_-_Catalyst.vcv b/patches/examples/nooneknowspeter_-_Catalyst.vcv new file mode 100644 index 0000000..711266c --- /dev/null +++ b/patches/examples/nooneknowspeter_-_Catalyst.vcv @@ -0,0 +1,2175 @@ +{ + "version": "2.4.1", + "zoom": 0.59460335969924927, + "gridOffset": [ + -45.503124237060547, + -0.23206208646297455 + ], + "modules": [ + { + "id": 62131727378541, + "plugin": "ImpromptuModular", + "model": "Clocked-Clkd", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 2.0, + "id": 2 + }, + { + "value": 94.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + } + ], + "leftModuleId": 1659782601880954, + "rightModuleId": 1911991021527897, + "data": { + "panelTheme": 1, + "panelContrast": 220.0, + "running": true, + "bpmDetectionMode": false, + "resetOnStartStop": 0, + "ppqn": 4, + "resetClockOutputsHigh": true, + "momentaryRunInput": true, + "forceCvOnBpmOut": false, + "displayIndex": 0, + "trigOuts": [ + false, + false, + false, + false + ], + "clockMaster": -1 + }, + "pos": [ + -16, + 0 + ] + }, + { + "id": 1911991021527897, + "plugin": "SonusModular", + "model": "Multimulti", + "version": "2.0", + "params": [], + "leftModuleId": 62131727378541, + "rightModuleId": 3501856113396568, + "pos": [ + -6, + 0 + ] + }, + { + "id": 3501856113396568, + "plugin": "JW-Modules", + "model": "FullScope", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": -14.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + } + ], + "leftModuleId": 1911991021527897, + "rightModuleId": 7129029812723674, + "data": { + "lissajous": 1, + "external": 0, + "width": 255.0 + }, + "pos": [ + 2, + 0 + ] + }, + { + "id": 4304683746797983, + "plugin": "Bogaudio", + "model": "Bogaudio-Walk2", + "version": "2.0", + "params": [ + { + "value": 0.47469800710678101, + "id": 0 + }, + { + "value": 0.46144556999206543, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.55060189962387085, + "id": 4 + }, + { + "value": 0.55662637948989868, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + } + ], + "rightModuleId": 8636186340370385, + "data": { + "zoom_out": false, + "grid": true, + "color": 0 + }, + "pos": [ + -40, + 2 + ] + }, + { + "id": 8636186340370385, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "leftModuleId": 4304683746797983, + "rightModuleId": 5216982652288525, + "data": {}, + "pos": [ + -26, + 2 + ] + }, + { + "id": 5216982652288525, + "plugin": "JW-Modules", + "model": "FullScope", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": -14.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + } + ], + "leftModuleId": 8636186340370385, + "rightModuleId": 7289017232262868, + "data": { + "lissajous": 1, + "external": 0, + "width": 255.0 + }, + "pos": [ + -23, + 2 + ] + }, + { + "id": 7289017232262868, + "plugin": "AriaSalvatrice", + "model": "Darius", + "version": "2.0", + "params": [ + { + "value": 0.05268482118844986, + "id": 0 + }, + { + "value": 1.346773624420166, + "id": 1 + }, + { + "value": 6.4301052093505859, + "id": 2 + }, + { + "value": 0.15539190173149109, + "id": 3 + }, + { + "value": 5.930147647857666, + "id": 4 + }, + { + "value": 4.1964631080627441, + "id": 5 + }, + { + "value": 4.4687967300415039, + "id": 6 + }, + { + "value": 8.8043718338012695, + "id": 7 + }, + { + "value": 4.8241586685180664, + "id": 8 + }, + { + "value": 5.8854637145996094, + "id": 9 + }, + { + "value": 1.3582065105438232, + "id": 10 + }, + { + "value": 8.1199207305908203, + "id": 11 + }, + { + "value": 9.7356538772583008, + "id": 12 + }, + { + "value": 3.1004385948181152, + "id": 13 + }, + { + "value": 5.8523683547973633, + "id": 14 + }, + { + "value": 7.8737020492553711, + "id": 15 + }, + { + "value": 6.2805328369140625, + "id": 16 + }, + { + "value": 6.2846498489379883, + "id": 17 + }, + { + "value": 4.1319394111633301, + "id": 18 + }, + { + "value": 3.6204769611358643, + "id": 19 + }, + { + "value": 0.68961513042449951, + "id": 20 + }, + { + "value": 9.8785743713378906, + "id": 21 + }, + { + "value": 7.4258003234863281, + "id": 22 + }, + { + "value": 7.4546232223510742, + "id": 23 + }, + { + "value": 8.9979057312011719, + "id": 24 + }, + { + "value": 2.8963613510131836, + "id": 25 + }, + { + "value": 4.2896790504455566, + "id": 26 + }, + { + "value": 4.003629207611084, + "id": 27 + }, + { + "value": 4.7523512840270996, + "id": 28 + }, + { + "value": 3.7792673110961914, + "id": 29 + }, + { + "value": 0.17409040033817291, + "id": 30 + }, + { + "value": 9.0417556762695312, + "id": 31 + }, + { + "value": 5.8191108703613281, + "id": 32 + }, + { + "value": 0.12899941205978394, + "id": 33 + }, + { + "value": 2.7611031532287598, + "id": 34 + }, + { + "value": 0.14207999408245087, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.5, + "id": 41 + }, + { + "value": 0.5, + "id": 42 + }, + { + "value": 0.5, + "id": 43 + }, + { + "value": 0.5, + "id": 44 + }, + { + "value": 0.5, + "id": 45 + }, + { + "value": 0.5, + "id": 46 + }, + { + "value": 0.5, + "id": 47 + }, + { + "value": 0.5, + "id": 48 + }, + { + "value": 0.5, + "id": 49 + }, + { + "value": 0.5, + "id": 50 + }, + { + "value": 0.5, + "id": 51 + }, + { + "value": 0.5, + "id": 52 + }, + { + "value": 0.5, + "id": 53 + }, + { + "value": 0.5, + "id": 54 + }, + { + "value": 0.5, + "id": 55 + }, + { + "value": 0.5, + "id": 56 + }, + { + "value": 0.5, + "id": 57 + }, + { + "value": 0.5, + "id": 58 + }, + { + "value": 0.5, + "id": 59 + }, + { + "value": 0.5, + "id": 60 + }, + { + "value": 0.5, + "id": 61 + }, + { + "value": 0.5, + "id": 62 + }, + { + "value": 0.5, + "id": 63 + }, + { + "value": 0.5, + "id": 64 + }, + { + "value": 0.5, + "id": 65 + }, + { + "value": 0.5, + "id": 66 + }, + { + "value": 0.5, + "id": 67 + }, + { + "value": 0.5, + "id": 68 + }, + { + "value": 0.5, + "id": 69 + }, + { + "value": 0.5, + "id": 70 + }, + { + "value": 0.5, + "id": 71 + }, + { + "value": 0.0, + "id": 72 + }, + { + "value": 1.0, + "id": 73 + }, + { + "value": 0.0, + "id": 74 + }, + { + "value": 8.0, + "id": 75 + }, + { + "value": 0.0, + "id": 76 + }, + { + "value": 0.0, + "id": 77 + }, + { + "value": 0.0, + "id": 78 + }, + { + "value": 0.0, + "id": 79 + }, + { + "value": 1.0, + "id": 80 + }, + { + "value": 3.0, + "id": 81 + }, + { + "value": 5.0, + "id": 82 + }, + { + "value": 0.0, + "id": 83 + }, + { + "value": 1.0, + "id": 84 + }, + { + "value": 0.0, + "id": 85 + }, + { + "value": 2.0, + "id": 86 + } + ], + "leftModuleId": 5216982652288525, + "rightModuleId": 3527046639580119, + "data": { + "step": 1, + "node": 1, + "lastNode": 1, + "lastGate": 1, + "pathTraveled": [ + 0, + 1, + -1, + -1, + -1, + -1, + -1, + -1 + ] + }, + "pos": [ + -6, + 2 + ] + }, + { + "id": 3527046639580119, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "leftModuleId": 7289017232262868, + "rightModuleId": 4288556518425111, + "data": {}, + "pos": [ + 26, + 2 + ] + }, + { + "id": 4288556518425111, + "plugin": "Bogaudio", + "model": "Bogaudio-VCO", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 1.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + } + ], + "leftModuleId": 3527046639580119, + "rightModuleId": 4662717555805257, + "data": { + "poly_input": 0, + "dc_correction": true + }, + "pos": [ + 29, + 2 + ] + }, + { + "id": 4916903463233428, + "plugin": "AriaSalvatrice", + "model": "Darius", + "version": "2.0", + "params": [ + { + "value": 0.05268482118844986, + "id": 0 + }, + { + "value": 1.346773624420166, + "id": 1 + }, + { + "value": 6.4301052093505859, + "id": 2 + }, + { + "value": 0.15539190173149109, + "id": 3 + }, + { + "value": 5.930147647857666, + "id": 4 + }, + { + "value": 4.1964631080627441, + "id": 5 + }, + { + "value": 4.4687967300415039, + "id": 6 + }, + { + "value": 8.8043718338012695, + "id": 7 + }, + { + "value": 4.8241586685180664, + "id": 8 + }, + { + "value": 5.8854637145996094, + "id": 9 + }, + { + "value": 1.3582065105438232, + "id": 10 + }, + { + "value": 8.1199207305908203, + "id": 11 + }, + { + "value": 9.7356538772583008, + "id": 12 + }, + { + "value": 3.1004385948181152, + "id": 13 + }, + { + "value": 5.8523683547973633, + "id": 14 + }, + { + "value": 7.8737020492553711, + "id": 15 + }, + { + "value": 6.2805328369140625, + "id": 16 + }, + { + "value": 6.2846498489379883, + "id": 17 + }, + { + "value": 4.1319394111633301, + "id": 18 + }, + { + "value": 3.6204769611358643, + "id": 19 + }, + { + "value": 0.68961513042449951, + "id": 20 + }, + { + "value": 9.8785743713378906, + "id": 21 + }, + { + "value": 7.4258003234863281, + "id": 22 + }, + { + "value": 7.4546232223510742, + "id": 23 + }, + { + "value": 8.9979057312011719, + "id": 24 + }, + { + "value": 2.8963613510131836, + "id": 25 + }, + { + "value": 4.2896790504455566, + "id": 26 + }, + { + "value": 4.003629207611084, + "id": 27 + }, + { + "value": 4.7523512840270996, + "id": 28 + }, + { + "value": 3.7792673110961914, + "id": 29 + }, + { + "value": 0.17409040033817291, + "id": 30 + }, + { + "value": 9.0417556762695312, + "id": 31 + }, + { + "value": 5.8191108703613281, + "id": 32 + }, + { + "value": 0.12899941205978394, + "id": 33 + }, + { + "value": 2.7611031532287598, + "id": 34 + }, + { + "value": 0.14207999408245087, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.5, + "id": 41 + }, + { + "value": 0.5, + "id": 42 + }, + { + "value": 0.5, + "id": 43 + }, + { + "value": 0.5, + "id": 44 + }, + { + "value": 0.5, + "id": 45 + }, + { + "value": 0.5, + "id": 46 + }, + { + "value": 0.5, + "id": 47 + }, + { + "value": 0.5, + "id": 48 + }, + { + "value": 0.5, + "id": 49 + }, + { + "value": 0.5, + "id": 50 + }, + { + "value": 0.5, + "id": 51 + }, + { + "value": 0.5, + "id": 52 + }, + { + "value": 0.5, + "id": 53 + }, + { + "value": 0.5, + "id": 54 + }, + { + "value": 0.5, + "id": 55 + }, + { + "value": 0.5, + "id": 56 + }, + { + "value": 0.5, + "id": 57 + }, + { + "value": 0.5, + "id": 58 + }, + { + "value": 0.5, + "id": 59 + }, + { + "value": 0.5, + "id": 60 + }, + { + "value": 0.5, + "id": 61 + }, + { + "value": 0.5, + "id": 62 + }, + { + "value": 0.5, + "id": 63 + }, + { + "value": 0.5, + "id": 64 + }, + { + "value": 0.5, + "id": 65 + }, + { + "value": 0.5, + "id": 66 + }, + { + "value": 0.5, + "id": 67 + }, + { + "value": 0.5, + "id": 68 + }, + { + "value": 0.5, + "id": 69 + }, + { + "value": 0.5, + "id": 70 + }, + { + "value": 0.5, + "id": 71 + }, + { + "value": 0.0, + "id": 72 + }, + { + "value": 1.0, + "id": 73 + }, + { + "value": 0.0, + "id": 74 + }, + { + "value": 8.0, + "id": 75 + }, + { + "value": 0.0, + "id": 76 + }, + { + "value": 0.0, + "id": 77 + }, + { + "value": 0.0, + "id": 78 + }, + { + "value": 0.0, + "id": 79 + }, + { + "value": 1.0, + "id": 80 + }, + { + "value": 3.0, + "id": 81 + }, + { + "value": 5.0, + "id": 82 + }, + { + "value": 0.0, + "id": 83 + }, + { + "value": 1.0, + "id": 84 + }, + { + "value": 0.0, + "id": 85 + }, + { + "value": 2.0, + "id": 86 + } + ], + "rightModuleId": 1106085699720762, + "data": { + "step": 4, + "node": 12, + "lastNode": 12, + "lastGate": 12, + "pathTraveled": [ + 0, + 2, + 4, + 7, + 12, + -1, + -1, + -1 + ] + }, + "pos": [ + -6, + 1 + ] + }, + { + "id": 1106085699720762, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "leftModuleId": 4916903463233428, + "rightModuleId": 2252060481249196, + "data": {}, + "pos": [ + 26, + 1 + ] + }, + { + "id": 4662717555805257, + "plugin": "AudibleInstruments", + "model": "Clouds", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.85903644561767578, + "id": 3 + }, + { + "value": 0.67469894886016846, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 0.71084344387054443, + "id": 7 + }, + { + "value": 0.67710858583450317, + "id": 8 + }, + { + "value": 0.7216869592666626, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + } + ], + "leftModuleId": 4288556518425111, + "data": { + "playback": 0, + "quality": 0, + "blendMode": 0 + }, + "pos": [ + 39, + 2 + ] + }, + { + "id": 8989400763278496, + "plugin": "MSM", + "model": "DualDelay", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + }, + { + "value": 1.0, + "id": 1 + }, + { + "value": 0.67479997873306274, + "id": 2 + }, + { + "value": 0.67479997873306274, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 1.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.73076951503753662, + "id": 10 + }, + { + "value": 0.5, + "id": 11 + }, + { + "value": 1.0, + "id": 12 + }, + { + "value": 1.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + } + ], + "leftModuleId": 2252060481249196, + "data": { + "Theme": 1, + "DISPLAYA": 1, + "DISPLAYB": 1 + }, + "pos": [ + 39, + 1 + ] + }, + { + "id": 2252060481249196, + "plugin": "Bogaudio", + "model": "Bogaudio-VCO", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 1.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + } + ], + "leftModuleId": 1106085699720762, + "rightModuleId": 8989400763278496, + "data": { + "poly_input": 0, + "dc_correction": true + }, + "pos": [ + 29, + 1 + ] + }, + { + "id": 7129029812723674, + "plugin": "mscHack", + "model": "Mix_4_0_4", + "version": "2.0", + "params": [ + { + "value": 0.64939934015274048, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 1.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 1.0, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 1.0, + "id": 7 + }, + { + "value": 1.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.5, + "id": 17 + }, + { + "value": 0.5, + "id": 18 + }, + { + "value": 0.5, + "id": 19 + }, + { + "value": 0.5, + "id": 20 + }, + { + "value": 0.5, + "id": 21 + }, + { + "value": 0.5, + "id": 22 + }, + { + "value": 0.5, + "id": 23 + }, + { + "value": 0.5, + "id": 24 + }, + { + "value": 0.5, + "id": 25 + }, + { + "value": 0.5, + "id": 26 + }, + { + "value": 0.5, + "id": 27 + }, + { + "value": 0.5, + "id": 28 + }, + { + "value": 0.5, + "id": 29 + }, + { + "value": 0.5, + "id": 30 + }, + { + "value": 0.5, + "id": 31 + }, + { + "value": 0.5, + "id": 32 + }, + { + "value": 0.5, + "id": 33 + }, + { + "value": 0.5, + "id": 34 + }, + { + "value": 0.5, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.70361471176147461, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.71084392070770264, + "id": 45 + }, + { + "value": 0.71325337886810303, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + }, + { + "value": 0.51686739921569824, + "id": 49 + }, + { + "value": 0.0, + "id": 50 + }, + { + "value": 0.0, + "id": 51 + }, + { + "value": 0.0, + "id": 52 + }, + { + "value": 0.0, + "id": 53 + }, + { + "value": 0.0, + "id": 54 + }, + { + "value": 0.0, + "id": 55 + }, + { + "value": 0.0, + "id": 56 + }, + { + "value": 1.0, + "id": 57 + }, + { + "value": 1.0, + "id": 58 + }, + { + "value": 1.0, + "id": 59 + }, + { + "value": 1.0, + "id": 60 + } + ], + "leftModuleId": 3501856113396568, + "rightModuleId": 8500131601554147, + "data": { + "m_bMuteStates": [ + false, + false, + false, + false, + false, + false, + false, + false + ], + "m_bSoloStates": [ + false, + false, + false, + false, + false, + false, + false, + false + ], + "m_bGroupPreMute": [ + true + ], + "m_bGainLevelx2": [ + false + ], + "m_bPreFader": [ + false, + false, + false, + false + ], + "m_bAuxIgnoreSolo": [ + false + ] + }, + "pos": [ + 19, + 0 + ] + }, + { + "id": 8395408628109080, + "plugin": "Valley", + "model": "Plateau", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.5, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 10.0, + "id": 3 + }, + { + "value": 10.0, + "id": 4 + }, + { + "value": 0.5, + "id": 5 + }, + { + "value": 10.0, + "id": 6 + }, + { + "value": 0.5499500036239624, + "id": 7 + }, + { + "value": 10.0, + "id": 8 + }, + { + "value": 10.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.5, + "id": 11 + }, + { + "value": 0.5, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 1.0, + "id": 30 + } + ], + "leftModuleId": 6060371358954687, + "data": { + "frozen": false, + "freezeToggle": false, + "panelStyle": 0, + "tuned": 0, + "diffuseInput": 1, + "preDelayCVSens": 0, + "inputSensitivity": 0, + "outputSaturation": 0 + }, + "pos": [ + 45, + -1 + ] + }, + { + "id": 6060371358954687, + "plugin": "ParableInstruments", + "model": "Neil", + "version": "2.0", + "params": [ + { + "value": 0.5, + "id": 0 + }, + { + "value": 0.68072414398193359, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.74216896295547485, + "id": 3 + }, + { + "value": 0.6710851788520813, + "id": 4 + }, + { + "value": 0.81084364652633667, + "id": 5 + }, + { + "value": 0.72771108150482178, + "id": 6 + }, + { + "value": 0.5, + "id": 7 + }, + { + "value": 0.5, + "id": 8 + }, + { + "value": 0.70482110977172852, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + } + ], + "rightModuleId": 8395408628109080, + "data": { + "playbackmode": 0, + "lofi": false, + "mono": false, + "freeze": false, + "buffersize": 1, + "reverse": 0 + }, + "pos": [ + 14, + -1 + ] + }, + { + "id": 4300651035948303, + "plugin": "Bidoo", + "model": "fLAME", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + } + ], + "leftModuleId": 8500131601554147, + "data": { + "xBox": 31.71875, + "yBox": 0.4765625, + "wBox": 0.0, + "hBox": 0.0, + "frameSize": 1024.0, + "colorScheme": 1.0 + }, + "pos": [ + 47, + 0 + ] + }, + { + "id": 8500131601554147, + "plugin": "Cardinal", + "model": "HostAudio2", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + } + ], + "leftModuleId": 7129029812723674, + "rightModuleId": 4300651035948303, + "data": { + "dcFilter": true + }, + "pos": [ + 39, + 0 + ] + }, + { + "id": 1659782601880954, + "plugin": "Cardinal", + "model": "HostTime", + "version": "2.0", + "params": [], + "rightModuleId": 62131727378541, + "data": { + "barDivision": 1 + }, + "pos": [ + -24, + 0 + ] + } + ], + "cables": [ + { + "id": 5369457870419826, + "outputModuleId": 62131727378541, + "outputId": 1, + "inputModuleId": 1911991021527897, + "inputId": 0, + "color": "#ff9352" + }, + { + "id": 7071592608607655, + "outputModuleId": 1911991021527897, + "outputId": 0, + "inputModuleId": 3501856113396568, + "inputId": 0, + "color": "#ffd452" + }, + { + "id": 2215041335470426, + "outputModuleId": 62131727378541, + "outputId": 3, + "inputModuleId": 1911991021527897, + "inputId": 2, + "color": "#e8ff52" + }, + { + "id": 6193630193933082, + "outputModuleId": 1911991021527897, + "outputId": 8, + "inputModuleId": 3501856113396568, + "inputId": 5, + "color": "#a8ff52" + }, + { + "id": 7973827414495970, + "outputModuleId": 7129029812723674, + "outputId": 0, + "inputModuleId": 8500131601554147, + "inputId": 0, + "color": "#52beff" + }, + { + "id": 6544425266861102, + "outputModuleId": 7129029812723674, + "outputId": 1, + "inputModuleId": 8500131601554147, + "inputId": 1, + "color": "#527dff" + }, + { + "id": 4429003181984041, + "outputModuleId": 2252060481249196, + "outputId": 3, + "inputModuleId": 7129029812723674, + "inputId": 0, + "color": "#67ff52" + }, + { + "id": 1912835577889862, + "outputModuleId": 7129029812723674, + "outputId": 2, + "inputModuleId": 6060371358954687, + "inputId": 9, + "color": "#ff5293" + }, + { + "id": 627704708040903, + "outputModuleId": 7129029812723674, + "outputId": 6, + "inputModuleId": 6060371358954687, + "inputId": 10, + "color": "#ff5252" + }, + { + "id": 3033899792229734, + "outputModuleId": 6060371358954687, + "outputId": 0, + "inputModuleId": 7129029812723674, + "inputId": 4, + "color": "#ff9352" + }, + { + "id": 5635490298167809, + "outputModuleId": 6060371358954687, + "outputId": 1, + "inputModuleId": 7129029812723674, + "inputId": 12, + "color": "#ffd452" + }, + { + "id": 2434627396018901, + "outputModuleId": 4288556518425111, + "outputId": 3, + "inputModuleId": 4662717555805257, + "inputId": 6, + "color": "#6752ff" + }, + { + "id": 93008979403067, + "outputModuleId": 4662717555805257, + "outputId": 0, + "inputModuleId": 8989400763278496, + "inputId": 11, + "color": "#52ffff" + }, + { + "id": 693319618114398, + "outputModuleId": 4662717555805257, + "outputId": 1, + "inputModuleId": 8989400763278496, + "inputId": 12, + "color": "#52beff" + }, + { + "id": 8448857937346948, + "outputModuleId": 8989400763278496, + "outputId": 0, + "inputModuleId": 7129029812723674, + "inputId": 1, + "color": "#527dff" + }, + { + "id": 6260514231492803, + "outputModuleId": 8989400763278496, + "outputId": 1, + "inputModuleId": 7129029812723674, + "inputId": 9, + "color": "#6752ff" + }, + { + "id": 2270641463296977, + "outputModuleId": 4916903463233428, + "outputId": 36, + "inputModuleId": 1106085699720762, + "inputId": 0, + "color": "#ffd452" + }, + { + "id": 6756229717609380, + "outputModuleId": 1106085699720762, + "outputId": 0, + "inputModuleId": 2252060481249196, + "inputId": 0, + "color": "#a852ff" + }, + { + "id": 8067231886550742, + "outputModuleId": 1106085699720762, + "outputId": 1, + "inputModuleId": 4662717555805257, + "inputId": 4, + "color": "#e952ff" + }, + { + "id": 5644913135709621, + "outputModuleId": 1911991021527897, + "outputId": 3, + "inputModuleId": 8989400763278496, + "inputId": 0, + "color": "#ff52d4" + }, + { + "id": 2785530634055973, + "outputModuleId": 8395408628109080, + "outputId": 0, + "inputModuleId": 7129029812723674, + "inputId": 5, + "color": "#ff5293" + }, + { + "id": 7848829968517457, + "outputModuleId": 8395408628109080, + "outputId": 1, + "inputModuleId": 7129029812723674, + "inputId": 13, + "color": "#ff5252" + }, + { + "id": 2489710152917376, + "outputModuleId": 7129029812723674, + "outputId": 3, + "inputModuleId": 8395408628109080, + "inputId": 0, + "color": "#ff9352" + }, + { + "id": 3900002823632923, + "outputModuleId": 7129029812723674, + "outputId": 7, + "inputModuleId": 8395408628109080, + "inputId": 1, + "color": "#ffd452" + }, + { + "id": 3156196171882697, + "outputModuleId": 1659782601880954, + "outputId": 1, + "inputModuleId": 62131727378541, + "inputId": 0, + "color": "#e8ff52" + }, + { + "id": 3466630695716247, + "outputModuleId": 7289017232262868, + "outputId": 36, + "inputModuleId": 3527046639580119, + "inputId": 0, + "color": "#a8ff52" + }, + { + "id": 554657089121846, + "outputModuleId": 3527046639580119, + "outputId": 0, + "inputModuleId": 4288556518425111, + "inputId": 0, + "color": "#52ff7d" + }, + { + "id": 7817862999329202, + "outputModuleId": 7129029812723674, + "outputId": 0, + "inputModuleId": 4300651035948303, + "inputId": 0, + "color": "#52ffbe" + }, + { + "id": 6308491081404058, + "outputModuleId": 4304683746797983, + "outputId": 1, + "inputModuleId": 8636186340370385, + "inputId": 0, + "color": "#e952ff" + }, + { + "id": 6202424790608086, + "outputModuleId": 8636186340370385, + "outputId": 0, + "inputModuleId": 7289017232262868, + "inputId": 4, + "color": "#ff5252" + }, + { + "id": 435942003625483, + "outputModuleId": 4304683746797983, + "outputId": 0, + "inputModuleId": 8636186340370385, + "inputId": 1, + "color": "#ff5252" + }, + { + "id": 2602550347931605, + "outputModuleId": 8636186340370385, + "outputId": 3, + "inputModuleId": 7289017232262868, + "inputId": 2, + "color": "#ff9352" + }, + { + "id": 4251321654985697, + "outputModuleId": 8636186340370385, + "outputId": 1, + "inputModuleId": 5216982652288525, + "inputId": 1, + "color": "#ffd452" + }, + { + "id": 1626668455564229, + "outputModuleId": 8636186340370385, + "outputId": 4, + "inputModuleId": 5216982652288525, + "inputId": 0, + "color": "#e8ff52" + }, + { + "id": 6063743223822489, + "outputModuleId": 1911991021527897, + "outputId": 1, + "inputModuleId": 5216982652288525, + "inputId": 3, + "color": "#a8ff52" + } + ] +} diff --git a/patches/examples/nooneknowspeter_-_Velour.vcv b/patches/examples/nooneknowspeter_-_Velour.vcv new file mode 100644 index 0000000..1e79c52 --- /dev/null +++ b/patches/examples/nooneknowspeter_-_Velour.vcv @@ -0,0 +1,2055 @@ +{ + "version": "2.4.1", + "zoom": 0.49999922513961792, + "gridOffset": [ + -32.154037475585938, + -1.4488898515701294 + ], + "modules": [ + { + "id": 8401101019084944, + "plugin": "Bogaudio", + "model": "Bogaudio-Walk2", + "version": "2.0", + "params": [ + { + "value": 0.89277017116546631, + "id": 0 + }, + { + "value": 0.78586769104003906, + "id": 1 + }, + { + "value": 0.3228611946105957, + "id": 2 + }, + { + "value": -0.44819235801696777, + "id": 3 + }, + { + "value": 0.92816561460494995, + "id": 4 + }, + { + "value": 0.29394039511680603, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + } + ], + "leftModuleId": 4576969143779329, + "rightModuleId": 6457225277964798, + "data": { + "zoom_out": false, + "grid": true, + "color": 0 + }, + "pos": [ + 15, + 0 + ] + }, + { + "id": 3963843809374158, + "plugin": "WSTD-Drums", + "model": "Gnome", + "version": "2.0", + "params": [ + { + "value": 82.512306213378906, + "id": 0 + }, + { + "value": 0.34999999403953552, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + } + ], + "rightModuleId": 8231395416803978, + "data": { + "running": true + }, + "pos": [ + 0, + 0 + ] + }, + { + "id": 4576969143779329, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "leftModuleId": 8231395416803978, + "rightModuleId": 8401101019084944, + "data": {}, + "pos": [ + 12, + 0 + ] + }, + { + "id": 8231395416803978, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "leftModuleId": 3963843809374158, + "rightModuleId": 4576969143779329, + "data": {}, + "pos": [ + 9, + 0 + ] + }, + { + "id": 4488994658119862, + "plugin": "AriaSalvatrice", + "model": "Darius", + "version": "2.0", + "params": [ + { + "value": 7.0261387825012207, + "id": 0 + }, + { + "value": 6.4799728393554688, + "id": 1 + }, + { + "value": 1.0944652557373047, + "id": 2 + }, + { + "value": 5.4544520378112793, + "id": 3 + }, + { + "value": 2.4997563362121582, + "id": 4 + }, + { + "value": 0.2141343355178833, + "id": 5 + }, + { + "value": 4.5171718597412109, + "id": 6 + }, + { + "value": 1.9916675090789795, + "id": 7 + }, + { + "value": 0.065357208251953125, + "id": 8 + }, + { + "value": 8.6424083709716797, + "id": 9 + }, + { + "value": 3.0126681327819824, + "id": 10 + }, + { + "value": 4.8913331031799316, + "id": 11 + }, + { + "value": 1.8676176071166992, + "id": 12 + }, + { + "value": 7.9574198722839355, + "id": 13 + }, + { + "value": 7.6182794570922852, + "id": 14 + }, + { + "value": 2.6099047660827637, + "id": 15 + }, + { + "value": 0.32318747043609619, + "id": 16 + }, + { + "value": 6.3941841125488281, + "id": 17 + }, + { + "value": 8.3590145111083984, + "id": 18 + }, + { + "value": 7.9967021942138672, + "id": 19 + }, + { + "value": 6.5890960693359375, + "id": 20 + }, + { + "value": 4.3147969245910645, + "id": 21 + }, + { + "value": 0.17612627148628235, + "id": 22 + }, + { + "value": 8.8611621856689453, + "id": 23 + }, + { + "value": 2.1500341892242432, + "id": 24 + }, + { + "value": 6.1861410140991211, + "id": 25 + }, + { + "value": 6.3773579597473145, + "id": 26 + }, + { + "value": 3.8886151313781738, + "id": 27 + }, + { + "value": 5.9339375495910645, + "id": 28 + }, + { + "value": 8.6667995452880859, + "id": 29 + }, + { + "value": 5.5161662101745605, + "id": 30 + }, + { + "value": 6.4344863891601562, + "id": 31 + }, + { + "value": 2.9477152824401855, + "id": 32 + }, + { + "value": 7.8309292793273926, + "id": 33 + }, + { + "value": 1.250623345375061, + "id": 34 + }, + { + "value": 8.43328857421875, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.5, + "id": 41 + }, + { + "value": 0.5, + "id": 42 + }, + { + "value": 0.5, + "id": 43 + }, + { + "value": 0.5, + "id": 44 + }, + { + "value": 0.5, + "id": 45 + }, + { + "value": 0.5, + "id": 46 + }, + { + "value": 0.5, + "id": 47 + }, + { + "value": 0.5, + "id": 48 + }, + { + "value": 0.5, + "id": 49 + }, + { + "value": 0.5, + "id": 50 + }, + { + "value": 0.5, + "id": 51 + }, + { + "value": 0.5, + "id": 52 + }, + { + "value": 0.5, + "id": 53 + }, + { + "value": 0.5, + "id": 54 + }, + { + "value": 0.5, + "id": 55 + }, + { + "value": 0.5, + "id": 56 + }, + { + "value": 0.5, + "id": 57 + }, + { + "value": 0.5, + "id": 58 + }, + { + "value": 0.5, + "id": 59 + }, + { + "value": 0.5, + "id": 60 + }, + { + "value": 0.5, + "id": 61 + }, + { + "value": 0.5, + "id": 62 + }, + { + "value": 0.5, + "id": 63 + }, + { + "value": 0.5, + "id": 64 + }, + { + "value": 0.5, + "id": 65 + }, + { + "value": 0.5, + "id": 66 + }, + { + "value": 0.5, + "id": 67 + }, + { + "value": 0.5, + "id": 68 + }, + { + "value": 0.5, + "id": 69 + }, + { + "value": 0.5, + "id": 70 + }, + { + "value": 0.5, + "id": 71 + }, + { + "value": 0.0, + "id": 72 + }, + { + "value": 1.0, + "id": 73 + }, + { + "value": 0.0, + "id": 74 + }, + { + "value": 8.0, + "id": 75 + }, + { + "value": 0.0, + "id": 76 + }, + { + "value": 0.0, + "id": 77 + }, + { + "value": 0.0, + "id": 78 + }, + { + "value": 0.0, + "id": 79 + }, + { + "value": 1.0, + "id": 80 + }, + { + "value": 3.0, + "id": 81 + }, + { + "value": 5.0, + "id": 82 + }, + { + "value": 0.21686747670173645, + "id": 83 + }, + { + "value": 1.0, + "id": 84 + }, + { + "value": 0.0, + "id": 85 + }, + { + "value": 2.0, + "id": 86 + } + ], + "leftModuleId": 687112602285230, + "rightModuleId": 5328912255895118, + "data": { + "step": 1, + "node": 1, + "lastNode": 1, + "lastGate": 1, + "pathTraveled": [ + 0, + 1, + -1, + -1, + -1, + -1, + -1, + -1 + ] + }, + "pos": [ + 26, + 1 + ] + }, + { + "id": 5328912255895118, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "leftModuleId": 4488994658119862, + "rightModuleId": 7510407318957287, + "data": {}, + "pos": [ + 58, + 1 + ] + }, + { + "id": 5866320402390628, + "plugin": "Bogaudio", + "model": "Bogaudio-ADSR", + "version": "2.0", + "params": [ + { + "value": 0.11973415315151215, + "id": 0 + }, + { + "value": 0.38369983434677124, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 0.36683237552642822, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + } + ], + "leftModuleId": 1862980889020017, + "data": { + "invert": 1.0 + }, + "pos": [ + 74, + 1 + ] + }, + { + "id": 7510407318957287, + "plugin": "Bogaudio", + "model": "Bogaudio-VCO", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 1.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + } + ], + "leftModuleId": 5328912255895118, + "rightModuleId": 1862980889020017, + "data": { + "poly_input": 0, + "dc_correction": true + }, + "pos": [ + 61, + 1 + ] + }, + { + "id": 1862980889020017, + "plugin": "Bogaudio", + "model": "Bogaudio-Mix1", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + } + ], + "leftModuleId": 7510407318957287, + "rightModuleId": 5866320402390628, + "data": { + "linear_cv": false + }, + "pos": [ + 71, + 1 + ] + }, + { + "id": 6457225277964798, + "plugin": "AriaSalvatrice", + "model": "Darius", + "version": "2.0", + "params": [ + { + "value": 7.0261387825012207, + "id": 0 + }, + { + "value": 6.4799728393554688, + "id": 1 + }, + { + "value": 1.0944652557373047, + "id": 2 + }, + { + "value": 5.4544520378112793, + "id": 3 + }, + { + "value": 2.4997563362121582, + "id": 4 + }, + { + "value": 0.2141343355178833, + "id": 5 + }, + { + "value": 4.5171718597412109, + "id": 6 + }, + { + "value": 1.9916675090789795, + "id": 7 + }, + { + "value": 0.065357208251953125, + "id": 8 + }, + { + "value": 8.6424083709716797, + "id": 9 + }, + { + "value": 3.0126681327819824, + "id": 10 + }, + { + "value": 4.8913331031799316, + "id": 11 + }, + { + "value": 1.8676176071166992, + "id": 12 + }, + { + "value": 7.9574198722839355, + "id": 13 + }, + { + "value": 7.6182794570922852, + "id": 14 + }, + { + "value": 2.6099047660827637, + "id": 15 + }, + { + "value": 0.32318747043609619, + "id": 16 + }, + { + "value": 6.3941841125488281, + "id": 17 + }, + { + "value": 8.3590145111083984, + "id": 18 + }, + { + "value": 7.9967021942138672, + "id": 19 + }, + { + "value": 6.5890960693359375, + "id": 20 + }, + { + "value": 4.3147969245910645, + "id": 21 + }, + { + "value": 0.17612627148628235, + "id": 22 + }, + { + "value": 8.8611621856689453, + "id": 23 + }, + { + "value": 2.1500341892242432, + "id": 24 + }, + { + "value": 6.1861410140991211, + "id": 25 + }, + { + "value": 6.3773579597473145, + "id": 26 + }, + { + "value": 3.8886151313781738, + "id": 27 + }, + { + "value": 5.9339375495910645, + "id": 28 + }, + { + "value": 8.6667995452880859, + "id": 29 + }, + { + "value": 5.5161662101745605, + "id": 30 + }, + { + "value": 6.4344863891601562, + "id": 31 + }, + { + "value": 2.9477152824401855, + "id": 32 + }, + { + "value": 7.8309292793273926, + "id": 33 + }, + { + "value": 1.250623345375061, + "id": 34 + }, + { + "value": 8.43328857421875, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.5, + "id": 41 + }, + { + "value": 0.5, + "id": 42 + }, + { + "value": 0.5, + "id": 43 + }, + { + "value": 0.5, + "id": 44 + }, + { + "value": 0.5, + "id": 45 + }, + { + "value": 0.5, + "id": 46 + }, + { + "value": 0.5, + "id": 47 + }, + { + "value": 0.5, + "id": 48 + }, + { + "value": 0.5, + "id": 49 + }, + { + "value": 0.5, + "id": 50 + }, + { + "value": 0.5, + "id": 51 + }, + { + "value": 0.5, + "id": 52 + }, + { + "value": 0.5, + "id": 53 + }, + { + "value": 0.5, + "id": 54 + }, + { + "value": 0.5, + "id": 55 + }, + { + "value": 0.5, + "id": 56 + }, + { + "value": 0.5, + "id": 57 + }, + { + "value": 0.5, + "id": 58 + }, + { + "value": 0.5, + "id": 59 + }, + { + "value": 0.5, + "id": 60 + }, + { + "value": 0.5, + "id": 61 + }, + { + "value": 0.5, + "id": 62 + }, + { + "value": 0.5, + "id": 63 + }, + { + "value": 0.5, + "id": 64 + }, + { + "value": 0.5, + "id": 65 + }, + { + "value": 0.5, + "id": 66 + }, + { + "value": 0.5, + "id": 67 + }, + { + "value": 0.5, + "id": 68 + }, + { + "value": 0.5, + "id": 69 + }, + { + "value": 0.5, + "id": 70 + }, + { + "value": 0.5, + "id": 71 + }, + { + "value": 0.0, + "id": 72 + }, + { + "value": 1.0, + "id": 73 + }, + { + "value": 0.0, + "id": 74 + }, + { + "value": 8.0, + "id": 75 + }, + { + "value": 0.0, + "id": 76 + }, + { + "value": 0.0, + "id": 77 + }, + { + "value": 0.0, + "id": 78 + }, + { + "value": 0.0, + "id": 79 + }, + { + "value": 1.0, + "id": 80 + }, + { + "value": 3.0, + "id": 81 + }, + { + "value": 5.0, + "id": 82 + }, + { + "value": 0.0, + "id": 83 + }, + { + "value": 1.0, + "id": 84 + }, + { + "value": 0.0, + "id": 85 + }, + { + "value": 2.0, + "id": 86 + } + ], + "leftModuleId": 8401101019084944, + "rightModuleId": 2177876768984755, + "data": { + "step": 4, + "node": 11, + "lastNode": 11, + "lastGate": 11, + "pathTraveled": [ + 0, + 2, + 4, + 7, + 11, + -1, + -1, + -1 + ] + }, + "pos": [ + 29, + 0 + ] + }, + { + "id": 2177876768984755, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "leftModuleId": 6457225277964798, + "rightModuleId": 6815715252023104, + "data": {}, + "pos": [ + 61, + 0 + ] + }, + { + "id": 6815715252023104, + "plugin": "AudibleInstruments", + "model": "Braids", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": -1.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.5, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 0.5, + "id": 5 + }, + { + "value": 0.29036134481430054, + "id": 6 + } + ], + "leftModuleId": 2177876768984755, + "rightModuleId": 4223613076827292, + "data": { + "settings": [ + 13, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "lowCpu": false + }, + "pos": [ + 64, + 0 + ] + }, + { + "id": 3125880692782920, + "plugin": "Fundamental", + "model": "LFO", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": -2.1228907108306885, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 0.5, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + } + ], + "rightModuleId": 687112602285230, + "pos": [ + 4, + 1 + ] + }, + { + "id": 687112602285230, + "plugin": "Fundamental", + "model": "Scope", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 1.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 1.0, + "id": 7 + } + ], + "leftModuleId": 3125880692782920, + "rightModuleId": 4488994658119862, + "pos": [ + 13, + 1 + ] + }, + { + "id": 1613538496199230, + "plugin": "stocaudio", + "model": "Polydelay", + "version": "2.0", + "params": [ + { + "value": 0.5, + "id": 0 + }, + { + "value": 0.050666660070419312, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 1.0, + "id": 4 + }, + { + "value": 0.24533355236053467, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + } + ], + "leftModuleId": 7195941555388282, + "pos": [ + 99, + -1 + ] + }, + { + "id": 4223613076827292, + "plugin": "mscHack", + "model": "Mix_4_0_4", + "version": "2.0", + "params": [ + { + "value": 0.56265157461166382, + "id": 0 + }, + { + "value": 0.87000149488449097, + "id": 1 + }, + { + "value": 0.43800094723701477, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 1.0, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 1.0, + "id": 7 + }, + { + "value": 0.99800002574920654, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.5, + "id": 17 + }, + { + "value": 0.5, + "id": 18 + }, + { + "value": 0.5, + "id": 19 + }, + { + "value": 0.5, + "id": 20 + }, + { + "value": 0.5, + "id": 21 + }, + { + "value": 0.5, + "id": 22 + }, + { + "value": 0.5, + "id": 23 + }, + { + "value": 0.68554204702377319, + "id": 24 + }, + { + "value": 0.5, + "id": 25 + }, + { + "value": 0.5, + "id": 26 + }, + { + "value": 0.5, + "id": 27 + }, + { + "value": 0.5, + "id": 28 + }, + { + "value": 0.5, + "id": 29 + }, + { + "value": 0.5, + "id": 30 + }, + { + "value": 0.5, + "id": 31 + }, + { + "value": 0.53373491764068604, + "id": 32 + }, + { + "value": 0.5, + "id": 33 + }, + { + "value": 0.5, + "id": 34 + }, + { + "value": 0.5, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.32771077752113342, + "id": 40 + }, + { + "value": 0.92891669273376465, + "id": 41 + }, + { + "value": 0.88313132524490356, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.72168684005737305, + "id": 45 + }, + { + "value": 0.86867374181747437, + "id": 46 + }, + { + "value": 0.85542160272598267, + "id": 47 + }, + { + "value": 0.83011990785598755, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 0.0, + "id": 50 + }, + { + "value": 0.0, + "id": 51 + }, + { + "value": 0.0, + "id": 52 + }, + { + "value": 0.0, + "id": 53 + }, + { + "value": 0.0, + "id": 54 + }, + { + "value": 0.0, + "id": 55 + }, + { + "value": 0.0, + "id": 56 + }, + { + "value": 0.65301191806793213, + "id": 57 + }, + { + "value": 1.0, + "id": 58 + }, + { + "value": 0.90843379497528076, + "id": 59 + }, + { + "value": 1.0, + "id": 60 + } + ], + "leftModuleId": 6815715252023104, + "rightModuleId": 4112825555132958, + "data": { + "m_bMuteStates": [ + false, + false, + false, + false, + false, + false, + false, + false + ], + "m_bSoloStates": [ + false, + false, + false, + false, + false, + false, + false, + false + ], + "m_bGroupPreMute": [ + true + ], + "m_bGainLevelx2": [ + false + ], + "m_bPreFader": [ + false, + false, + false, + false + ], + "m_bAuxIgnoreSolo": [ + false + ] + }, + "pos": [ + 80, + 0 + ] + }, + { + "id": 4706465147710920, + "plugin": "AudibleInstruments", + "model": "Clouds", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.97042751312255859, + "id": 3 + }, + { + "value": 0.49198877811431885, + "id": 4 + }, + { + "value": -1.570360541343689, + "id": 5 + }, + { + "value": 0.35826081037521362, + "id": 6 + }, + { + "value": 0.69173765182495117, + "id": 7 + }, + { + "value": 0.93423271179199219, + "id": 8 + }, + { + "value": 0.53975981473922729, + "id": 9 + }, + { + "value": 0.7913019061088562, + "id": 10 + }, + { + "value": 0.43277645111083984, + "id": 11 + }, + { + "value": 0.037778515368700027, + "id": 12 + } + ], + "rightModuleId": 4195596968423719, + "data": { + "playback": 0, + "quality": 0, + "blendMode": 3 + }, + "pos": [ + 32, + -1 + ] + }, + { + "id": 7195941555388282, + "plugin": "ParableInstruments", + "model": "Neil", + "version": "2.0", + "params": [ + { + "value": 0.5, + "id": 0 + }, + { + "value": 0.74578297138214111, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 1.0, + "id": 3 + }, + { + "value": 0.74216651916503906, + "id": 4 + }, + { + "value": 0.67590349912643433, + "id": 5 + }, + { + "value": 0.69638544321060181, + "id": 6 + }, + { + "value": 0.72289144992828369, + "id": 7 + }, + { + "value": 0.69036132097244263, + "id": 8 + }, + { + "value": 0.89759010076522827, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + } + ], + "leftModuleId": 4195596968423719, + "rightModuleId": 1613538496199230, + "data": { + "playbackmode": 0, + "lofi": false, + "mono": false, + "freeze": false, + "buffersize": 1, + "reverse": 0 + }, + "pos": [ + 68, + -1 + ] + }, + { + "id": 4195596968423719, + "plugin": "AudibleInstruments", + "model": "Clouds", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.74337387084960938, + "id": 3 + }, + { + "value": 0.93855434656143188, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 0.96144688129425049, + "id": 7 + }, + { + "value": 0.93132662773132324, + "id": 8 + }, + { + "value": 0.63373452425003052, + "id": 9 + }, + { + "value": 0.38915622234344482, + "id": 10 + }, + { + "value": 0.36024093627929688, + "id": 11 + }, + { + "value": 0.41566285490989685, + "id": 12 + } + ], + "leftModuleId": 4706465147710920, + "rightModuleId": 7195941555388282, + "data": { + "playback": 0, + "quality": 0, + "blendMode": 0 + }, + "pos": [ + 50, + -1 + ] + }, + { + "id": 4112825555132958, + "plugin": "Cardinal", + "model": "HostAudio2", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + } + ], + "leftModuleId": 4223613076827292, + "data": { + "dcFilter": true + }, + "pos": [ + 100, + 0 + ] + } + ], + "cables": [ + { + "id": 1737632974552185, + "outputModuleId": 3963843809374158, + "outputId": 2, + "inputModuleId": 8231395416803978, + "inputId": 0, + "color": "#527dff" + }, + { + "id": 4651216152544086, + "outputModuleId": 3963843809374158, + "outputId": 4, + "inputModuleId": 8231395416803978, + "inputId": 1, + "color": "#a852ff" + }, + { + "id": 2631164562212760, + "outputModuleId": 4223613076827292, + "outputId": 0, + "inputModuleId": 4112825555132958, + "inputId": 0, + "color": "#e952ff" + }, + { + "id": 7856593858560804, + "outputModuleId": 4223613076827292, + "outputId": 1, + "inputModuleId": 4112825555132958, + "inputId": 1, + "color": "#ff52d4" + }, + { + "id": 3058453933209471, + "outputModuleId": 4195596968423719, + "outputId": 0, + "inputModuleId": 4223613076827292, + "inputId": 4, + "color": "#52beff" + }, + { + "id": 738172398032874, + "outputModuleId": 4195596968423719, + "outputId": 1, + "inputModuleId": 4223613076827292, + "inputId": 12, + "color": "#527dff" + }, + { + "id": 4647729779146190, + "outputModuleId": 4223613076827292, + "outputId": 2, + "inputModuleId": 4195596968423719, + "inputId": 6, + "color": "#6752ff" + }, + { + "id": 1569159119929211, + "outputModuleId": 4223613076827292, + "outputId": 6, + "inputModuleId": 4195596968423719, + "inputId": 7, + "color": "#a852ff" + }, + { + "id": 835155137538407, + "outputModuleId": 6815715252023104, + "outputId": 0, + "inputModuleId": 4223613076827292, + "inputId": 0, + "color": "#ffd452" + }, + { + "id": 7923878216598081, + "outputModuleId": 6457225277964798, + "outputId": 36, + "inputModuleId": 2177876768984755, + "inputId": 0, + "color": "#e952ff" + }, + { + "id": 6449624397526304, + "outputModuleId": 2177876768984755, + "outputId": 0, + "inputModuleId": 6815715252023104, + "inputId": 1, + "color": "#ffd452" + }, + { + "id": 1565179834364724, + "outputModuleId": 7195941555388282, + "outputId": 0, + "inputModuleId": 4223613076827292, + "inputId": 5, + "color": "#a8ff52" + }, + { + "id": 1679088434531215, + "outputModuleId": 7195941555388282, + "outputId": 1, + "inputModuleId": 4223613076827292, + "inputId": 13, + "color": "#67ff52" + }, + { + "id": 2417475228330684, + "outputModuleId": 4223613076827292, + "outputId": 3, + "inputModuleId": 7195941555388282, + "inputId": 9, + "color": "#52ff7d" + }, + { + "id": 49102553289391, + "outputModuleId": 4223613076827292, + "outputId": 7, + "inputModuleId": 7195941555388282, + "inputId": 10, + "color": "#52ffbe" + }, + { + "id": 2782310593200760, + "outputModuleId": 2177876768984755, + "outputId": 1, + "inputModuleId": 7195941555388282, + "inputId": 4, + "color": "#52ffff" + }, + { + "id": 7537172819853304, + "outputModuleId": 6457225277964798, + "outputId": 37, + "inputModuleId": 6815715252023104, + "inputId": 0, + "color": "#52beff" + }, + { + "id": 1202463958825698, + "outputModuleId": 8231395416803978, + "outputId": 3, + "inputModuleId": 6457225277964798, + "inputId": 2, + "color": "#527dff" + }, + { + "id": 5841327569860677, + "outputModuleId": 4488994658119862, + "outputId": 36, + "inputModuleId": 5328912255895118, + "inputId": 0, + "color": "#e952ff" + }, + { + "id": 8807073842317602, + "outputModuleId": 5328912255895118, + "outputId": 1, + "inputModuleId": 4706465147710920, + "inputId": 4, + "color": "#a8ff52" + }, + { + "id": 805252248668354, + "outputModuleId": 7510407318957287, + "outputId": 3, + "inputModuleId": 1862980889020017, + "inputId": 2, + "color": "#67ff52" + }, + { + "id": 8007460391870293, + "outputModuleId": 5866320402390628, + "outputId": 0, + "inputModuleId": 1862980889020017, + "inputId": 1, + "color": "#52ffbe" + }, + { + "id": 5516878996793388, + "outputModuleId": 4488994658119862, + "outputId": 37, + "inputModuleId": 5328912255895118, + "inputId": 1, + "color": "#52ffff" + }, + { + "id": 4709500155141215, + "outputModuleId": 4706465147710920, + "outputId": 1, + "inputModuleId": 4223613076827292, + "inputId": 14, + "color": "#e8ff52" + }, + { + "id": 5444801490875727, + "outputModuleId": 4706465147710920, + "outputId": 0, + "inputModuleId": 4223613076827292, + "inputId": 6, + "color": "#ffd452" + }, + { + "id": 986620589227638, + "outputModuleId": 1862980889020017, + "outputId": 0, + "inputModuleId": 4223613076827292, + "inputId": 1, + "color": "#52ff7d" + }, + { + "id": 7794798684989949, + "outputModuleId": 4223613076827292, + "outputId": 4, + "inputModuleId": 4706465147710920, + "inputId": 6, + "color": "#527dff" + }, + { + "id": 7383318766314512, + "outputModuleId": 4223613076827292, + "outputId": 8, + "inputModuleId": 4706465147710920, + "inputId": 7, + "color": "#6752ff" + }, + { + "id": 5652959298703947, + "outputModuleId": 1613538496199230, + "outputId": 0, + "inputModuleId": 4223613076827292, + "inputId": 7, + "color": "#e952ff" + }, + { + "id": 6492618964232031, + "outputModuleId": 1613538496199230, + "outputId": 1, + "inputModuleId": 4223613076827292, + "inputId": 15, + "color": "#ff52d4" + }, + { + "id": 6602325143075219, + "outputModuleId": 4223613076827292, + "outputId": 5, + "inputModuleId": 1613538496199230, + "inputId": 0, + "color": "#ff5293" + }, + { + "id": 8055811355984514, + "outputModuleId": 4223613076827292, + "outputId": 9, + "inputModuleId": 1613538496199230, + "inputId": 1, + "color": "#ff5252" + }, + { + "id": 1788086222196074, + "outputModuleId": 687112602285230, + "outputId": 0, + "inputModuleId": 1613538496199230, + "inputId": 2, + "color": "#67ff52" + }, + { + "id": 4048027445325540, + "outputModuleId": 8231395416803978, + "outputId": 1, + "inputModuleId": 3125880692782920, + "inputId": 4, + "color": "#ffd452" + }, + { + "id": 4588085510110331, + "outputModuleId": 3125880692782920, + "outputId": 0, + "inputModuleId": 687112602285230, + "inputId": 0, + "color": "#52ff7d" + }, + { + "id": 4028540605490750, + "outputModuleId": 8401101019084944, + "outputId": 1, + "inputModuleId": 6457225277964798, + "inputId": 3, + "color": "#a852ff" + }, + { + "id": 2665292229194811, + "outputModuleId": 5328912255895118, + "outputId": 0, + "inputModuleId": 7510407318957287, + "inputId": 0, + "color": "#6752ff" + }, + { + "id": 1940135207674808, + "outputModuleId": 3963843809374158, + "outputId": 2, + "inputModuleId": 4576969143779329, + "inputId": 0, + "color": "#67ff52" + }, + { + "id": 984501014684268, + "outputModuleId": 5328912255895118, + "outputId": 3, + "inputModuleId": 5866320402390628, + "inputId": 0, + "color": "#52ffbe" + }, + { + "id": 8172180805555003, + "outputModuleId": 8231395416803978, + "outputId": 4, + "inputModuleId": 4488994658119862, + "inputId": 2, + "color": "#52ffff" + } + ] +} diff --git a/patches/examples/nooneknowspeter_-_Xmas.vcv b/patches/examples/nooneknowspeter_-_Xmas.vcv new file mode 100644 index 0000000..01fcc76 --- /dev/null +++ b/patches/examples/nooneknowspeter_-_Xmas.vcv @@ -0,0 +1,3631 @@ +{ + "version": "2.4.1", + "zoom": 0.42044827342033386, + "gridOffset": [ + -62.799350738525391, + -1.9729030132293701 + ], + "modules": [ + { + "id": 2159047972516498, + "plugin": "ImpromptuModular", + "model": "Clocked-Clkd", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 2.0, + "id": 2 + }, + { + "value": 151.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + } + ], + "leftModuleId": 4187213689217722, + "rightModuleId": 3830846223236507, + "data": { + "panelTheme": 1, + "panelContrast": 220.0, + "running": true, + "bpmDetectionMode": false, + "resetOnStartStop": 0, + "ppqn": 4, + "resetClockOutputsHigh": true, + "momentaryRunInput": true, + "forceCvOnBpmOut": false, + "displayIndex": 0, + "trigOuts": [ + false, + false, + false, + false + ], + "clockMaster": -1 + }, + "pos": [ + -52, + 0 + ] + }, + { + "id": 4187213689217722, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "rightModuleId": 2159047972516498, + "data": {}, + "pos": [ + -55, + 0 + ] + }, + { + "id": 3830846223236507, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "leftModuleId": 2159047972516498, + "rightModuleId": 5622494419825952, + "data": {}, + "pos": [ + -42, + 0 + ] + }, + { + "id": 5588781388402853, + "plugin": "Bogaudio", + "model": "Bogaudio-ADSR", + "version": "2.0", + "params": [ + { + "value": 0.10286685824394226, + "id": 0 + }, + { + "value": 0.31622999906539917, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 0.31622999906539917, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + } + ], + "leftModuleId": 6485270196416882, + "rightModuleId": 1170574363078075, + "data": { + "invert": 1.0 + }, + "pos": [ + 46, + 0 + ] + }, + { + "id": 7382001000905062, + "plugin": "Bogaudio", + "model": "Bogaudio-ADSR", + "version": "2.0", + "params": [ + { + "value": 0.14142100512981415, + "id": 0 + }, + { + "value": 0.31622999906539917, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 0.31622999906539917, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + } + ], + "leftModuleId": 1305145125414192, + "rightModuleId": 438885941898769, + "data": { + "invert": 1.0 + }, + "pos": [ + 18, + 0 + ] + }, + { + "id": 2278749660885397, + "plugin": "Bogaudio", + "model": "Bogaudio-ADSR", + "version": "2.0", + "params": [ + { + "value": 0.14142100512981415, + "id": 0 + }, + { + "value": 0.31622999906539917, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 0.31622999906539917, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + } + ], + "leftModuleId": 998069146105942, + "rightModuleId": 6529439116344665, + "data": { + "invert": 1.0 + }, + "pos": [ + 32, + 0 + ] + }, + { + "id": 413123163252880, + "plugin": "Bogaudio", + "model": "Bogaudio-ADSR", + "version": "2.0", + "params": [ + { + "value": 0.17274630069732666, + "id": 0 + }, + { + "value": 0.31622999906539917, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 0.31622999906539917, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + } + ], + "leftModuleId": 8554745767661414, + "rightModuleId": 3745062635142253, + "data": { + "invert": 1.0 + }, + "pos": [ + 1, + 0 + ] + }, + { + "id": 6766853921521776, + "plugin": "AriaSalvatrice", + "model": "Quack", + "version": "2.0", + "params": [ + { + "value": 0.0, + "id": 0 + }, + { + "value": 1.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 1.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 1.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 1.0, + "id": 11 + }, + { + "value": 100.0, + "id": 12 + }, + { + "value": 100.0, + "id": 13 + }, + { + "value": 100.0, + "id": 14 + }, + { + "value": 100.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 1.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 1.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 0.0, + "id": 50 + }, + { + "value": 0.0, + "id": 51 + }, + { + "value": 4.0, + "id": 52 + }, + { + "value": 5.0, + "id": 53 + }, + { + "value": 0.0, + "id": 54 + } + ], + "rightModuleId": 4757927610032130, + "data": { + "sceneTrigSelection": false, + "scene": 0, + "scenes": [ + [ + false, + true, + false, + false, + true, + false, + true, + false, + true, + false, + false, + true + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ] + ] + }, + "pos": [ + -50, + -1 + ] + }, + { + "id": 4757927610032130, + "plugin": "Bogaudio", + "model": "Bogaudio-Mult", + "version": "2.0", + "params": [], + "leftModuleId": 6766853921521776, + "rightModuleId": 4881975851057372, + "data": {}, + "pos": [ + -43, + -1 + ] + }, + { + "id": 5622494419825952, + "plugin": "AriaSalvatrice", + "model": "Darius", + "version": "2.0", + "params": [ + { + "value": 5.7326288223266602, + "id": 0 + }, + { + "value": 1.2162555456161499, + "id": 1 + }, + { + "value": 8.3106145858764648, + "id": 2 + }, + { + "value": 2.7549829483032227, + "id": 3 + }, + { + "value": 1.6300861835479736, + "id": 4 + }, + { + "value": 0.91675013303756714, + "id": 5 + }, + { + "value": 3.9831564426422119, + "id": 6 + }, + { + "value": 8.9421091079711914, + "id": 7 + }, + { + "value": 8.2793073654174805, + "id": 8 + }, + { + "value": 5.8733129501342773, + "id": 9 + }, + { + "value": 1.7882294654846191, + "id": 10 + }, + { + "value": 2.6813724040985107, + "id": 11 + }, + { + "value": 4.2679920196533203, + "id": 12 + }, + { + "value": 6.4848566055297852, + "id": 13 + }, + { + "value": 5.3372011184692383, + "id": 14 + }, + { + "value": 5.7527809143066406, + "id": 15 + }, + { + "value": 1.8975667953491211, + "id": 16 + }, + { + "value": 5.119206428527832, + "id": 17 + }, + { + "value": 7.4633817672729492, + "id": 18 + }, + { + "value": 7.3897285461425781, + "id": 19 + }, + { + "value": 0.11451608687639236, + "id": 20 + }, + { + "value": 6.0726122856140137, + "id": 21 + }, + { + "value": 1.6985502243041992, + "id": 22 + }, + { + "value": 7.9478974342346191, + "id": 23 + }, + { + "value": 9.0303964614868164, + "id": 24 + }, + { + "value": 6.8020820617675781, + "id": 25 + }, + { + "value": 4.086698055267334, + "id": 26 + }, + { + "value": 8.1851844787597656, + "id": 27 + }, + { + "value": 6.3494329452514648, + "id": 28 + }, + { + "value": 4.6584978103637695, + "id": 29 + }, + { + "value": 2.6089012622833252, + "id": 30 + }, + { + "value": 5.6259002685546875, + "id": 31 + }, + { + "value": 6.4349942207336426, + "id": 32 + }, + { + "value": 6.5766806602478027, + "id": 33 + }, + { + "value": 2.8860161304473877, + "id": 34 + }, + { + "value": 9.8916788101196289, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.5, + "id": 41 + }, + { + "value": 0.5, + "id": 42 + }, + { + "value": 0.5, + "id": 43 + }, + { + "value": 0.5, + "id": 44 + }, + { + "value": 0.5, + "id": 45 + }, + { + "value": 0.5, + "id": 46 + }, + { + "value": 0.5, + "id": 47 + }, + { + "value": 0.5, + "id": 48 + }, + { + "value": 0.5, + "id": 49 + }, + { + "value": 0.5, + "id": 50 + }, + { + "value": 0.5, + "id": 51 + }, + { + "value": 0.5, + "id": 52 + }, + { + "value": 0.5, + "id": 53 + }, + { + "value": 0.5, + "id": 54 + }, + { + "value": 0.5, + "id": 55 + }, + { + "value": 0.5, + "id": 56 + }, + { + "value": 0.5, + "id": 57 + }, + { + "value": 0.5, + "id": 58 + }, + { + "value": 0.5, + "id": 59 + }, + { + "value": 0.5, + "id": 60 + }, + { + "value": 0.5, + "id": 61 + }, + { + "value": 0.5, + "id": 62 + }, + { + "value": 0.5, + "id": 63 + }, + { + "value": 0.5, + "id": 64 + }, + { + "value": 0.5, + "id": 65 + }, + { + "value": 0.5, + "id": 66 + }, + { + "value": 0.5, + "id": 67 + }, + { + "value": 0.5, + "id": 68 + }, + { + "value": 0.5, + "id": 69 + }, + { + "value": 0.5, + "id": 70 + }, + { + "value": 0.5, + "id": 71 + }, + { + "value": 0.0, + "id": 72 + }, + { + "value": 1.0, + "id": 73 + }, + { + "value": 0.0, + "id": 74 + }, + { + "value": 8.0, + "id": 75 + }, + { + "value": 0.0, + "id": 76 + }, + { + "value": 0.0, + "id": 77 + }, + { + "value": 0.0, + "id": 78 + }, + { + "value": 0.0, + "id": 79 + }, + { + "value": 1.0, + "id": 80 + }, + { + "value": 3.0, + "id": 81 + }, + { + "value": 5.0, + "id": 82 + }, + { + "value": 0.0, + "id": 83 + }, + { + "value": 1.0, + "id": 84 + }, + { + "value": 0.0, + "id": 85 + }, + { + "value": 2.0, + "id": 86 + } + ], + "leftModuleId": 3830846223236507, + "rightModuleId": 8554745767661414, + "data": { + "step": 5, + "node": 16, + "lastNode": 16, + "lastGate": 16, + "pathTraveled": [ + 0, + 1, + 3, + 7, + 11, + 16, + -1, + -1 + ] + }, + "pos": [ + -39, + 0 + ] + }, + { + "id": 8554745767661414, + "plugin": "21kHz", + "model": "kHzPalmLoop", + "version": "2.0", + "params": [ + { + "value": 9.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + } + ], + "leftModuleId": 5622494419825952, + "rightModuleId": 413123163252880, + "pos": [ + -7, + 0 + ] + }, + { + "id": 3745062635142253, + "plugin": "Bogaudio", + "model": "Bogaudio-Mix1", + "version": "2.0", + "params": [ + { + "value": 0.88509106636047363, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + } + ], + "leftModuleId": 413123163252880, + "rightModuleId": 6814437816954201, + "data": { + "linear_cv": false + }, + "pos": [ + 4, + 0 + ] + }, + { + "id": 4881975851057372, + "plugin": "AriaSalvatrice", + "model": "Darius", + "version": "2.0", + "params": [ + { + "value": 5.7326288223266602, + "id": 0 + }, + { + "value": 1.2162555456161499, + "id": 1 + }, + { + "value": 8.3106145858764648, + "id": 2 + }, + { + "value": 2.7549829483032227, + "id": 3 + }, + { + "value": 1.6300861835479736, + "id": 4 + }, + { + "value": 0.91675013303756714, + "id": 5 + }, + { + "value": 3.9831564426422119, + "id": 6 + }, + { + "value": 8.9421091079711914, + "id": 7 + }, + { + "value": 8.2793073654174805, + "id": 8 + }, + { + "value": 5.8733129501342773, + "id": 9 + }, + { + "value": 1.7882294654846191, + "id": 10 + }, + { + "value": 2.6813724040985107, + "id": 11 + }, + { + "value": 4.2679920196533203, + "id": 12 + }, + { + "value": 6.4848566055297852, + "id": 13 + }, + { + "value": 5.3372011184692383, + "id": 14 + }, + { + "value": 5.7527809143066406, + "id": 15 + }, + { + "value": 1.8975667953491211, + "id": 16 + }, + { + "value": 5.119206428527832, + "id": 17 + }, + { + "value": 7.4633817672729492, + "id": 18 + }, + { + "value": 7.3897285461425781, + "id": 19 + }, + { + "value": 0.11451608687639236, + "id": 20 + }, + { + "value": 6.0726122856140137, + "id": 21 + }, + { + "value": 1.6985502243041992, + "id": 22 + }, + { + "value": 7.9478974342346191, + "id": 23 + }, + { + "value": 9.0303964614868164, + "id": 24 + }, + { + "value": 6.8020820617675781, + "id": 25 + }, + { + "value": 4.086698055267334, + "id": 26 + }, + { + "value": 8.1851844787597656, + "id": 27 + }, + { + "value": 6.3494329452514648, + "id": 28 + }, + { + "value": 4.6584978103637695, + "id": 29 + }, + { + "value": 2.6089012622833252, + "id": 30 + }, + { + "value": 5.6259002685546875, + "id": 31 + }, + { + "value": 6.4349942207336426, + "id": 32 + }, + { + "value": 6.5766806602478027, + "id": 33 + }, + { + "value": 2.8860161304473877, + "id": 34 + }, + { + "value": 9.8916788101196289, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.5, + "id": 41 + }, + { + "value": 0.5, + "id": 42 + }, + { + "value": 0.5, + "id": 43 + }, + { + "value": 0.5, + "id": 44 + }, + { + "value": 0.5, + "id": 45 + }, + { + "value": 0.5, + "id": 46 + }, + { + "value": 0.5, + "id": 47 + }, + { + "value": 0.5, + "id": 48 + }, + { + "value": 0.5, + "id": 49 + }, + { + "value": 0.5, + "id": 50 + }, + { + "value": 0.5, + "id": 51 + }, + { + "value": 0.5, + "id": 52 + }, + { + "value": 0.5, + "id": 53 + }, + { + "value": 0.5, + "id": 54 + }, + { + "value": 0.5, + "id": 55 + }, + { + "value": 0.5, + "id": 56 + }, + { + "value": 0.5, + "id": 57 + }, + { + "value": 0.5, + "id": 58 + }, + { + "value": 0.5, + "id": 59 + }, + { + "value": 0.5, + "id": 60 + }, + { + "value": 0.5, + "id": 61 + }, + { + "value": 0.5, + "id": 62 + }, + { + "value": 0.5, + "id": 63 + }, + { + "value": 0.5, + "id": 64 + }, + { + "value": 0.5, + "id": 65 + }, + { + "value": 0.5, + "id": 66 + }, + { + "value": 0.5, + "id": 67 + }, + { + "value": 0.5, + "id": 68 + }, + { + "value": 0.5, + "id": 69 + }, + { + "value": 0.5, + "id": 70 + }, + { + "value": 0.5, + "id": 71 + }, + { + "value": 0.0, + "id": 72 + }, + { + "value": 1.0, + "id": 73 + }, + { + "value": 0.0, + "id": 74 + }, + { + "value": 8.0, + "id": 75 + }, + { + "value": 0.0, + "id": 76 + }, + { + "value": 0.0, + "id": 77 + }, + { + "value": 0.0, + "id": 78 + }, + { + "value": 0.0, + "id": 79 + }, + { + "value": 1.0, + "id": 80 + }, + { + "value": 3.0, + "id": 81 + }, + { + "value": 5.0, + "id": 82 + }, + { + "value": 0.0, + "id": 83 + }, + { + "value": 1.0, + "id": 84 + }, + { + "value": 0.0, + "id": 85 + }, + { + "value": 2.0, + "id": 86 + } + ], + "leftModuleId": 4757927610032130, + "rightModuleId": 4527978366762434, + "data": { + "step": 5, + "node": 18, + "lastNode": 18, + "lastGate": 18, + "pathTraveled": [ + 0, + 2, + 5, + 8, + 13, + 18, + -1, + -1 + ] + }, + "pos": [ + -40, + -1 + ] + }, + { + "id": 4527978366762434, + "plugin": "AriaSalvatrice", + "model": "Darius", + "version": "2.0", + "params": [ + { + "value": 5.7326288223266602, + "id": 0 + }, + { + "value": 1.2162555456161499, + "id": 1 + }, + { + "value": 8.3106145858764648, + "id": 2 + }, + { + "value": 2.7549829483032227, + "id": 3 + }, + { + "value": 1.6300861835479736, + "id": 4 + }, + { + "value": 0.91675013303756714, + "id": 5 + }, + { + "value": 3.9831564426422119, + "id": 6 + }, + { + "value": 8.9421091079711914, + "id": 7 + }, + { + "value": 8.2793073654174805, + "id": 8 + }, + { + "value": 5.8733129501342773, + "id": 9 + }, + { + "value": 1.7882294654846191, + "id": 10 + }, + { + "value": 2.6813724040985107, + "id": 11 + }, + { + "value": 4.2679920196533203, + "id": 12 + }, + { + "value": 6.4848566055297852, + "id": 13 + }, + { + "value": 5.3372011184692383, + "id": 14 + }, + { + "value": 5.7527809143066406, + "id": 15 + }, + { + "value": 1.8975667953491211, + "id": 16 + }, + { + "value": 5.119206428527832, + "id": 17 + }, + { + "value": 7.4633817672729492, + "id": 18 + }, + { + "value": 7.3897285461425781, + "id": 19 + }, + { + "value": 0.11451608687639236, + "id": 20 + }, + { + "value": 6.0726122856140137, + "id": 21 + }, + { + "value": 1.6985502243041992, + "id": 22 + }, + { + "value": 7.9478974342346191, + "id": 23 + }, + { + "value": 9.0303964614868164, + "id": 24 + }, + { + "value": 6.8020820617675781, + "id": 25 + }, + { + "value": 4.086698055267334, + "id": 26 + }, + { + "value": 8.1851844787597656, + "id": 27 + }, + { + "value": 6.3494329452514648, + "id": 28 + }, + { + "value": 4.6584978103637695, + "id": 29 + }, + { + "value": 2.6089012622833252, + "id": 30 + }, + { + "value": 5.6259002685546875, + "id": 31 + }, + { + "value": 6.4349942207336426, + "id": 32 + }, + { + "value": 6.5766806602478027, + "id": 33 + }, + { + "value": 2.8860161304473877, + "id": 34 + }, + { + "value": 9.8916788101196289, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.5, + "id": 41 + }, + { + "value": 0.5, + "id": 42 + }, + { + "value": 0.5, + "id": 43 + }, + { + "value": 0.5, + "id": 44 + }, + { + "value": 0.5, + "id": 45 + }, + { + "value": 0.5, + "id": 46 + }, + { + "value": 0.5, + "id": 47 + }, + { + "value": 0.5, + "id": 48 + }, + { + "value": 0.5, + "id": 49 + }, + { + "value": 0.5, + "id": 50 + }, + { + "value": 0.5, + "id": 51 + }, + { + "value": 0.5, + "id": 52 + }, + { + "value": 0.5, + "id": 53 + }, + { + "value": 0.5, + "id": 54 + }, + { + "value": 0.5, + "id": 55 + }, + { + "value": 0.5, + "id": 56 + }, + { + "value": 0.5, + "id": 57 + }, + { + "value": 0.5, + "id": 58 + }, + { + "value": 0.5, + "id": 59 + }, + { + "value": 0.5, + "id": 60 + }, + { + "value": 0.5, + "id": 61 + }, + { + "value": 0.5, + "id": 62 + }, + { + "value": 0.5, + "id": 63 + }, + { + "value": 0.5, + "id": 64 + }, + { + "value": 0.5, + "id": 65 + }, + { + "value": 0.5, + "id": 66 + }, + { + "value": 0.5, + "id": 67 + }, + { + "value": 0.5, + "id": 68 + }, + { + "value": 0.5, + "id": 69 + }, + { + "value": 0.5, + "id": 70 + }, + { + "value": 0.5, + "id": 71 + }, + { + "value": 0.0, + "id": 72 + }, + { + "value": 1.0, + "id": 73 + }, + { + "value": 0.0, + "id": 74 + }, + { + "value": 8.0, + "id": 75 + }, + { + "value": 0.0, + "id": 76 + }, + { + "value": 0.0, + "id": 77 + }, + { + "value": 0.0, + "id": 78 + }, + { + "value": 0.0, + "id": 79 + }, + { + "value": 1.0, + "id": 80 + }, + { + "value": 3.0, + "id": 81 + }, + { + "value": 5.0, + "id": 82 + }, + { + "value": 0.0, + "id": 83 + }, + { + "value": 1.0, + "id": 84 + }, + { + "value": 0.0, + "id": 85 + }, + { + "value": 2.0, + "id": 86 + } + ], + "leftModuleId": 4881975851057372, + "rightModuleId": 1135374743729970, + "data": { + "step": 5, + "node": 20, + "lastNode": 20, + "lastGate": 20, + "pathTraveled": [ + 0, + 2, + 5, + 9, + 14, + 20, + -1, + -1 + ] + }, + "pos": [ + -8, + -1 + ] + }, + { + "id": 1135374743729970, + "plugin": "AriaSalvatrice", + "model": "Darius", + "version": "2.0", + "params": [ + { + "value": 5.7326288223266602, + "id": 0 + }, + { + "value": 1.2162555456161499, + "id": 1 + }, + { + "value": 8.3106145858764648, + "id": 2 + }, + { + "value": 2.7549829483032227, + "id": 3 + }, + { + "value": 1.6300861835479736, + "id": 4 + }, + { + "value": 0.91675013303756714, + "id": 5 + }, + { + "value": 3.9831564426422119, + "id": 6 + }, + { + "value": 8.9421091079711914, + "id": 7 + }, + { + "value": 8.2793073654174805, + "id": 8 + }, + { + "value": 5.8733129501342773, + "id": 9 + }, + { + "value": 1.7882294654846191, + "id": 10 + }, + { + "value": 2.6813724040985107, + "id": 11 + }, + { + "value": 4.2679920196533203, + "id": 12 + }, + { + "value": 6.4848566055297852, + "id": 13 + }, + { + "value": 5.3372011184692383, + "id": 14 + }, + { + "value": 5.7527809143066406, + "id": 15 + }, + { + "value": 1.8975667953491211, + "id": 16 + }, + { + "value": 5.119206428527832, + "id": 17 + }, + { + "value": 7.4633817672729492, + "id": 18 + }, + { + "value": 7.3897285461425781, + "id": 19 + }, + { + "value": 0.11451608687639236, + "id": 20 + }, + { + "value": 6.0726122856140137, + "id": 21 + }, + { + "value": 1.6985502243041992, + "id": 22 + }, + { + "value": 7.9478974342346191, + "id": 23 + }, + { + "value": 9.0303964614868164, + "id": 24 + }, + { + "value": 6.8020820617675781, + "id": 25 + }, + { + "value": 4.086698055267334, + "id": 26 + }, + { + "value": 8.1851844787597656, + "id": 27 + }, + { + "value": 6.3494329452514648, + "id": 28 + }, + { + "value": 4.6584978103637695, + "id": 29 + }, + { + "value": 2.6089012622833252, + "id": 30 + }, + { + "value": 5.6259002685546875, + "id": 31 + }, + { + "value": 6.4349942207336426, + "id": 32 + }, + { + "value": 6.5766806602478027, + "id": 33 + }, + { + "value": 2.8860161304473877, + "id": 34 + }, + { + "value": 9.8916788101196289, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.5, + "id": 41 + }, + { + "value": 0.5, + "id": 42 + }, + { + "value": 0.5, + "id": 43 + }, + { + "value": 0.5, + "id": 44 + }, + { + "value": 0.5, + "id": 45 + }, + { + "value": 0.5, + "id": 46 + }, + { + "value": 0.5, + "id": 47 + }, + { + "value": 0.5, + "id": 48 + }, + { + "value": 0.5, + "id": 49 + }, + { + "value": 0.5, + "id": 50 + }, + { + "value": 0.5, + "id": 51 + }, + { + "value": 0.5, + "id": 52 + }, + { + "value": 0.5, + "id": 53 + }, + { + "value": 0.5, + "id": 54 + }, + { + "value": 0.5, + "id": 55 + }, + { + "value": 0.5, + "id": 56 + }, + { + "value": 0.5, + "id": 57 + }, + { + "value": 0.5, + "id": 58 + }, + { + "value": 0.5, + "id": 59 + }, + { + "value": 0.5, + "id": 60 + }, + { + "value": 0.5, + "id": 61 + }, + { + "value": 0.5, + "id": 62 + }, + { + "value": 0.5, + "id": 63 + }, + { + "value": 0.5, + "id": 64 + }, + { + "value": 0.5, + "id": 65 + }, + { + "value": 0.5, + "id": 66 + }, + { + "value": 0.5, + "id": 67 + }, + { + "value": 0.5, + "id": 68 + }, + { + "value": 0.5, + "id": 69 + }, + { + "value": 0.5, + "id": 70 + }, + { + "value": 0.5, + "id": 71 + }, + { + "value": 0.0, + "id": 72 + }, + { + "value": 1.0, + "id": 73 + }, + { + "value": 0.0, + "id": 74 + }, + { + "value": 8.0, + "id": 75 + }, + { + "value": 0.0, + "id": 76 + }, + { + "value": 0.0, + "id": 77 + }, + { + "value": 0.0, + "id": 78 + }, + { + "value": 0.0, + "id": 79 + }, + { + "value": 1.0, + "id": 80 + }, + { + "value": 3.0, + "id": 81 + }, + { + "value": 5.0, + "id": 82 + }, + { + "value": 0.0, + "id": 83 + }, + { + "value": 1.0, + "id": 84 + }, + { + "value": 0.0, + "id": 85 + }, + { + "value": 2.0, + "id": 86 + } + ], + "leftModuleId": 4527978366762434, + "rightModuleId": 536482491730803, + "data": { + "step": 5, + "node": 15, + "lastNode": 15, + "lastGate": 15, + "pathTraveled": [ + 0, + 1, + 3, + 6, + 10, + 15, + -1, + -1 + ] + }, + "pos": [ + 24, + -1 + ] + }, + { + "id": 6485270196416882, + "plugin": "21kHz", + "model": "kHzPalmLoop", + "version": "2.0", + "params": [ + { + "value": 7.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + } + ], + "leftModuleId": 6529439116344665, + "rightModuleId": 5588781388402853, + "pos": [ + 38, + 0 + ] + }, + { + "id": 1170574363078075, + "plugin": "Bogaudio", + "model": "Bogaudio-Mix1", + "version": "2.0", + "params": [ + { + "value": 0.90909093618392944, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + } + ], + "leftModuleId": 5588781388402853, + "rightModuleId": 1242960631247273, + "data": { + "linear_cv": false + }, + "pos": [ + 49, + 0 + ] + }, + { + "id": 1242960631247273, + "plugin": "HetrickCV", + "model": "Waveshaper", + "version": "2.0", + "params": [ + { + "value": 1.8915570974349976, + "id": 0 + }, + { + "value": 1.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + } + ], + "leftModuleId": 1170574363078075, + "rightModuleId": 5268894183644161, + "pos": [ + 52, + 0 + ] + }, + { + "id": 998069146105942, + "plugin": "21kHz", + "model": "kHzPalmLoop", + "version": "2.0", + "params": [ + { + "value": 9.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + } + ], + "leftModuleId": 438885941898769, + "rightModuleId": 2278749660885397, + "pos": [ + 24, + 0 + ] + }, + { + "id": 6529439116344665, + "plugin": "Bogaudio", + "model": "Bogaudio-Mix1", + "version": "2.0", + "params": [ + { + "value": 0.90909093618392944, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + } + ], + "leftModuleId": 2278749660885397, + "rightModuleId": 6485270196416882, + "data": { + "linear_cv": false + }, + "pos": [ + 35, + 0 + ] + }, + { + "id": 6814437816954201, + "plugin": "21kHz", + "model": "kHzPalmLoop", + "version": "2.0", + "params": [ + { + "value": 10.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.0, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + } + ], + "leftModuleId": 3745062635142253, + "rightModuleId": 1305145125414192, + "pos": [ + 7, + 0 + ] + }, + { + "id": 438885941898769, + "plugin": "Bogaudio", + "model": "Bogaudio-Mix1", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + } + ], + "leftModuleId": 7382001000905062, + "rightModuleId": 998069146105942, + "data": { + "linear_cv": false + }, + "pos": [ + 21, + 0 + ] + }, + { + "id": 1305145125414192, + "plugin": "Bogaudio", + "model": "Bogaudio-Mix1", + "version": "2.0", + "params": [ + { + "value": 0.57800096273422241, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + } + ], + "leftModuleId": 6814437816954201, + "rightModuleId": 7382001000905062, + "data": { + "linear_cv": false + }, + "pos": [ + 15, + 0 + ] + }, + { + "id": 5268894183644161, + "plugin": "MSM", + "model": "DualDelay", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + }, + { + "value": 1.0, + "id": 1 + }, + { + "value": 0.67479997873306274, + "id": 2 + }, + { + "value": 0.67479997873306274, + "id": 3 + }, + { + "value": 0.17179480195045471, + "id": 4 + }, + { + "value": 0.42564103007316589, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 1.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.78974288702011108, + "id": 10 + }, + { + "value": 1.0, + "id": 11 + }, + { + "value": 0.44102579355239868, + "id": 12 + }, + { + "value": 0.33333185315132141, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + } + ], + "leftModuleId": 1242960631247273, + "rightModuleId": 4215581185125803, + "data": { + "Theme": 1, + "DISPLAYA": 1, + "DISPLAYB": 1 + }, + "pos": [ + 58, + 0 + ] + }, + { + "id": 4215581185125803, + "plugin": "mscHack", + "model": "Mix_4_0_4", + "version": "2.0", + "params": [ + { + "value": 0.5, + "id": 0 + }, + { + "value": 1.0, + "id": 1 + }, + { + "value": 0.52800261974334717, + "id": 2 + }, + { + "value": 0.87599974870681763, + "id": 3 + }, + { + "value": 1.0, + "id": 4 + }, + { + "value": 0.85999959707260132, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": -0.26987946033477783, + "id": 9 + }, + { + "value": -0.09156624972820282, + "id": 10 + }, + { + "value": 0.3975902795791626, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.5, + "id": 17 + }, + { + "value": 0.5, + "id": 18 + }, + { + "value": 0.5, + "id": 19 + }, + { + "value": 0.5, + "id": 20 + }, + { + "value": 0.5, + "id": 21 + }, + { + "value": 0.5, + "id": 22 + }, + { + "value": 0.5, + "id": 23 + }, + { + "value": 0.5, + "id": 24 + }, + { + "value": 0.5, + "id": 25 + }, + { + "value": 0.5, + "id": 26 + }, + { + "value": 0.5, + "id": 27 + }, + { + "value": 0.5, + "id": 28 + }, + { + "value": 0.5, + "id": 29 + }, + { + "value": 0.5, + "id": 30 + }, + { + "value": 0.5, + "id": 31 + }, + { + "value": 0.5, + "id": 32 + }, + { + "value": 0.5, + "id": 33 + }, + { + "value": 0.5, + "id": 34 + }, + { + "value": 0.5, + "id": 35 + }, + { + "value": 0.5, + "id": 36 + }, + { + "value": 0.5, + "id": 37 + }, + { + "value": 0.5, + "id": 38 + }, + { + "value": 0.5, + "id": 39 + }, + { + "value": 0.5, + "id": 40 + }, + { + "value": 0.62168782949447632, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.36024099588394165, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + }, + { + "value": 0.26265072822570801, + "id": 49 + }, + { + "value": 0.73252993822097778, + "id": 50 + }, + { + "value": 0.0, + "id": 51 + }, + { + "value": 0.0, + "id": 52 + }, + { + "value": 0.0, + "id": 53 + }, + { + "value": 0.0, + "id": 54 + }, + { + "value": 0.0, + "id": 55 + }, + { + "value": 0.0, + "id": 56 + }, + { + "value": 1.0, + "id": 57 + }, + { + "value": 1.0, + "id": 58 + }, + { + "value": 0.0, + "id": 59 + }, + { + "value": 0.0, + "id": 60 + } + ], + "leftModuleId": 5268894183644161, + "rightModuleId": 3607506233121471, + "data": { + "m_bMuteStates": [ + false, + false, + false, + false, + false, + false, + false, + false + ], + "m_bSoloStates": [ + false, + false, + false, + false, + false, + false, + false, + false + ], + "m_bGroupPreMute": [ + true + ], + "m_bGainLevelx2": [ + false + ], + "m_bPreFader": [ + false, + false, + false, + false + ], + "m_bAuxIgnoreSolo": [ + false + ] + }, + "pos": [ + 83, + 0 + ] + }, + { + "id": 7443709671562104, + "plugin": "ParableInstruments", + "model": "Neil", + "version": "2.0", + "params": [ + { + "value": 0.5, + "id": 0 + }, + { + "value": 0.79277026653289795, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.71927660703659058, + "id": 3 + }, + { + "value": 0.70240950584411621, + "id": 4 + }, + { + "value": 0.73011982440948486, + "id": 5 + }, + { + "value": 0.67951756715774536, + "id": 6 + }, + { + "value": 0.76023942232131958, + "id": 7 + }, + { + "value": 0.69036132097244263, + "id": 8 + }, + { + "value": 0.76987874507904053, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + } + ], + "leftModuleId": 536482491730803, + "data": { + "playbackmode": 0, + "lofi": false, + "mono": false, + "freeze": false, + "buffersize": 1, + "reverse": 0 + }, + "pos": [ + 68, + -1 + ] + }, + { + "id": 536482491730803, + "plugin": "Valley", + "model": "Plateau", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + }, + { + "value": 0.5, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 10.0, + "id": 3 + }, + { + "value": 10.0, + "id": 4 + }, + { + "value": 0.5, + "id": 5 + }, + { + "value": 10.0, + "id": 6 + }, + { + "value": 0.5499500036239624, + "id": 7 + }, + { + "value": 10.0, + "id": 8 + }, + { + "value": 10.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.5, + "id": 11 + }, + { + "value": 0.5, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 1.0, + "id": 30 + } + ], + "leftModuleId": 1135374743729970, + "rightModuleId": 7443709671562104, + "data": { + "frozen": false, + "freezeToggle": false, + "panelStyle": 0, + "tuned": 0, + "diffuseInput": 1, + "preDelayCVSens": 0, + "inputSensitivity": 0, + "outputSaturation": 0 + }, + "pos": [ + 56, + -1 + ] + }, + { + "id": 3607506233121471, + "plugin": "Cardinal", + "model": "HostAudio2", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + } + ], + "leftModuleId": 4215581185125803, + "data": { + "dcFilter": true + }, + "pos": [ + 103, + 0 + ] + } + ], + "cables": [ + { + "id": 2235176226196319, + "outputModuleId": 6814437816954201, + "outputId": 4, + "inputModuleId": 438885941898769, + "inputId": 2, + "color": "#67ff52" + }, + { + "id": 6022726504005218, + "outputModuleId": 998069146105942, + "outputId": 4, + "inputModuleId": 6529439116344665, + "inputId": 2, + "color": "#52ffbe" + }, + { + "id": 3282586688299790, + "outputModuleId": 7382001000905062, + "outputId": 0, + "inputModuleId": 438885941898769, + "inputId": 1, + "color": "#527dff" + }, + { + "id": 6658465679677949, + "outputModuleId": 2278749660885397, + "outputId": 0, + "inputModuleId": 6529439116344665, + "inputId": 1, + "color": "#6752ff" + }, + { + "id": 2742306951867261, + "outputModuleId": 5588781388402853, + "outputId": 0, + "inputModuleId": 1170574363078075, + "inputId": 1, + "color": "#a852ff" + }, + { + "id": 260784296137933, + "outputModuleId": 3745062635142253, + "outputId": 0, + "inputModuleId": 4215581185125803, + "inputId": 0, + "color": "#ff52d4" + }, + { + "id": 8073968937380858, + "outputModuleId": 6529439116344665, + "outputId": 0, + "inputModuleId": 4215581185125803, + "inputId": 2, + "color": "#ff5252" + }, + { + "id": 3164897786370058, + "outputModuleId": 8554745767661414, + "outputId": 2, + "inputModuleId": 3745062635142253, + "inputId": 2, + "color": "#ffd452" + }, + { + "id": 8903424001873344, + "outputModuleId": 413123163252880, + "outputId": 0, + "inputModuleId": 3745062635142253, + "inputId": 1, + "color": "#e8ff52" + }, + { + "id": 8456086847803564, + "outputModuleId": 2159047972516498, + "outputId": 1, + "inputModuleId": 3830846223236507, + "inputId": 0, + "color": "#a8ff52" + }, + { + "id": 4912535622605668, + "outputModuleId": 2159047972516498, + "outputId": 3, + "inputModuleId": 3830846223236507, + "inputId": 1, + "color": "#67ff52" + }, + { + "id": 508391464997356, + "outputModuleId": 3830846223236507, + "outputId": 0, + "inputModuleId": 413123163252880, + "inputId": 0, + "color": "#52ff7d" + }, + { + "id": 1773904448289839, + "outputModuleId": 3830846223236507, + "outputId": 3, + "inputModuleId": 7382001000905062, + "inputId": 0, + "color": "#52ffbe" + }, + { + "id": 5936597655473796, + "outputModuleId": 3830846223236507, + "outputId": 1, + "inputModuleId": 2278749660885397, + "inputId": 0, + "color": "#52ffff" + }, + { + "id": 2986652811528886, + "outputModuleId": 3830846223236507, + "outputId": 4, + "inputModuleId": 5588781388402853, + "inputId": 0, + "color": "#52beff" + }, + { + "id": 3444562726806638, + "outputModuleId": 3830846223236507, + "outputId": 5, + "inputModuleId": 5622494419825952, + "inputId": 2, + "color": "#ff5252" + }, + { + "id": 4728276395722392, + "outputModuleId": 3830846223236507, + "outputId": 2, + "inputModuleId": 5622494419825952, + "inputId": 4, + "color": "#ff9352" + }, + { + "id": 5814666200616619, + "outputModuleId": 5622494419825952, + "outputId": 36, + "inputModuleId": 8554745767661414, + "inputId": 1, + "color": "#e8ff52" + }, + { + "id": 5198037635643296, + "outputModuleId": 4881975851057372, + "outputId": 36, + "inputModuleId": 6814437816954201, + "inputId": 1, + "color": "#a8ff52" + }, + { + "id": 3006457239741485, + "outputModuleId": 5622494419825952, + "outputId": 37, + "inputModuleId": 4881975851057372, + "inputId": 2, + "color": "#52ff7d" + }, + { + "id": 2900816546241214, + "outputModuleId": 4881975851057372, + "outputId": 37, + "inputModuleId": 4527978366762434, + "inputId": 5, + "color": "#52ffbe" + }, + { + "id": 1814122622676943, + "outputModuleId": 4527978366762434, + "outputId": 36, + "inputModuleId": 998069146105942, + "inputId": 1, + "color": "#52beff" + }, + { + "id": 7381289574248263, + "outputModuleId": 1135374743729970, + "outputId": 36, + "inputModuleId": 6485270196416882, + "inputId": 1, + "color": "#6752ff" + }, + { + "id": 598155439618034, + "outputModuleId": 4527978366762434, + "outputId": 37, + "inputModuleId": 1135374743729970, + "inputId": 4, + "color": "#527dff" + }, + { + "id": 8997323665207629, + "outputModuleId": 536482491730803, + "outputId": 0, + "inputModuleId": 4215581185125803, + "inputId": 4, + "color": "#a852ff" + }, + { + "id": 3377121478525888, + "outputModuleId": 536482491730803, + "outputId": 1, + "inputModuleId": 4215581185125803, + "inputId": 12, + "color": "#e952ff" + }, + { + "id": 720617013682500, + "outputModuleId": 4215581185125803, + "outputId": 2, + "inputModuleId": 536482491730803, + "inputId": 0, + "color": "#ff52d4" + }, + { + "id": 3316867042879380, + "outputModuleId": 4215581185125803, + "outputId": 6, + "inputModuleId": 536482491730803, + "inputId": 1, + "color": "#ff5293" + }, + { + "id": 2126524991939052, + "outputModuleId": 6485270196416882, + "outputId": 2, + "inputModuleId": 1170574363078075, + "inputId": 2, + "color": "#ff9352" + }, + { + "id": 4077562280107778, + "outputModuleId": 1170574363078075, + "outputId": 0, + "inputModuleId": 1242960631247273, + "inputId": 0, + "color": "#ff9352" + }, + { + "id": 967178590970467, + "outputModuleId": 1242960631247273, + "outputId": 0, + "inputModuleId": 4215581185125803, + "inputId": 3, + "color": "#ffd452" + }, + { + "id": 419411845513826, + "outputModuleId": 4757927610032130, + "outputId": 0, + "inputModuleId": 4881975851057372, + "inputId": 7, + "color": "#a8ff52" + }, + { + "id": 2086354676419812, + "outputModuleId": 4757927610032130, + "outputId": 1, + "inputModuleId": 5622494419825952, + "inputId": 7, + "color": "#67ff52" + }, + { + "id": 6431589749239545, + "outputModuleId": 4757927610032130, + "outputId": 2, + "inputModuleId": 4527978366762434, + "inputId": 7, + "color": "#52ff7d" + }, + { + "id": 6968529858264893, + "outputModuleId": 4757927610032130, + "outputId": 3, + "inputModuleId": 1135374743729970, + "inputId": 7, + "color": "#52ffff" + }, + { + "id": 358980672133044, + "outputModuleId": 6766853921521776, + "outputId": 4, + "inputModuleId": 4757927610032130, + "inputId": 0, + "color": "#52beff" + }, + { + "id": 4384870734125312, + "outputModuleId": 6766853921521776, + "outputId": 4, + "inputModuleId": 4757927610032130, + "inputId": 1, + "color": "#527dff" + }, + { + "id": 7927603523615369, + "outputModuleId": 2159047972516498, + "outputId": 4, + "inputModuleId": 4187213689217722, + "inputId": 0, + "color": "#6752ff" + }, + { + "id": 6264497310562033, + "outputModuleId": 4187213689217722, + "outputId": 0, + "inputModuleId": 5622494419825952, + "inputId": 1, + "color": "#a852ff" + }, + { + "id": 5273879209094797, + "outputModuleId": 2159047972516498, + "outputId": 5, + "inputModuleId": 4187213689217722, + "inputId": 1, + "color": "#e952ff" + }, + { + "id": 2924798029829532, + "outputModuleId": 4187213689217722, + "outputId": 3, + "inputModuleId": 5622494419825952, + "inputId": 0, + "color": "#ff52d4" + }, + { + "id": 2033863350666172, + "outputModuleId": 4187213689217722, + "outputId": 4, + "inputModuleId": 4881975851057372, + "inputId": 0, + "color": "#ff5293" + }, + { + "id": 6716861340476980, + "outputModuleId": 4187213689217722, + "outputId": 5, + "inputModuleId": 4527978366762434, + "inputId": 0, + "color": "#ff5252" + }, + { + "id": 778360371637121, + "outputModuleId": 4187213689217722, + "outputId": 1, + "inputModuleId": 4881975851057372, + "inputId": 1, + "color": "#ff9352" + }, + { + "id": 3292377129970689, + "outputModuleId": 4187213689217722, + "outputId": 2, + "inputModuleId": 4527978366762434, + "inputId": 1, + "color": "#ffd452" + }, + { + "id": 4028939327390985, + "outputModuleId": 4215581185125803, + "outputId": 0, + "inputModuleId": 3607506233121471, + "inputId": 0, + "color": "#52ffff" + }, + { + "id": 8533240176029344, + "outputModuleId": 4215581185125803, + "outputId": 1, + "inputModuleId": 3607506233121471, + "inputId": 1, + "color": "#52beff" + }, + { + "id": 3832893590411641, + "outputModuleId": 4215581185125803, + "outputId": 3, + "inputModuleId": 7443709671562104, + "inputId": 9, + "color": "#527dff" + }, + { + "id": 4156137178982159, + "outputModuleId": 4215581185125803, + "outputId": 7, + "inputModuleId": 7443709671562104, + "inputId": 10, + "color": "#6752ff" + }, + { + "id": 3760373211330506, + "outputModuleId": 7443709671562104, + "outputId": 0, + "inputModuleId": 4215581185125803, + "inputId": 5, + "color": "#a852ff" + }, + { + "id": 4144293620724594, + "outputModuleId": 7443709671562104, + "outputId": 1, + "inputModuleId": 4215581185125803, + "inputId": 13, + "color": "#e952ff" + }, + { + "id": 363654023698591, + "outputModuleId": 438885941898769, + "outputId": 0, + "inputModuleId": 5268894183644161, + "inputId": 11, + "color": "#ff5293" + }, + { + "id": 4533367996164427, + "outputModuleId": 5268894183644161, + "outputId": 0, + "inputModuleId": 4215581185125803, + "inputId": 1, + "color": "#ff5293" + }, + { + "id": 6442029154232978, + "outputModuleId": 5268894183644161, + "outputId": 1, + "inputModuleId": 4215581185125803, + "inputId": 9, + "color": "#ff5252" + }, + { + "id": 2094602820170491, + "outputModuleId": 6814437816954201, + "outputId": 0, + "inputModuleId": 1305145125414192, + "inputId": 2, + "color": "#ffd452" + }, + { + "id": 1047657886668571, + "outputModuleId": 1305145125414192, + "outputId": 0, + "inputModuleId": 5268894183644161, + "inputId": 12, + "color": "#ff9352" + }, + { + "id": 5230685126204162, + "outputModuleId": 3830846223236507, + "outputId": 2, + "inputModuleId": 5268894183644161, + "inputId": 0, + "color": "#a8ff52" + }, + { + "id": 5327685443477545, + "outputModuleId": 4187213689217722, + "outputId": 0, + "inputModuleId": 1135374743729970, + "inputId": 1, + "color": "#67ff52" + }, + { + "id": 8669074006312217, + "outputModuleId": 4187213689217722, + "outputId": 3, + "inputModuleId": 1135374743729970, + "inputId": 0, + "color": "#52ff7d" + } + ] +} From 0d1d1a257a3d3974220b19f139131a00d62e607e Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 4 Jan 2026 18:49:10 +0100 Subject: [PATCH 19/33] Update to latest dpf and carla Signed-off-by: falkTX --- carla | 2 +- dpf | 2 +- src/CardinalPluginContext.hpp | 4 ++-- src/CardinalUI.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/carla b/carla index 1d8dcb5..011867b 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 1d8dcb5aab5e0c30352e9f928ce3e40cbc86a439 +Subproject commit 011867b6bcd592a510b4ec157c032fcdac23d6ef diff --git a/dpf b/dpf index 04eb914..d4c2ce6 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 04eb91490c70a0c3f524e473087e263d8a9d550f +Subproject commit d4c2ce6e3da43ae328876146b60d2d2cca5caa44 diff --git a/src/CardinalPluginContext.hpp b/src/CardinalPluginContext.hpp index 8c2f02b..fac6819 100644 --- a/src/CardinalPluginContext.hpp +++ b/src/CardinalPluginContext.hpp @@ -155,8 +155,8 @@ public: std::function filebrowseraction; FileBrowserHandle filebrowserhandle; - CardinalBaseUI(const uint width, const uint height) - : UI(width, height), + CardinalBaseUI() + : UI(), #if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS context(getRackContextFromPlugin(getPluginInstancePointer())), #else diff --git a/src/CardinalUI.cpp b/src/CardinalUI.cpp index 3402e85..06d3267 100644 --- a/src/CardinalUI.cpp +++ b/src/CardinalUI.cpp @@ -339,7 +339,7 @@ class CardinalUI : public CardinalBaseUI, public: CardinalUI() - : CardinalBaseUI(DISTRHO_UI_DEFAULT_WIDTH, DISTRHO_UI_DEFAULT_HEIGHT), + : CardinalBaseUI(), #if ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS #ifdef DISTRHO_OS_WASM fInitializer(new Initializer(static_cast(nullptr), this)), From 89ec36021eebf84d9b010fe6bcb7cb8fa363ec54 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 4 Jan 2026 18:50:54 +0100 Subject: [PATCH 20/33] Bump version to 26.01 Signed-off-by: falkTX --- .github/ISSUE_TEMPLATE/bug.yaml | 2 +- Makefile | 2 +- src/CardinalCommon.cpp | 4 ++-- src/CardinalPlugin.cpp | 4 ++-- src/CardinalPluginContext.hpp | 2 +- src/CardinalUI.cpp | 2 +- utils/macOS/Info_JACK.plist | 4 ++-- utils/macOS/Info_Native.plist | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index d065fb3..fa9be91 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.12" + value: "26.01" validations: required: true - type: dropdown diff --git a/Makefile b/Makefile index 28ac96c..4965e2c 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.12 +VERSION = 26.01 # --------------------------------------------------------------------------------------------------------------------- # Build targets diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index 5fa78a9..8891301 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2025 Filipe Coelho + * Copyright (C) 2021-2026 Filipe Coelho * SPDX-License-Identifier: GPL-3.0-or-later */ @@ -99,7 +99,7 @@ void destroyStaticPlugins(); } } -const std::string CARDINAL_VERSION = "25.12"; +const std::string CARDINAL_VERSION = "26.01"; // ----------------------------------------------------------------------------------------------------------- diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index 2b39c60..3c01605 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2025 Filipe Coelho + * Copyright (C) 2021-2026 Filipe Coelho * SPDX-License-Identifier: GPL-3.0-or-later */ @@ -414,7 +414,7 @@ protected: uint32_t getVersion() const override { - return d_version(0, 25, 12); + return d_version(0, 26, 1); } int64_t getUniqueId() const override diff --git a/src/CardinalPluginContext.hpp b/src/CardinalPluginContext.hpp index fac6819..e379b22 100644 --- a/src/CardinalPluginContext.hpp +++ b/src/CardinalPluginContext.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2022 Filipe Coelho + * Copyright (C) 2021-2026 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 diff --git a/src/CardinalUI.cpp b/src/CardinalUI.cpp index 06d3267..278e36a 100644 --- a/src/CardinalUI.cpp +++ b/src/CardinalUI.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2024 Filipe Coelho + * Copyright (C) 2021-2026 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 diff --git a/utils/macOS/Info_JACK.plist b/utils/macOS/Info_JACK.plist index b5f832a..0cc3a16 100644 --- a/utils/macOS/Info_JACK.plist +++ b/utils/macOS/Info_JACK.plist @@ -11,11 +11,11 @@ CFBundleIdentifier studio.kx.distrho.cardinal.jack CFBundleShortVersionString - 25.12 + 26.01 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright - (C) 2011-2025 Filipe Coelho. + (C) 2011-2026 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 f7ac992..b2482ab 100644 --- a/utils/macOS/Info_Native.plist +++ b/utils/macOS/Info_Native.plist @@ -11,11 +11,11 @@ CFBundleIdentifier studio.kx.distrho.cardinal.native CFBundleShortVersionString - 25.12 + 26.01 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright - (C) 2011-2025 Filipe Coelho. + (C) 2011-2026 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 959356fe137b6f6c66c2fa2ba2063e19a1e89c0a Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 9 Jan 2026 18:10:52 +0100 Subject: [PATCH 21/33] Add BPM output to host time module Signed-off-by: falkTX --- plugins/Cardinal/src/HostTime.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/Cardinal/src/HostTime.cpp b/plugins/Cardinal/src/HostTime.cpp index f6c2f9d..3c981d7 100644 --- a/plugins/Cardinal/src/HostTime.cpp +++ b/plugins/Cardinal/src/HostTime.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2024 Filipe Coelho + * Copyright (C) 2021-2026 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 @@ -37,6 +37,7 @@ struct HostTime : TerminalModule { kHostTimeClock, kHostTimeBarPhase, kHostTimeBeatPhase, + kHostTimeBPM, kHostTimeCount }; @@ -160,7 +161,7 @@ struct HostTime : TerminalModule { ? ((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); @@ -176,6 +177,7 @@ struct HostTime : TerminalModule { outputs[kHostTimeClock].setVoltage(hasClock ? 10.0f : 0.0f); outputs[kHostTimeBarPhase].setVoltage(barPhase * 10.0f); outputs[kHostTimeBeatPhase].setVoltage(beatPhase * 10.0f); + outputs[kHostTimeBPM].setVoltage(playingWithBBT ? std::log2(pcontext->beatsPerMinute / 120.0) : 0.0); } void processTerminalOutput(const ProcessArgs&) override @@ -224,6 +226,7 @@ struct HostTimeWidget : ModuleWidgetWith8HP { addOutput(createOutput(Vec(startX, startY_cv + 4 * padding), m, HostTime::kHostTimeClock)); addOutput(createOutput(Vec(startX, startY_cv + 5 * padding), m, HostTime::kHostTimeBarPhase)); addOutput(createOutput(Vec(startX, startY_cv + 6 * padding), m, HostTime::kHostTimeBeatPhase)); + addOutput(createOutput(Vec(startX, startY_cv + 7 * padding), m, HostTime::kHostTimeBPM)); const float x = startX + 28; addChild(createLightCentered> (Vec(x, startY_cv + 0 * padding + 12), m, HostTime::kHostTimeRolling)); @@ -263,6 +266,7 @@ struct HostTimeWidget : ModuleWidgetWith8HP { nvgFontSize(args.vg, 11); drawOutputLine(args.vg, 5, "Bar Phase"); drawOutputLine(args.vg, 6, "Beat Phase"); + drawOutputLine(args.vg, 7, "BPM"); nvgBeginPath(args.vg); nvgRoundedRect(args.vg, startX - 1.0f, startY_top, 98.0f, 38.0f, 4); // 98 From f987e09342b568bc59551401cf7909cde3ef75ce Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 21 Jan 2026 21:28:28 +0100 Subject: [PATCH 22/33] Document HostTime outputs Signed-off-by: falkTX --- docs/CARDINAL-MODULES.md | 11 +++++++++++ docs/Module_HostTime.png | Bin 78571 -> 75954 bytes 2 files changed, 11 insertions(+) diff --git a/docs/CARDINAL-MODULES.md b/docs/CARDINAL-MODULES.md index 26124c6..cfc231e 100644 --- a/docs/CARDINAL-MODULES.md +++ b/docs/CARDINAL-MODULES.md @@ -185,6 +185,17 @@ Unlike Rack, Cardinal does not use PPQN (pulses per quarter note) values, but BB The top of the panel has a timer display to help understand how and what the host is doing. The first line is the song time in seconds, and second line is the BBT. +The meaning of the outputs is: + +- Playing: On if the host transport is rolling or Off if paused/stopped +- Reset: Trigger for when the host transport has been relocated or has been restarted +- Bar: Trigger for bar change +- Beat: Trigger for beat change +- Step: Trigger for step change +- Bar Phase: 0-10v smooth ramp for the bar position (with bar division being a right-click option) +- Beat Phase: 0-10v smooth ramp for the beat position +- BPM: Volts per Beat per Second, as supported by Impromptu Clocked/Clkd and ZZC Clock + ## Extra modules ### Blank diff --git a/docs/Module_HostTime.png b/docs/Module_HostTime.png index d58dff98524ccc02d14990e70869997724f3adb0..b79d396466893ef764ae84aa53be74936223e4a3 100644 GIT binary patch literal 75954 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

~hu)QLNFBlvg-yN^Hx;YW5& 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 z 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 Date: Wed, 21 Jan 2026 22:25:33 +0100 Subject: [PATCH 23/33] Update dpf and pawpaw, rebuild CI cache Signed-off-by: falkTX --- .github/workflows/build.yml | 2 +- deps/PawPaw | 2 +- dpf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 455397b..c1dd648 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,7 @@ name: build on: [push, pull_request] env: - CACHE_VERSION: 14 + CACHE_VERSION: 15 CARDINAL_UNDER_WINE: 1 CIBUILD: true DEBIAN_FRONTEND: noninteractive diff --git a/deps/PawPaw b/deps/PawPaw index f6eaed1..dd0fd45 160000 --- a/deps/PawPaw +++ b/deps/PawPaw @@ -1 +1 @@ -Subproject commit f6eaed13bdeccec013d81ba2261f98aa8f452702 +Subproject commit dd0fd459be75110d76b633e606a1a1dbc607b2ab diff --git a/dpf b/dpf index d4c2ce6..4e235c9 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit d4c2ce6e3da43ae328876146b60d2d2cca5caa44 +Subproject commit 4e235c9134bb049c1c02230a3b8d9d7f794b4d45 From abfe8a4099b27b03429863219181bb044787bfe6 Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 22 Jan 2026 10:21:56 +0100 Subject: [PATCH 24/33] Fix local wasm build Signed-off-by: falkTX --- dpf | 2 +- plugins/Makefile | 2 +- src/Makefile.cardinal.mk | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/dpf b/dpf index 4e235c9..d38701a 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 4e235c9134bb049c1c02230a3b8d9d7f794b4d45 +Subproject commit d38701abff789f44f2f483a6360416a9adbcc8f9 diff --git a/plugins/Makefile b/plugins/Makefile index 3560229..68c1558 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -1846,7 +1846,7 @@ LV2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalFX.lv2/resources/PluginManifests LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/Cardinal.lv2/resources/%) LV2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.lv2/resources/%) -# MOD builds only have LV2 FX variant for now +# wasm builds only have standalone and mini else ifeq ($(WASM),true) MINI_RESOURCES = $(MINIPLUGIN_LIST:%=../bin/CardinalMini.lv2/resources/PluginManifests/%.json) diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 731dc36..772f139 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -291,7 +291,9 @@ endif ifeq ($(WASM),true) +ifneq ($(DEBUG),true) LINK_FLAGS += -O3 +endif LINK_FLAGS += -sALLOW_MEMORY_GROWTH LINK_FLAGS += -sINITIAL_MEMORY=64Mb LINK_FLAGS += -sLZ4=1 @@ -334,7 +336,12 @@ 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 + +ifeq ($(CARDINAL_VARIANT),mini) +LINK_FLAGS += $(foreach d,$(SYMLINKED_DIRS_RESOURCES),--preload-file=../../bin/CardinalMini.lv2/resources/$(d)@/resources/$(d)) +else LINK_FLAGS += $(foreach d,$(SYMLINKED_DIRS_RESOURCES),--preload-file=../../bin/CardinalNative.lv2/resources/$(d)@/resources/$(d)) +endif else ifeq ($(HAIKU),true) From aa01fd55f9a549c3cb38afebe69c1289c82d0fd2 Mon Sep 17 00:00:00 2001 From: rl2939 <60378449+rl2939@users.noreply.github.com> Date: Sun, 25 Jan 2026 04:02:17 -0500 Subject: [PATCH 25/33] Update Venom. (#894) --- plugins/Venom | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Venom b/plugins/Venom index ba95ede..bb30fd6 160000 --- a/plugins/Venom +++ b/plugins/Venom @@ -1 +1 @@ -Subproject commit ba95ede2370d340e0f7143dd897ff7e089bda336 +Subproject commit bb30fd61100856214c1def3431f4ce2df70102c2 From 8849392828ee21f2d67231f3b202bc343247f218 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 25 Jan 2026 11:43:11 +0100 Subject: [PATCH 26/33] Fix regression starting wasm build Signed-off-by: falkTX --- src/CardinalCommon.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index 8891301..c87cc79 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.cpp @@ -630,12 +630,14 @@ Initializer::Initializer(const CardinalBasePlugin* const plugin, const CardinalB if (isRealInstance) { - system::createDirectory(asset::userDir); #if defined(DISTRHO_OS_WASM) && !defined(CARDINAL_COMMON_UI_ONLY) EM_ASM({ + Module.FS.mkdir('/userfiles'); Module.FS.mount(Module.IDBFS, {}, '/userfiles'); Module.FS.syncfs(true, function(err) { if (!err) { dynCall('vi', $0, [$1]) } }); }, WebBrowserDataLoaded, this); + #else + system::createDirectory(asset::userDir); #endif } } From aecdb062f8b437031af95635aebb3d25362a0da2 Mon Sep 17 00:00:00 2001 From: Christopher Arndt Date: Mon, 26 Jan 2026 22:27:46 +0100 Subject: [PATCH 27/33] feat: add example patch 'Cringe Synth' built around Surge XT Twist oscillator Signed-off-by: Christopher Arndt --- .../examples/SpotlightKid_-_Cringe-Synth.vcv | 2114 +++++++++++++++++ 1 file changed, 2114 insertions(+) create mode 100644 patches/examples/SpotlightKid_-_Cringe-Synth.vcv diff --git a/patches/examples/SpotlightKid_-_Cringe-Synth.vcv b/patches/examples/SpotlightKid_-_Cringe-Synth.vcv new file mode 100644 index 0000000..fa5a0d6 --- /dev/null +++ b/patches/examples/SpotlightKid_-_Cringe-Synth.vcv @@ -0,0 +1,2114 @@ +{ + "version": "2.4.1", + "path": "SpotlightKid_-_Cringe-Synth.vcv", + "zoom": 1.0, + "gridOffset": [ + 2.798046827316284, + -0.03702713921666145 + ], + "modules": [ + { + "id": 2799203590388841, + "plugin": "Cardinal", + "model": "TextEditor", + "version": "2.0", + "params": [], + "leftModuleId": 7835847246020659, + "data": { + "filepath": "", + "lang": "None", + "etext": "# Cringe - A polyphonic macro-ocillator Synth\n\n(inspired by \"Arturia Minifreak\" and\n\"Behringer Grind\")\n\n* Surge XT Twist macro oscillator\n (based on \"Mutable Instruments Plaits\")\n* Macro oscillator into Surge XT filter,\n into Surge XT EG/VCA\n* Chorus, delay and reverb\n* Notes can be triggered via MIDI.\n* Modwheel controls vibrato.\n* MIDI CCs are mapped to the most important\n parameters:\n \n * Oszillator params 1-4\n * Filter cutoff, resonance, drive, env amount\n * Envelope attack, decay, sustain, release\n\n\n\n\n", + "width": 27 + }, + "pos": [ + 76, + 0 + ] + }, + { + "id": 6686738058731514, + "plugin": "SurgeXTRack", + "model": "SurgeXTQuadLFO", + "version": "2.0", + "params": [ + { + "value": 0.5813294649124146, + "id": 0 + }, + { + "value": 0.38461539149284363, + "id": 1 + }, + { + "value": 0.38461539149284363, + "id": 2 + }, + { + "value": 0.38461539149284363, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 1.0, + "id": 12 + }, + { + "value": 1.0, + "id": 13 + }, + { + "value": 1.0, + "id": 14 + }, + { + "value": 1.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + } + ], + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "clockStyle": 0, + "forcePolyphony": -1 + } + }, + "pos": [ + 40, + 1 + ] + }, + { + "id": 2284558036713263, + "plugin": "Befaco", + "model": "Atte", + "version": "2.0", + "params": [ + { + "value": 1.2077964584022993e-7, + "id": 0 + }, + { + "value": 0.5275605320930481, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 1.0, + "id": 3 + }, + { + "value": 1.0, + "id": 4 + }, + { + "value": 1.0, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 1.0, + "id": 7 + } + ], + "data": { + "normalledVoltageIdx": 2 + }, + "pos": [ + 28, + 1 + ] + }, + { + "id": 3851544056860100, + "plugin": "SurgeXTRack", + "model": "SurgeXTOSCTwist", + "version": "2.0", + "params": [ + { + "value": -2.0, + "id": 0 + }, + { + "value": 0.004999999888241291, + "id": 1 + }, + { + "value": 0.7480300068855286, + "id": 2 + }, + { + "value": 0.28346529603004456, + "id": 3 + }, + { + "value": 0.7244109511375427, + "id": 4 + }, + { + "value": 1.1943727429297724e-7, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 0.693000078201294, + "id": 7 + }, + { + "value": 0.012000009417533875, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 1.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 1.0, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 1.0, + "id": 50 + } + ], + "rightModuleId": 8399478428125930, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "paramNatural": [ + { + "index": 0, + "valtype": 0, + "val_i": 0 + }, + { + "index": 1, + "valtype": 2, + "val_f": 0.49606001377105713 + }, + { + "index": 2, + "valtype": 2, + "val_f": -0.4330694079399109 + }, + { + "index": 3, + "valtype": 2, + "val_f": 0.44882190227508545 + }, + { + "index": 4, + "valtype": 2, + "val_f": -0.9999997615814209 + }, + { + "index": 5, + "valtype": 2, + "val_f": 1.0 + }, + { + "index": 6, + "valtype": 2, + "val_f": 0.693000078201294 + } + ], + "halfbandM": 6, + "halfbandSteep": true, + "doDCBlock": true, + "displayPolyChannel": 0 + } + }, + "pos": [ + 4, + 0 + ] + }, + { + "id": 8399478428125930, + "plugin": "SurgeXTRack", + "model": "SurgeXTVCF", + "version": "2.0", + "params": [ + { + "value": -0.8504011631011963, + "id": 0 + }, + { + "value": 0.015748150646686554, + "id": 1 + }, + { + "value": 1.2440974712371826, + "id": 2 + }, + { + "value": 1.0, + "id": 3 + }, + { + "value": 1.0, + "id": 4 + }, + { + "value": 0.9380000829696655, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 2.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + } + ], + "leftModuleId": 3851544056860100, + "rightModuleId": 2029604380744860, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "displayPolyChannel": 0 + } + }, + "pos": [ + 16, + 0 + ] + }, + { + "id": 2029604380744860, + "plugin": "SurgeXTRack", + "model": "SurgeXTEGxVCA", + "version": "2.0", + "params": [ + { + "value": 1.0025711059570312, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 1.200857013827772e-7, + "id": 3 + }, + { + "value": 0.6141747236251831, + "id": 4 + }, + { + "value": 1.1983998149389663e-7, + "id": 5 + }, + { + "value": 0.4803157150745392, + "id": 6 + }, + { + "value": 1.0, + "id": 7 + }, + { + "value": 1.0, + "id": 8 + }, + { + "value": 1.0, + "id": 9 + }, + { + "value": 1.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + } + ], + "leftModuleId": 8399478428125930, + "rightModuleId": 5435983300881264, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "clockStyle": 0 + } + }, + "pos": [ + 28, + 0 + ] + }, + { + "id": 5435983300881264, + "plugin": "SurgeXTRack", + "model": "SurgeXTFXChorus", + "version": "2.0", + "params": [ + { + "value": 0.5607175230979919, + "id": 0 + }, + { + "value": 0.5821687579154968, + "id": 1 + }, + { + "value": 0.05000000074505806, + "id": 2 + }, + { + "value": 0.07999999821186066, + "id": 3 + }, + { + "value": 0.2769230902194977, + "id": 4 + }, + { + "value": 1.0, + "id": 5 + }, + { + "value": 0.08871415257453918, + "id": 6 + }, + { + "value": 1.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 0.0, + "id": 50 + }, + { + "value": 0.0, + "id": 51 + }, + { + "value": 0.0, + "id": 52 + }, + { + "value": 0.0, + "id": 53 + }, + { + "value": 0.0, + "id": 54 + }, + { + "value": 0.0, + "id": 55 + }, + { + "value": 0.0, + "id": 56 + }, + { + "value": 0.0, + "id": 57 + }, + { + "value": 0.0, + "id": 58 + }, + { + "value": 0.0, + "id": 59 + }, + { + "value": 1.0, + "id": 60 + }, + { + "value": 1.0, + "id": 61 + } + ], + "leftModuleId": 2029604380744860, + "rightModuleId": 4677901538619524, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "loadedPreset": 11, + "presetName": "Soft", + "presetIsDirty": true, + "clockStyle": 0, + "polyphonicMode": false, + "paramNatural": [ + { + "index": 0, + "valtype": 2, + "val_f": -6.5142598152160645 + }, + { + "index": 1, + "valtype": 2, + "val_f": 2.314700126647949 + }, + { + "index": 2, + "valtype": 2, + "val_f": 0.05000000074505806 + }, + { + "index": 3, + "valtype": 2, + "val_f": 0.07999999821186066 + }, + { + "index": 4, + "valtype": 2, + "val_f": -24.0 + }, + { + "index": 5, + "valtype": 2, + "val_f": 70.0 + }, + { + "index": 6, + "valtype": 2, + "val_f": 0.08871415257453918 + }, + { + "index": 7, + "valtype": 2, + "val_f": 24.0 + }, + { + "index": 8, + "valtype": 0, + "val_i": 0 + }, + { + "index": 9, + "valtype": 0, + "val_i": 0 + }, + { + "index": 10, + "valtype": 0, + "val_i": 0 + }, + { + "index": 11, + "valtype": 0, + "val_i": 0 + } + ] + } + }, + "pos": [ + 40, + 0 + ] + }, + { + "id": 4677901538619524, + "plugin": "SurgeXTRack", + "model": "SurgeXTDelay", + "version": "2.0", + "params": [ + { + "value": -0.8456680178642273, + "id": 0 + }, + { + "value": -0.7816022634506226, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.5, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": -60.0, + "id": 5 + }, + { + "value": 70.0, + "id": 6 + }, + { + "value": 2.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 3.0, + "id": 50 + } + ], + "leftModuleId": 5435983300881264, + "rightModuleId": 7835847246020659, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "clockStyle": 0 + } + }, + "pos": [ + 52, + 0 + ] + }, + { + "id": 7835847246020659, + "plugin": "SurgeXTRack", + "model": "SurgeXTFXReverb", + "version": "2.0", + "params": [ + { + "value": 0.19752730429172516, + "id": 0 + }, + { + "value": 0.6650000214576721, + "id": 1 + }, + { + "value": 0.23214100301265717, + "id": 2 + }, + { + "value": 0.40044617652893066, + "id": 3 + }, + { + "value": 0.2785710096359253, + "id": 4 + }, + { + "value": 0.4517306089401245, + "id": 5 + }, + { + "value": 0.4615384638309479, + "id": 6 + }, + { + "value": 0.5, + "id": 7 + }, + { + "value": 0.7460850477218628, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.5, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 0.0, + "id": 50 + }, + { + "value": 0.0, + "id": 51 + }, + { + "value": 0.0, + "id": 52 + }, + { + "value": 0.0, + "id": 53 + }, + { + "value": 0.0, + "id": 54 + }, + { + "value": 0.0, + "id": 55 + }, + { + "value": 0.0, + "id": 56 + }, + { + "value": 0.0, + "id": 57 + }, + { + "value": 0.0, + "id": 58 + }, + { + "value": 0.0, + "id": 59 + }, + { + "value": 1.0, + "id": 60 + }, + { + "value": 1.0, + "id": 61 + } + ], + "leftModuleId": 4677901538619524, + "rightModuleId": 2799203590388841, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "loadedPreset": 13, + "presetName": "Room", + "presetIsDirty": true, + "polyphonicMode": false, + "paramNatural": [ + { + "index": 0, + "valtype": 2, + "val_f": -5.432145118713379 + }, + { + "index": 1, + "valtype": 0, + "val_i": 2 + }, + { + "index": 2, + "valtype": 2, + "val_f": 0.23214100301265717 + }, + { + "index": 3, + "valtype": 2, + "val_f": 0.004461765289306641 + }, + { + "index": 4, + "valtype": 2, + "val_f": 0.2785710096359253 + }, + { + "index": 5, + "valtype": 2, + "val_f": -1.2750205993652344 + }, + { + "index": 6, + "valtype": 2, + "val_f": 0.0 + }, + { + "index": 7, + "valtype": 2, + "val_f": 0.0 + }, + { + "index": 8, + "valtype": 2, + "val_f": 36.991058349609375 + }, + { + "index": 9, + "valtype": 2, + "val_f": 0.0 + }, + { + "index": 10, + "valtype": 2, + "val_f": 0.0 + }, + { + "index": 11, + "valtype": 0, + "val_i": 0 + } + ] + } + }, + "pos": [ + 64, + 0 + ] + }, + { + "id": 2, + "plugin": "Cardinal", + "model": "HostMIDI", + "version": "2.0", + "params": [], + "data": { + "pwRange": 2.0, + "smooth": false, + "forceGateGaps": false, + "channels": 8, + "polyMode": 0, + "lastPitch": 8192, + "lastMod": 0, + "inputChannel": 0, + "outputChannel": 0 + }, + "pos": [ + 16, + 1 + ] + }, + { + "id": 5386134664554238, + "plugin": "Cardinal", + "model": "HostMIDIMap", + "version": "2.0", + "params": [], + "data": { + "maps": [ + { + "cc": 37, + "moduleId": 3851544056860100, + "paramId": 2 + }, + { + "cc": 38, + "moduleId": 3851544056860100, + "paramId": 3 + }, + { + "cc": 39, + "moduleId": 3851544056860100, + "paramId": 4 + }, + { + "cc": 40, + "moduleId": 3851544056860100, + "paramId": 5 + }, + { + "cc": 33, + "moduleId": 2029604380744860, + "paramId": 3 + }, + { + "cc": 34, + "moduleId": 2029604380744860, + "paramId": 4 + }, + { + "cc": 35, + "moduleId": 2029604380744860, + "paramId": 5 + }, + { + "cc": 36, + "moduleId": 2029604380744860, + "paramId": 6 + }, + { + "cc": 62, + "moduleId": 8399478428125930, + "paramId": 0 + }, + { + "cc": 63, + "moduleId": 8399478428125930, + "paramId": 1 + }, + { + "cc": 75, + "moduleId": 8399478428125930, + "paramId": 2 + }, + { + "cc": 1, + "moduleId": 2284558036713263, + "paramId": 0 + }, + { + "cc": 76, + "moduleId": 2284558036713263, + "paramId": 1 + }, + { + "cc": -1, + "moduleId": -1, + "paramId": 0 + } + ], + "smooth": true, + "channel": 0 + }, + "pos": [ + 4, + 1 + ] + }, + { + "id": 6151661423319598, + "plugin": "Cardinal", + "model": "HostAudio2", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + } + ], + "data": { + "dcFilter": true + }, + "pos": [ + 68, + 1 + ] + } + ], + "cables": [ + { + "id": 4870882873778933, + "outputModuleId": 2, + "outputId": 0, + "inputModuleId": 3851544056860100, + "inputId": 0, + "color": "#e8ff52" + }, + { + "id": 2579627869165631, + "outputModuleId": 8399478428125930, + "outputId": 0, + "inputModuleId": 2029604380744860, + "inputId": 0, + "color": "#ff5252" + }, + { + "id": 962456096359109, + "outputModuleId": 8399478428125930, + "outputId": 1, + "inputModuleId": 2029604380744860, + "inputId": 1, + "color": "#ff9352" + }, + { + "id": 2222999430484636, + "outputModuleId": 4677901538619524, + "outputId": 0, + "inputModuleId": 7835847246020659, + "inputId": 0, + "color": "#52ff7d" + }, + { + "id": 6472190894340858, + "outputModuleId": 4677901538619524, + "outputId": 1, + "inputModuleId": 7835847246020659, + "inputId": 1, + "color": "#52ffbe" + }, + { + "id": 4851926975624854, + "outputModuleId": 5435983300881264, + "outputId": 0, + "inputModuleId": 4677901538619524, + "inputId": 0, + "color": "#52ffff" + }, + { + "id": 1131323874335431, + "outputModuleId": 5435983300881264, + "outputId": 1, + "inputModuleId": 4677901538619524, + "inputId": 1, + "color": "#52beff" + }, + { + "id": 378399834714435, + "outputModuleId": 2, + "outputId": 1, + "inputModuleId": 2029604380744860, + "inputId": 2, + "color": "#e8ff52" + }, + { + "id": 5460605340883330, + "outputModuleId": 6686738058731514, + "outputId": 0, + "inputModuleId": 2284558036713263, + "inputId": 0, + "color": "#ff5293" + }, + { + "id": 4133716265410150, + "outputModuleId": 2284558036713263, + "outputId": 0, + "inputModuleId": 3851544056860100, + "inputId": 2, + "color": "#ff5252" + }, + { + "id": 1320773246873342, + "outputModuleId": 2029604380744860, + "outputId": 0, + "inputModuleId": 5435983300881264, + "inputId": 0, + "color": "#ff9352" + }, + { + "id": 3376170110142204, + "outputModuleId": 2029604380744860, + "outputId": 1, + "inputModuleId": 5435983300881264, + "inputId": 1, + "color": "#ffd452" + }, + { + "id": 3429691906124004, + "outputModuleId": 2029604380744860, + "outputId": 2, + "inputModuleId": 2284558036713263, + "inputId": 1, + "color": "#e8ff52" + }, + { + "id": 291747936352326, + "outputModuleId": 2284558036713263, + "outputId": 1, + "inputModuleId": 8399478428125930, + "inputId": 2, + "color": "#a8ff52" + }, + { + "id": 7571876195938815, + "outputModuleId": 3851544056860100, + "outputId": 0, + "inputModuleId": 8399478428125930, + "inputId": 0, + "color": "#67ff52" + }, + { + "id": 1260042254448408, + "outputModuleId": 3851544056860100, + "outputId": 0, + "inputModuleId": 8399478428125930, + "inputId": 1, + "color": "#52ff7d" + }, + { + "id": 5302575887902969, + "outputModuleId": 2, + "outputId": 1, + "inputModuleId": 3851544056860100, + "inputId": 1, + "color": "#ffd452" + }, + { + "id": 7099271353973173, + "outputModuleId": 7835847246020659, + "outputId": 0, + "inputModuleId": 6151661423319598, + "inputId": 0, + "color": "#ff5252" + }, + { + "id": 7428242121207301, + "outputModuleId": 7835847246020659, + "outputId": 1, + "inputModuleId": 6151661423319598, + "inputId": 1, + "color": "#ffd452" + } + ] +} From 7b60e3945c69a5111f37b6ec7d60a7e5e63d83e8 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 30 Jan 2026 23:31:51 +0100 Subject: [PATCH 28/33] Sign and Notarize macOS builds Signed-off-by: falkTX --- .github/workflows/build.yml | 7 ++++++ dpf | 2 +- utils/create-macos-installer.sh | 41 +++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c1dd648..57369d4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -202,6 +202,13 @@ jobs: - name: Build macOS (packaging) if: steps.cache.outputs.cache-hit == 'true' shell: bash + env: + MACOS_APP_CERTIFICATE: ${{ secrets.MACOS_APP_CERTIFICATE }} + MACOS_INSTALLER_CERTIFICATE: ${{ secrets.MACOS_INSTALLER_CERTIFICATE }} + MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} + MACOS_NOTARIZATION_USER: ${{ secrets.MACOS_NOTARIZATION_USER }} + MACOS_NOTARIZATION_PASS: ${{ secrets.MACOS_NOTARIZATION_PASS }} + MACOS_NOTARIZATION_TEAM: ${{ secrets.MACOS_NOTARIZATION_TEAM }} run: | source deps/PawPaw/local.env macos-universal-10.15 ./utils/create-macos-installer.sh diff --git a/dpf b/dpf index d38701a..5b32b1c 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit d38701abff789f44f2f483a6360416a9adbcc8f9 +Subproject commit 5b32b1cac430e3038319e46c9e10f459e95ca598 diff --git a/utils/create-macos-installer.sh b/utils/create-macos-installer.sh index c88d2d1..c8d4880 100755 --- a/utils/create-macos-installer.sh +++ b/utils/create-macos-installer.sh @@ -26,10 +26,34 @@ rm -rf vst2/*.vst/Contents/Resources rm -rf vst3/*.vst3/Contents/Resources rm -rf clap/*.clap/Contents/Resources +if [ -n "${MACOS_APP_CERTIFICATE}" ] && [ -n "${MACOS_INSTALLER_CERTIFICATE}" ] && [ -n "${MACOS_CERTIFICATE_PASSWORD}" ]; then + security create-keychain -p "" $(pwd)/keychain.db + security unlock-keychain -p "" $(pwd)/keychain.db + echo -n "${MACOS_APP_CERTIFICATE}" | base64 --decode -o cert.p12 + security import cert.p12 -P "${MACOS_CERTIFICATE_PASSWORD}" -A -t cert -f pkcs12 -k $(pwd)/keychain.db + echo -n "${MACOS_INSTALLER_CERTIFICATE}" | base64 --decode -o cert.p12 + security import cert.p12 -P "${MACOS_CERTIFICATE_PASSWORD}" -A -t cert -f pkcs12 -k $(pwd)/keychain.db + rm cert.p12 + security list-keychain -d user -s $(pwd)/keychain.db + + MACOS_APP_DEV_ID="$(security find-identity -v $(pwd)/keychain.db | grep 'Developer ID Application:' | head -n 1 | cut -d' ' -f 5-99 | sed 's/\"//g')" + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime au/*.component + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime clap/*.clap + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime jack/*.app + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime native/*.app + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime vst2/*.vst + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime vst3/*.vst3 + codesign -s "${MACOS_APP_DEV_ID}" --force --verbose --option=runtime lv2/*.lv2/*.dylib + + MACOS_INSTALLER_DEV_ID="$(security find-identity -v $(pwd)/keychain.db | grep 'Developer ID Installer:' | head -n 1 | cut -d' ' -f 5-99 | sed 's/\"//g')" + PKG_SIGN_ARGS=(--sign "${MACOS_INSTALLER_DEV_ID}") +fi + pkgbuild \ --identifier "studio.kx.distrho.cardinal.resources" \ --install-location "/Library/Application Support/Cardinal/" \ --root "${PWD}/res/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-resources.pkg pkgbuild \ @@ -37,6 +61,7 @@ pkgbuild \ --component-plist "../utils/macOS/Build_JACK.plist" \ --install-location "/Applications/" \ --root "${PWD}/jack/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-jack.pkg pkgbuild \ @@ -44,36 +69,42 @@ pkgbuild \ --component-plist "../utils/macOS/Build_Native.plist" \ --install-location "/Applications/" \ --root "${PWD}/native/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-native.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.components" \ --install-location "/Library/Audio/Plug-Ins/Components/" \ --root "${PWD}/au/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-components.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.lv2bundles" \ --install-location "/Library/Audio/Plug-Ins/LV2/" \ --root "${PWD}/lv2/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-lv2bundles.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.vst2bundles" \ --install-location "/Library/Audio/Plug-Ins/VST/" \ --root "${PWD}/vst2/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-vst2bundles.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.vst3bundles" \ --install-location "/Library/Audio/Plug-Ins/VST3/" \ --root "${PWD}/vst3/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-vst3bundles.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.clapbundles" \ --install-location "/Library/Audio/Plug-Ins/CLAP/" \ --root "${PWD}/clap/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-clapbundles.pkg cd .. @@ -86,4 +117,14 @@ productbuild \ --identifier "studio.kx.distrho.cardinal" \ --package-path "${PWD}" \ --version 0 \ + "${PKG_SIGN_ARGS[@]}" \ Cardinal-macOS.pkg + +if [ -n "${MACOS_NOTARIZATION_USER}" ] && [ -n "${MACOS_NOTARIZATION_PASS}" ] && [ -n "${MACOS_NOTARIZATION_TEAM}" ]; then + xcrun notarytool submit Cardinal-macOS.pkg \ + --apple-id ${MACOS_NOTARIZATION_USER} \ + --password ${MACOS_NOTARIZATION_PASS} \ + --team-id ${MACOS_NOTARIZATION_TEAM} \ + --wait + xcrun stapler staple Cardinal-macOS.pkg +fi From bb8449282e9a3e801ad9e32d46dc32c9e0d945ad Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 31 Jan 2026 10:15:47 +0100 Subject: [PATCH 29/33] Correct documentation for host time bpm port Signed-off-by: falkTX --- docs/CARDINAL-MODULES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CARDINAL-MODULES.md b/docs/CARDINAL-MODULES.md index cfc231e..cd97036 100644 --- a/docs/CARDINAL-MODULES.md +++ b/docs/CARDINAL-MODULES.md @@ -194,7 +194,7 @@ The meaning of the outputs is: - Step: Trigger for step change - Bar Phase: 0-10v smooth ramp for the bar position (with bar division being a right-click option) - Beat Phase: 0-10v smooth ramp for the beat position -- BPM: Volts per Beat per Second, as supported by Impromptu Clocked/Clkd and ZZC Clock +- BPM: Beats per minute in [Rack standard](https://vcvrack.com/manual/VoltageStandards#Pitch-and-Frequencies), supported by Impromptu Clocked/Clkd and ZZC Clock ## Extra modules From 8eb21b4f76f9dca5609022a59486b0efefcc4343 Mon Sep 17 00:00:00 2001 From: luzpaz Date: Sat, 31 Jan 2026 16:27:19 +0000 Subject: [PATCH 30/33] Fix various doc and source comment typos Fixes a variety of user- and dev-facing typos. --- docs/DIFFERENCES.md | 4 ++-- docs/LICENSES.md | 2 +- docs/OVERVIEW.md | 2 +- plugins/Cardinal/src/AudioFile.cpp | 2 +- plugins/Cardinal/src/Carla.cpp | 4 ++-- plugins/Cardinal/src/Ildaeil.cpp | 4 ++-- plugins/Cardinal/src/TextEditor.cpp | 2 +- src/CardinalX11WindowIcon.cpp | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/DIFFERENCES.md b/docs/DIFFERENCES.md index adbc4b8..539f637 100644 --- a/docs/DIFFERENCES.md +++ b/docs/DIFFERENCES.md @@ -10,7 +10,7 @@ Also, the official plugin works pretty much like the free standalone where you l This is intentionally not allowed/enabled in Cardinal, as the target is to make a self-contained plugin binary. Online access is also not allowed. -Bellow follows a list of features comparing the official plugin to Cardinal. +Below follows a list of features comparing the official plugin to Cardinal. | Feature | Rack Pro | Cardinal | Additional notes | |--------------------------------|---------------------------|---------------------------------|------------------| @@ -36,7 +36,7 @@ Bellow follows a list of features comparing the official plugin to Cardinal. | FX plugin variant | 16 ins, 16 outs | 2 ins, 2 outs | | | Raw-CV plugin variant | Unsupported | 8 audio IO + 10 CV IO | Available in JACK, LV2 and VST3 formats, not possible in AU and VST2 | | Arbitrary parameter automation | Yes | No (*) | Static 24 automatable params, use Host Params/Map modules to map them to module parameters | -| Integrated plugin host | No, Host payed separately | Yes, using Carla or Ildaeil | | +| Integrated plugin host | No, Host paid separately | Yes, using Carla or Ildaeil | | | Host sync/timing | Using MIDI signals | Using dedicated module | | | Linux/X11 event handling | Runs on 2nd thread | Runs on main/GUI thread | | | v1 module compatibility | No | No, but with less restrictions | Module widgets can load resources at any point | diff --git a/docs/LICENSES.md b/docs/LICENSES.md index b659fa7..1a024a2 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -99,7 +99,7 @@ Below follows a list of all code licenses used in Cardinal and linked submodules ## ARTWORK / PANEL LICENSES -Bellow follows a list of all licenses related to **artwork and module panels**, sorted by file name. +Below follows a list of all licenses related to **artwork and module panels**, sorted by file name. Licenses were retrieved from the official project's LICENSE, README or related files. When * is used, it is meant as wildcard of all files, with potential exceptions mentioned afterwards. When a license is uncertain, ??? is used. diff --git a/docs/OVERVIEW.md b/docs/OVERVIEW.md index f1a702f..69d1c45 100644 --- a/docs/OVERVIEW.md +++ b/docs/OVERVIEW.md @@ -45,7 +45,7 @@ Implementing new plugin formats will be done here. This directory contains special header files needed to build the original Rack code as required by Cardinal. These headers are included before the official Rack ones, allowing us to override some implementation details. -Additionally a few compatiblity headers are present, helping compile the code for more targets than officially supported in Rack. +Additionally a few compatibility headers are present, helping compile the code for more targets than officially supported in Rack. ## lv2export diff --git a/plugins/Cardinal/src/AudioFile.cpp b/plugins/Cardinal/src/AudioFile.cpp index 53e8933..82ed656 100644 --- a/plugins/Cardinal/src/AudioFile.cpp +++ b/plugins/Cardinal/src/AudioFile.cpp @@ -201,7 +201,7 @@ struct CarlaInternalPluginModule : Module, Runner { { switch (opcode) { - // cannnot be supported + // cannot be supported case NATIVE_HOST_OPCODE_HOST_IDLE: break; // other stuff diff --git a/plugins/Cardinal/src/Carla.cpp b/plugins/Cardinal/src/Carla.cpp index bf51a29..072c4ca 100644 --- a/plugins/Cardinal/src/Carla.cpp +++ b/plugins/Cardinal/src/Carla.cpp @@ -27,7 +27,7 @@ #include "water/xml/XmlDocument.h" #ifndef CARDINAL_SYSDEPS -// private method that takes ownership, we can use it to avoid superfulous allocations +// private method that takes ownership, we can use it to avoid superfluous allocations extern "C" { json_t *jsonp_stringn_nocheck_own(const char* value, size_t len); } @@ -244,7 +244,7 @@ struct CarlaModule : Module { { switch (opcode) { - // cannnot be supported + // cannot be supported case NATIVE_HOST_OPCODE_HOST_IDLE: break; // other stuff diff --git a/plugins/Cardinal/src/Ildaeil.cpp b/plugins/Cardinal/src/Ildaeil.cpp index 98f568e..05b3750 100644 --- a/plugins/Cardinal/src/Ildaeil.cpp +++ b/plugins/Cardinal/src/Ildaeil.cpp @@ -52,7 +52,7 @@ #include #ifndef CARDINAL_SYSDEPS -// private method that takes ownership, we can use it to avoid superfulous allocations +// private method that takes ownership, we can use it to avoid superfluous allocations extern "C" { json_t *jsonp_stringn_nocheck_own(const char* value, size_t len); } @@ -575,7 +575,7 @@ struct IldaeilModule : Module { { switch (opcode) { - // cannnot be supported? + // cannot be supported? case NATIVE_HOST_OPCODE_HOST_IDLE: break; // other stuff diff --git a/plugins/Cardinal/src/TextEditor.cpp b/plugins/Cardinal/src/TextEditor.cpp index 5fa67ed..04228c5 100644 --- a/plugins/Cardinal/src/TextEditor.cpp +++ b/plugins/Cardinal/src/TextEditor.cpp @@ -85,7 +85,7 @@ struct TextEditorModule : Module { { file.clear(); - // Rack Core Notes compatiblity + // Rack Core Notes compatibility if (json_t* const textJ = json_object_get(rootJ, "text")) { text = json_string_value(textJ); diff --git a/src/CardinalX11WindowIcon.cpp b/src/CardinalX11WindowIcon.cpp index d7d3fe3..7ddba29 100644 --- a/src/CardinalX11WindowIcon.cpp +++ b/src/CardinalX11WindowIcon.cpp @@ -1214,7 +1214,7 @@ static constexpr const unsigned long sCardinalX11Icon[] = { static constexpr const uint32_t sCardinalX11IconSize = 2 + 16 * 16 + 2 + 48 * 48 + 2 + 128 * 128; -// declaration first, ensuring extern/visiblity status is respected +// declaration first, ensuring extern/visibility status is respected extern const unsigned long* gCardinalX11Icon; // definition afterwards From 462a5196638c5563dba15e891f3698c99ed16b05 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 1 Feb 2026 11:34:16 +0100 Subject: [PATCH 31/33] Remove global override of "yellow" Signed-off-by: falkTX --- src/Makefile | 2 ++ .../componentlibrary.hpp => src/custom/Browser.cpp | 13 +++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) rename include/componentlibrary.hpp => src/custom/Browser.cpp (80%) diff --git a/src/Makefile b/src/Makefile index 8799bff..440fcf4 100644 --- a/src/Makefile +++ b/src/Makefile @@ -33,6 +33,7 @@ BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal RACK_FILES += AsyncDialog.cpp RACK_FILES += CardinalModuleWidget.cpp +RACK_FILES += custom/Browser.cpp RACK_FILES += custom/asset.cpp RACK_FILES += custom/dep.cpp RACK_FILES += custom/library.cpp @@ -68,6 +69,7 @@ IGNORED_FILES += Rack/src/plugin.cpp IGNORED_FILES += Rack/src/rtaudio.cpp IGNORED_FILES += Rack/src/rtmidi.cpp IGNORED_FILES += Rack/src/app/AudioDisplay.cpp +IGNORED_FILES += Rack/src/app/Browser.cpp IGNORED_FILES += Rack/src/app/MenuBar.cpp IGNORED_FILES += Rack/src/app/MidiDisplay.cpp IGNORED_FILES += Rack/src/app/ModuleWidget.cpp diff --git a/include/componentlibrary.hpp b/src/custom/Browser.cpp similarity index 80% rename from include/componentlibrary.hpp rename to src/custom/Browser.cpp index 5b0705f..ef9a335 100644 --- a/include/componentlibrary.hpp +++ b/src/custom/Browser.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2022 Filipe Coelho + * Copyright (C) 2021-2026 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 @@ -15,17 +15,14 @@ * For a full copy of the GNU General Public License see the LICENSE file. */ -#pragma once - +// little hack to force browser yellow color to cardinal red #define SCHEME_YELLOW SCHEME_YELLOW_OldVCV -#include_next "componentlibrary.hpp" +#include "componentlibrary.hpp" #undef SCHEME_YELLOW - namespace rack { namespace componentlibrary { - -// Yellow? What's that? static const NVGcolor SCHEME_YELLOW = nvgRGBf(0.76f, 0.11f, 0.22f); - } } + +#include "../src/app/Browser.cpp" From ab3e198db91b14f7d35911f79938a3bee7f06349 Mon Sep 17 00:00:00 2001 From: fixxxedpoint Date: Fri, 13 Feb 2026 15:44:05 +0100 Subject: [PATCH 32/33] FIX: off-by-one error when identifying patch/Rack version by reading the magic sequence of a zstd-compressed patch (#871) * FIX: off-by-one error when identifying the patch/Rack version by reading the magic sequence of a zstd-compressed patch. * review: using array of uint8_t instead of char[] for recognizing magic number of an zstd archive * review: explicit size of the zstd magic number array --- src/CardinalPlugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index 3c01605..40681fb 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -1104,7 +1104,7 @@ protected: rack::system::removeRecursively(fAutosavePath); rack::system::createDirectories(fAutosavePath); - static constexpr const char zstdMagic[] = "\x28\xb5\x2f\xfd"; + static constexpr const uint8_t zstdMagic[4] = { 0x28, 0xb5, 0x2f, 0xfd }; if (std::memcmp(data.data(), zstdMagic, sizeof(zstdMagic)) != 0) { From 68c059991923b235fe6b0a781f52ebfd05acf3e8 Mon Sep 17 00:00:00 2001 From: Thad Guidry Date: Fri, 13 Feb 2026 23:13:40 +0800 Subject: [PATCH 33/33] Update README for Carla and Ildaeil links (#891) This makes it less confusing what Carla and Ildaeil actually are. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7c11944..7d17bc0 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Cardinal should be considered stable, if you spot any bugs please report them. Currently the following should be noted: - CLAP support is a work-in-progress [DPF#383](https://github.com/DISTRHO/DPF/issues/383) -- VST3 plugin hosting (inside Carla or Ildaeil modules) mostly works but is considered experimental +- VST3 plugin hosting (inside [Carla](https://github.com/falkTX/Carla/) or [Ildaeil](https://github.com/DISTRHO/Ildaeil) modules) mostly works but is considered experimental - Windows 32bit builds still have a few problematic modules [#80](https://github.com/DISTRHO/Cardinal/issues/80) ### Stable release @@ -106,7 +106,7 @@ But a couple of modules background's have their colors flipped, because damn we ![screenshot](docs/Screenshot_Basic-Patching.png "Screenshot") -### Carla and Ildaeil plugin hosts +### [Carla](https://github.com/falkTX/Carla/) and [Ildaeil](https://github.com/DISTRHO/Ildaeil) plugin hosts ![screenshot](docs/Screenshot_Carla+Ildaeil.png "Screenshot")