From 8134b2b67942c43e03ca3778aa4a34f7d1691417 Mon Sep 17 00:00:00 2001 From: dreamer <1185977+dromer@users.noreply.github.com> Date: Sun, 5 Dec 2021 17:34:56 +0100 Subject: [PATCH] Add HetrickCV (#69) * try to add HetrickCV * specify modules separately * HetrickCV builds * custom MidSide; invert panels; add to LICENSES file * undo trailing whitespace removal in docs; add res symlink --- .gitmodules | 3 ++ doc/LICENSES.md | 1 + plugins/HetrickCV | 1 + plugins/Makefile | 21 +++++++++ plugins/plugins.cpp | 103 +++++++++++++++++++++++++++++++++++++++++- plugins/res/HetrickCV | 1 + src/override/dep.cpp | 43 ++++++++++++++++++ 7 files changed, 172 insertions(+), 1 deletion(-) create mode 160000 plugins/HetrickCV create mode 120000 plugins/res/HetrickCV diff --git a/.gitmodules b/.gitmodules index be904bc..bce4d7c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -100,3 +100,6 @@ [submodule "plugins/GlueTheGiant"] path = plugins/GlueTheGiant url = https://github.com/gluethegiant/gtg-rack.git +[submodule "plugins/HetrickCV"] + path = plugins/HetrickCV + url = https://github.com/mhetrick/hetrickcv.git diff --git a/doc/LICENSES.md b/doc/LICENSES.md index 25c9547..2f5bb47 100644 --- a/doc/LICENSES.md +++ b/doc/LICENSES.md @@ -31,6 +31,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | Fundamental | GPL-3.0-or-later | | | Glue the Giant | GPL-3.0-or-later | | | Grande | GPL-3.0-or-later | | +| HetrickCV | CC0-1.0 | | | Impromptu | GPL-3.0-or-later | | | JW-Modules | BSD-3-Clause | | | MindMeld | GPL-3.0-or-later | | diff --git a/plugins/HetrickCV b/plugins/HetrickCV new file mode 160000 index 0000000..2fc83df --- /dev/null +++ b/plugins/HetrickCV @@ -0,0 +1 @@ +Subproject commit 2fc83df75154c32b83addd3ed68b35eb6156ca0d diff --git a/plugins/Makefile b/plugins/Makefile index 2e8cd07..28c3e96 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -435,6 +435,18 @@ PLUGIN_FILES += $(filter-out GlueTheGiant/src/plugin.cpp,$(wildcard GlueTheGiant PLUGIN_FILES += $(filter-out GrandeModular/src/plugin.cpp,$(wildcard GrandeModular/src/*.cpp)) +# -------------------------------------------------------------- +# HetrickCV + +PLUGIN_FILES += $(wildcard HetrickCV/src/*.cpp) +PLUGIN_FILES += $(wildcard HetrickCV/src/DSP/*.cpp) +PLUGIN_FILES += $(wildcard HetrickCV/Gamma/src/arr.cpp) +PLUGIN_FILES += $(wildcard HetrickCV/Gamma/src/Domain.cpp) +PLUGIN_FILES += $(wildcard HetrickCV/Gamma/src/scl.cpp) + +# modules/types which are present in other plugins +HETRICKCV_CUSTOM = ASR BlankPanel FlipFlop MidSide + # -------------------------------------------------------------- # ImpromptuModular @@ -992,6 +1004,15 @@ $(BUILD_DIR)/GrandeModular/%.cpp.o: GrandeModular/%.cpp -Wno-missing-braces \ -Wno-self-assign +$(BUILD_DIR)/HetrickCV/%.cpp.o: HetrickCV/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(HETRICKCV_CUSTOM),$(call custom_module_names,$(m),HetrickCV)) \ + -DpluginInstance=pluginInstance__HetrickCV \ + -IHetrickCV/Gamma \ + -Wno-unused-but-set-variable + $(BUILD_DIR)/ImpromptuModular/src/Foundr%.cpp.o: ImpromptuModular/src/Foundr%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index e6f826e..0db81da 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -304,6 +304,51 @@ extern Model *modelWriteSeq32; extern Model *modelWriteSeq64; extern Model *modelBlankPanel; +// HetrickCV +#define modelASR modelHetrickCVASR +#define modelBlankPanel modelHetrickCVBlankPanel +#define modelFlipFlop modelHetrickCVFlipFlop +#define modelMidSide modelHetrickCVMidSide +extern Model *modelTwoToFour; +extern Model *modelAnalogToDigital; +extern Model *modelASR; +extern Model *modelBinaryGate; +extern Model *modelBinaryNoise; +extern Model *modelBitshift; +extern Model *modelBlankPanel; +extern Model *modelBoolean3; +extern Model *modelChaos1Op; +extern Model *modelChaos2Op; +extern Model *modelChaos3Op; +extern Model *modelChaoticAttractors; +extern Model *modelClockedNoise; +extern Model *modelComparator; +extern Model *modelContrast; +extern Model *modelCrackle; +extern Model *modelDataCompander; +extern Model *modelDelta; +extern Model *modelDigitalToAnalog; +extern Model *modelDust; +extern Model *modelExponent; +extern Model *modelFBSineChaos; +extern Model *modelFlipFlop; +extern Model *modelFlipPan; +extern Model *modelGateJunction; +extern Model *modelGingerbread; +extern Model *modelLogicCombine; +extern Model *modelMidSide; +extern Model *modelMinMax; +extern Model *modelRandomGates; +extern Model *modelRotator; +extern Model *modelRungler; +extern Model *modelScanner; +extern Model *modelWaveshape; +extern Model *modelXYToPolar; +#undef modelASR +#undef modelBlankPanel +#undef modelFlipFlop +#undef modelMidSide + // JW-Modules #define modelQuantizer modelJWQuantizer #include "JW-Modules/src/JWModules.hpp" @@ -418,6 +463,7 @@ Plugin* pluginInstance__FehlerFabrik; Plugin* pluginInstance__Fundamental; Plugin* pluginInstance__GrandeModular; Plugin* pluginInstance__GlueTheGiant; +Plugin* pluginInstance__HetrickCV; extern Plugin* pluginInstance__ImpromptuModular; Plugin* pluginInstance__JW; extern Plugin* pluginInstance__MindMeld; @@ -1259,6 +1305,60 @@ static void initStatic__GrandeModular() } } +static void initStatic__HetrickCV() +{ + Plugin* const p = new Plugin; + pluginInstance__HetrickCV = p; + + const StaticPluginLoader spl(p, "HetrickCV"); + if (spl.ok()) + { +#define modelASR modelHetrickCVASR +#define modelBlankPanel modelHetrickCVBlankPanel +#define modelFlipFlop modelHetrickCVFlipFlop +#define modelMidSide modelHetrickCVMidSide + p->addModel(modelTwoToFour); + p->addModel(modelAnalogToDigital); + p->addModel(modelASR); + p->addModel(modelBinaryGate); + p->addModel(modelBinaryNoise); + p->addModel(modelBitshift); + p->addModel(modelBlankPanel); + p->addModel(modelBoolean3); + p->addModel(modelChaos1Op); + p->addModel(modelChaos2Op); + p->addModel(modelChaos3Op); + p->addModel(modelChaoticAttractors); + p->addModel(modelClockedNoise); + p->addModel(modelComparator); + p->addModel(modelContrast); + p->addModel(modelCrackle); + p->addModel(modelDataCompander); + p->addModel(modelDelta); + p->addModel(modelDigitalToAnalog); + p->addModel(modelDust); + p->addModel(modelExponent); + p->addModel(modelFBSineChaos); + p->addModel(modelFlipFlop); + p->addModel(modelFlipPan); + p->addModel(modelGateJunction); + p->addModel(modelGingerbread); + p->addModel(modelLogicCombine); + p->addModel(modelMidSide); + p->addModel(modelMinMax); + p->addModel(modelRandomGates); + p->addModel(modelRotator); + p->addModel(modelRungler); + p->addModel(modelScanner); + p->addModel(modelWaveshape); + p->addModel(modelXYToPolar); +#undef modelASR +#undef modelBlankPanel +#undef modelFlipFlop +#undef modelMidSide + } +} + static void initStatic__ImpromptuModular() { Plugin* const p = new Plugin; @@ -1388,7 +1488,7 @@ static void initStatic__mscHack() p->addModel(modelSynthDrums); p->addModel(modelSEQ_6x32x16); p->addModel(modelMasterClockx4); - //p->addModel(modelMasterClockx8); + //p->addModel(modelMasterClockx8); p->addModel(modelSEQ_Envelope_8); p->addModel(modelSeq_Triad2); p->addModel(modelARP700); @@ -1585,6 +1685,7 @@ void initStaticPlugins() initStatic__Fundamental(); initStatic__GlueTheGiant(); initStatic__GrandeModular(); + initStatic__HetrickCV(); initStatic__ImpromptuModular(); initStatic__JW(); initStatic__MindMeld(); diff --git a/plugins/res/HetrickCV b/plugins/res/HetrickCV new file mode 120000 index 0000000..709c5ad --- /dev/null +++ b/plugins/res/HetrickCV @@ -0,0 +1 @@ +../HetrickCV/res \ No newline at end of file diff --git a/src/override/dep.cpp b/src/override/dep.cpp index 75b1ef3..88b91e2 100644 --- a/src/override/dep.cpp +++ b/src/override/dep.cpp @@ -375,6 +375,49 @@ static const struct { { "/DrumKit/Tomi.svg", {}, -1 }, { "/ESeries/E340.svg", {}, -1 }, { "/Fundamental/VCA.svg", {}, -1 }, + { "/HetrickCV/1OpChaos.svg", {}, -1}, + { "/HetrickCV/2OpChaos.svg", {}, -1}, + { "/HetrickCV/2To4.svg", {}, -1}, + { "/HetrickCV/3OpChaos.svg", {}, -1}, + { "/HetrickCV/ASR.svg", {}, -1}, + { "/HetrickCV/AToD.svg", {}, -1}, + { "/HetrickCV/BinaryGate.svg", {}, -1}, + { "/HetrickCV/BinaryNoise.svg", {}, -1}, + { "/HetrickCV/Bitshift.svg", {}, -1}, + { "/HetrickCV/Boolean3.svg", {}, -1}, + { "/HetrickCV/ChaoticAttractors.svg", {}, -1}, + { "/HetrickCV/ClockedNoise.svg", {}, -1}, + { "/HetrickCV/Comparator.svg", {}, -1}, + { "/HetrickCV/Contrast.svg", {}, -1}, + { "/HetrickCV/Crackle.svg", {}, -1}, + { "/HetrickCV/DataCompander.svg", {}, -1}, + { "/HetrickCV/Delta.svg", {}, -1}, + { "/HetrickCV/DToA.svg", {}, -1}, + { "/HetrickCV/Dust.svg", {}, -1}, + { "/HetrickCV/Exponent.svg", {}, -1}, + { "/HetrickCV/FBSineChaos.svg", {}, -1}, + { "/HetrickCV/FlipFlop.svg", {}, -1}, + { "/HetrickCV/FlipPan.svg", {}, -1}, + { "/HetrickCV/GateJunction.svg", {}, -1}, + { "/HetrickCV/Gingerbread.svg", {}, -1}, + { "/HetrickCV/LogicCombiner.svg", {}, -1}, + { "/HetrickCV/LogicInverter.svg", {}, -1}, + { "/HetrickCV/MidSide.svg", {}, -1}, + { "/HetrickCV/MinMax.svg", {}, -1}, + { "/HetrickCV/RandomGates.svg", {}, -1}, + { "/HetrickCV/Rotator.svg", {}, -1}, + { "/HetrickCV/Rungler.svg", {}, -1}, + { "/HetrickCV/Scanner.svg", {}, -1}, + { "/HetrickCV/TrigShaper.svg", {}, -1}, + { "/HetrickCV/Waveshape.svg", {}, -1}, + { "/HetrickCV/XYToPolar.svg", {}, -1}, + { "/HetrickCV/Blanks/BlankPanel1.svg", {}, -1}, + { "/HetrickCV/Blanks/BlankPanel2.svg", {}, -1}, + { "/HetrickCV/Blanks/BlankPanel3.svg", {}, -1}, + { "/HetrickCV/Blanks/BlankPanel5.svg", {}, -1}, + { "/HetrickCV/Blanks/BlankPanel6.svg", {}, -1}, + { "/HetrickCV/Blanks/BlankPanel7.svg", {}, -1}, + { "/HetrickCV/Blanks/BlankPanel8.svg", {}, -1}, { "/JW-Modules/Add5.svg", {}, -1 }, { "/JW-Modules/BlankPanel1hp.svg", {}, -1 }, { "/JW-Modules/BlankPanelLarge.svg", {}, -1 },