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/.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/.gitmodules b/.gitmodules index b648302..bf3b3dd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -263,6 +263,9 @@ [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 [submodule "plugins/dbRackModules"] path = plugins/dbRackModules - url = https://github.com/docb/dbRackModules.git + url = https://github.com/docb/dbRackModules.git \ No newline at end of file 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/README.md b/README.md index 080dc82..1ee577b 100644 --- a/README.md +++ b/README.md @@ -197,6 +197,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/carla b/carla index 12bc40f..1d8dcb5 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 12bc40fd6c9c5b36481c7df55086b27ba9ae8a80 +Subproject commit 1d8dcb5aab5e0c30352e9f928ce3e40cbc86a439 diff --git a/docs/LICENSES.md b/docs/LICENSES.md index 9ed45ea..5460fea 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -91,6 +91,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 | | @@ -268,6 +269,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/dpf b/dpf index ab25198..04eb914 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit ab25198ea9f361145e3f8e694d90bd2a93ee830c +Subproject commit 04eb91490c70a0c3f524e473087e263d8a9d550f 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 90af88d..42813c8 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) @@ -831,7 +825,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) @@ -1331,6 +1325,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 @@ -2853,6 +2852,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 3a2539e..becda17 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -987,6 +987,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" @@ -1107,6 +1114,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; @@ -1243,12 +1251,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 @@ -1260,11 +1268,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 @@ -2791,7 +2794,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"); @@ -3682,6 +3685,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; @@ -3883,6 +3961,7 @@ void initStaticPlugins() initStatic__surgext(); initStatic__unless_modules(); initStatic__ValleyAudio(); + initStatic__Venom(); initStatic__Voxglitch(); initStatic__WhatTheRack(); initStatic__WSTD_Drums(); 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/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. 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; } 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; +} 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