From 8ff2b383c4ef13cc6e6fea22f8cf36ff2d5ba0a0 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Fri, 24 Oct 2025 07:06:58 -0400 Subject: [PATCH] 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();