diff --git a/.gitmodules b/.gitmodules index d405f74..d94f615 100644 --- a/.gitmodules +++ b/.gitmodules @@ -76,3 +76,6 @@ [submodule "plugins/ZZC"] path = plugins/ZZC url = https://github.com/zezic/ZZC.git +[submodule "plugins/repelzen"] + path = plugins/repelzen + url = https://github.com/wiqid/repelzen.git diff --git a/doc/.generate-plugin-licenses.sh b/doc/.generate-plugin-licenses.sh new file mode 100755 index 0000000..b7d1e19 --- /dev/null +++ b/doc/.generate-plugin-licenses.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +cd $(dirname $0) + +for p in ../plugins/*/plugin.json; do + name=$(jq -crM .name ${p}) + license=$(jq -crM .license ${p}) + echo "| ${name} | ${license} |" +done diff --git a/doc/LICENSES.md b/doc/LICENSES.md new file mode 100644 index 0000000..d81ce35 --- /dev/null +++ b/doc/LICENSES.md @@ -0,0 +1,38 @@ +# LICENSES + +## CODE LICENSE / BINARY + +While Cardinal itself is licensed under GPLv3+, some modules/plugins used by it are not. +And since Cardinal builds the entire Rack and modules as a static library, +the more restrictive of the **code licenses** will apply to the final binary. + +Bellow follows a list of all code licenses used in Cardinal and linked submodules. + +| Name | License(s) | Additional notes | +|-----------------------|-----------------------|------------------| +| Carla | GPL-2.0-or-later | Used as plugin host within Cardinal| +| DPF | ISC, GPL-2.0-or-later | Used as the plugin framework, VST2 binary GPLv2+ licensed | +| Rack | GPL-3.0-or-later | The actual Rack code, internal dependencies are compatible with GPLv3+ | +| AS | MIT | | +| Amalgamated Harmonics | BSD-3-Clause | | +| Animated Circuits | BSD-3-Clause | | +| Atelier | GPL-3.0-only | | +| Audible Instruments | GPL-3.0-or-later | | +| Befaco | GPL-3.0-or-later | | +| Bidoo | GPL-3.0-only | | +| Bogaudio | GPL-3.0-or-later | | +| Cardinal | GPL-3.0-or-later | | +| DrumKit | CC0-1.0 | | +| E-Series | GPL-3.0-or-later | | +| Fundamental | GPL-3.0-or-later | | +| Grande | GPL-3.0-or-later | | +| Impromptu | GPL-3.0-only | GPLv3+ change request https://github.com/MarcBoule/Geodesics/issues/4 | +| JW-Modules | BSD-3-Clause | | +| MindMeld | GPL-3.0-only | GPLv3+ change request https://github.com/MarcBoule/Geodesics/issues/4 | +| Valley | GPL-3.0-or-later | | +| ZZC | GPL-3.0-only | GPLv3+ change request https://github.com/zezic/ZZC/issues/86 | +| ZetaCarinae | GPL-3.0-or-later | | +| cf | BSD-3-Clause | | +| mscHack | BSD-3-Clause | | +| Rackwindows | MIT | | +| repelzen | GPL-3.0-or-later | | diff --git a/plugins/Makefile b/plugins/Makefile index cda6ff7..8ed70cb 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -454,6 +454,14 @@ MSCHACK_CUSTOM_PER_FILE = MAIN_SYNC_CLOCK FILTER_STRUCT FILTER_PARAM_STRUCT OSC_ PLUGIN_FILES += $(filter-out rackwindows/src/plugin.cpp,$(wildcard rackwindows/src/*.cpp)) +# -------------------------------------------------------------- +# repelzen + +PLUGIN_FILES += $(filter-out repelzen/src/repelzen.cpp,$(wildcard repelzen/src/*.cpp)) + +# modules/types which are present in other plugins +REPELZEN_CUSTOM = Blank Mixer tanh_pade + # -------------------------------------------------------------- # ValleyAudio @@ -952,6 +960,13 @@ $(BUILD_DIR)/rackwindows/%.cpp.o: rackwindows/%.cpp -Wno-implicit-fallthrough \ -Wno-sign-compare +$(BUILD_DIR)/repelzen/%.cpp.o: repelzen/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(REPELZEN_CUSTOM),$(call custom_module_names,$(m),repelzen)) \ + -DpluginInstance=pluginInstance__repelzen + $(BUILD_DIR)/ValleyAudio/%.cpp.o: ValleyAudio/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index ab98960..16071ad 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -289,6 +289,15 @@ extern Model *modelMaude_221; // rackwindows #include "rackwindows/src/plugin.hpp" +// repelzen +#define modelBlank modelrepelzenBlank +#define modelMixer modelrepelzenMixer +#define tanh_pade repelzentanh_pade +#include "repelzen/src/repelzen.hpp" +#undef modelBlank +#undef modelMixer +#undef tanh_pade + // ValleyAudio #include "ValleyAudio/src/Valley.hpp" @@ -334,6 +343,7 @@ Plugin* pluginInstance__JW; extern Plugin* pluginInstance__MindMeld; extern Plugin* pluginInstance__mscHack; Plugin* pluginInstance__rackwindows; +Plugin* pluginInstance__repelzen; Plugin* pluginInstance__ValleyAudio; Plugin* pluginInstance__ZetaCarinaeModules; Plugin* pluginInstance__ZZC; @@ -1190,6 +1200,27 @@ static void initStatic__rackwindows() } } +static void initStatic__repelzen() +{ + Plugin* const p = new Plugin; + pluginInstance__repelzen = p; + + const StaticPluginLoader spl(p, "repelzen"); + if (spl.ok()) + { +#define modelBlank modelrepelzenBlank +#define modelMixer modelrepelzenMixer + p->addModel(modelBlank); + p->addModel(modelBurst); + p->addModel(modelFolder); + p->addModel(modelErwin); + p->addModel(modelWerner); + p->addModel(modelMixer); +#undef modelBlank +#undef modelMixer + } +} + static void initStatic__ValleyAudio() { Plugin* const p = new Plugin; @@ -1274,6 +1305,7 @@ void initStaticPlugins() initStatic__MindMeld(); initStatic__mscHack(); initStatic__rackwindows(); + initStatic__repelzen(); initStatic__ValleyAudio(); initStatic__ZetaCarinaeModules(); initStatic__ZZC(); diff --git a/plugins/repelzen b/plugins/repelzen new file mode 160000 index 0000000..4b8790c --- /dev/null +++ b/plugins/repelzen @@ -0,0 +1 @@ +Subproject commit 4b8790cde8ad0ae5e0af95929a4d5261ade5d2c9 diff --git a/plugins/res/repelzen b/plugins/res/repelzen new file mode 120000 index 0000000..fdb3c71 --- /dev/null +++ b/plugins/res/repelzen @@ -0,0 +1 @@ +../repelzen/res \ No newline at end of file