diff --git a/.gitmodules b/.gitmodules index 9d450ad..b9e1045 100644 --- a/.gitmodules +++ b/.gitmodules @@ -160,6 +160,9 @@ [submodule "plugins/CatroModulo"] path = plugins/CatroModulo url = https://github.com/catronomix/catro-modulo.git +[submodule "plugins/LilacLoop"] + path = plugins/LilacLoop + url = https://github.com/grough/lilac-loop-vcv.git [submodule "plugins/PathSet"] path = plugins/PathSet url = https://github.com/patheros/PathSetModules.git diff --git a/README.md b/README.md index e9f45cc..eb99a6a 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,7 @@ At the moment the following 3rd-party modules are provided: - Impromptu - JW-Modules - LifeFormModular +- Lilac Loop - Little Utils - Lomas Modules - Lyrae Modules diff --git a/docs/LICENSES.md b/docs/LICENSES.md index b3e5598..041af8f 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -42,6 +42,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | Impromptu | GPL-3.0-or-later | | | JW-Modules | BSD-3-Clause | | | LifeFormModular | MIT | | +| Lilac Loop | GPL-3.0-or-later | | | Little Utils | EUPL-1.2 | | | Lomas Modules | GPL-3.0-or-later | | | Lyrae Modules | GPL-3.0-or-later | | @@ -134,6 +135,7 @@ Below is a list of artwork licenses from plugins | JW-Modules/* | BSD-3-Clause | No artwork specific license provided | | JW-Modules/DejaVuSansMono.ttf | Bitstream-Vera | Unused in Cardinal | | LifeFormModular/* | MIT | No artwork specific license provided | +| LilacLoop/* | GPL-3.0-or-later | No artwork specific license provided | | LittleUtils/* | EUPL-1.2 | Same license as source code | | LittleUtils/fonts/CooperHewitt-*.ttf | OFL-1.1-RFN | | | LittleUtils/fonts/Overpass-*.ttf | OFL-1.1-RFN | | diff --git a/plugins/LilacLoop b/plugins/LilacLoop new file mode 160000 index 0000000..69d8d66 --- /dev/null +++ b/plugins/LilacLoop @@ -0,0 +1 @@ +Subproject commit 69d8d66521175cd561d53e65728d460b398950c9 diff --git a/plugins/Makefile b/plugins/Makefile index fa454ea..8c002df 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -577,6 +577,11 @@ PLUGIN_FILES += $(filter-out LifeFormModular/src/plugin.cpp,$(wildcard LifeFormM # modules/types which are present in other plugins LIFEFORMMODULAR_CUSTOM = IO MS __ct_base __ct_comp +# -------------------------------------------------------------- +# Lilac Loop + +PLUGIN_FILES += $(wildcard LilacLoop/src/*.cpp) + # -------------------------------------------------------------- # LittleUtils @@ -1422,6 +1427,13 @@ $(BUILD_DIR)/LifeFormModular/%.cpp.o: LifeFormModular/%.cpp $(foreach m,$(LIFEFORMMODULAR_CUSTOM),$(call custom_module_names,$(m),LifeFormModular)) \ -DpluginInstance=pluginInstance__LifeFormModular +$(BUILD_DIR)/LilacLoop/%.cpp.o: LilacLoop/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(LILACLOOP_CUSTOM),$(call custom_module_names,$(m),LilacLoop)) \ + -DpluginInstance=pluginInstance__LilacLoop + $(BUILD_DIR)/LittleUtils/%.cpp.o: LittleUtils/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 923d23a..8109cbb 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -431,6 +431,9 @@ extern Model* modelDriftgen; // LittleUtils #include "LittleUtils/src/plugin.hpp" +// Lilac Loop +#include "LilacLoop/src/plugin.hpp" + // LomasModules #include "LomasModules/src/plugin.hpp" #undef DR_WAV_IMPLEMENTATION @@ -660,6 +663,7 @@ extern Plugin* pluginInstance__ImpromptuModular; Plugin* pluginInstance__ihtsyn; Plugin* pluginInstance__JW; Plugin* pluginInstance__LifeFormModular; +Plugin* pluginInstance__LilacLoop; Plugin* pluginInstance__LittleUtils; Plugin* pluginInstance__Lomas; Plugin* pluginInstance__Lyrae; @@ -1794,6 +1798,18 @@ static void initStatic__LifeFormModular() } } +static void initStatic__LilacLoop() +{ + Plugin* const p = new Plugin; + pluginInstance__LilacLoop = p; + + const StaticPluginLoader spl(p, "LilacLoop"); + if (spl.ok()) + { + p->addModel(modelLooperOne); + } +} + static void initStatic__LittleUtils() { Plugin* const p = new Plugin; @@ -2281,6 +2297,7 @@ void initStaticPlugins() initStatic__ihtsyn(); initStatic__JW(); initStatic__LifeFormModular(); + initStatic__LilacLoop(); initStatic__LittleUtils(); initStatic__Lomas(); initStatic__Lyrae(); diff --git a/src/custom/dep.cpp b/src/custom/dep.cpp index 7f97465..4d252a0 100644 --- a/src/custom/dep.cpp +++ b/src/custom/dep.cpp @@ -234,6 +234,8 @@ static const struct { { "/JW-Modules/res/Trigs.svg", {}, -1 }, { "/JW-Modules/res/WavHeadPanel.svg", {}, -1 }, { "/JW-Modules/res/XYPad.svg", {}, -1 }, + // GPL3.0-or-later + { "/LilacLoop/res/Looper.svg", {}, -1 }, // EUPL-1.2 { "/LittleUtils/res/Bias_Semitone.svg", {}, -1 }, { "/LittleUtils/res/ButtonModule.svg", {}, -1 }, @@ -307,6 +309,30 @@ static inline bool invertPaint(NSVGpaint& paint, const char* const svgFileToInve } } + // Special case for Lilac + if (svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/LilacLoop/", 11) == 0) + { + switch (paint.color) + { + // main bg (custom) + case 0xffd5d5da: + paint.color = 0xff242228; + return true; + // main color (do nothing) + case 0xffbfb7d7: + return false; + // screws (hide) + case 0xffc8c8cf: + case 0xffbcbcbc: + case 0xffb1b1bb: + case 0xffacacac: + case 0xff898991: + case 0xff727272: + paint.color = 0x00000000; + return true; + } + } + // Special case for Path Set colors if (svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/PathSet/", 9) == 0) {