diff --git a/.gitmodules b/.gitmodules index fadc0938..0b8f15d9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -248,6 +248,9 @@ [submodule "plugins/Biset"] path = plugins/Biset url = https://github.com/gibbonjoyeux/VCV-Biset.git +[submodule "plugins/LOGinstruments"] + path = plugins/LOGinstruments + url = https://github.com/LOGUNIVPM/LOGinstruments.git [submodule "plugins/PdArray"] path = plugins/PdArray url = https://github.com/mgunyho/PdArray.git @@ -263,3 +266,4 @@ [submodule "plugins/eightfold"] path = plugins/eightfold url = https://github.com/scanner-darkly/eightfold.git + diff --git a/README.md b/README.md index 2f6bdb75..58ba5d91 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,7 @@ At the moment the following 3rd-party modules are provided: - [LifeFormModular](https://github.com/TimeControlledOrganism/LifeFormModular) - [Lilac Loop](https://grough.github.io/lilac-loop-vcv) - [Little Utils](https://github.com/mgunyho/Little-Utils) +- [LOGinstruments](https://github.com/LOGUNIVPM/LOGinstruments) - [Lomas Modules](https://github.com/LomasModules/LomasModules) - [Lyrae Modules](https://github.com/VegaDeftwing/LyraeModules) - [Meander](https://github.com/knchaffin/Meander) diff --git a/docs/LICENSES.md b/docs/LICENSES.md index abd14317..074067c4 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -60,6 +60,7 @@ Below follows a list of all code licenses used in Cardinal and linked submodules | LifeFormModular | MIT | | | Lilac Loop | GPL-3.0-or-later | | | Little Utils | EUPL-1.2 | | +| LOGinstruments | BSD-3-Clause | | | Lomas Modules | GPL-3.0-or-later | | | Lyrae Modules | GPL-3.0-or-later | | | Meander | GPL-3.0-or-later | | @@ -211,6 +212,8 @@ Below is a list of artwork licenses from plugins | LittleUtils/fonts/CooperHewitt-*.ttf | OFL-1.1-RFN | | | LittleUtils/fonts/Overpass-*.ttf | OFL-1.1-RFN | | | LittleUtils/fonts/RobotoMono-*.ttf | Apache-2.0 | | +| LOGinstruments/* | BSD-3-Clause | No artwork specific license provided | +| LOGinstruments/DejaVuSansMono.ttf | Bitstream Vera | | | LomasModules/* | GPL-3.0-or-later | [Same license as source code](https://github.com/LomasModules/LomasModules/issues/26) | | LomasModules/Fonts/FiraMono-Bold.ttf | OFL-1.1-RFN | | | LyraeModules/* | CC-BY-NC-SA-4.0 | | diff --git a/plugins/LOGinstruments b/plugins/LOGinstruments new file mode 160000 index 00000000..1fc62faf --- /dev/null +++ b/plugins/LOGinstruments @@ -0,0 +1 @@ +Subproject commit 1fc62fafe66bd622432db895a09ef1e3afc4531c diff --git a/plugins/Makefile b/plugins/Makefile index 45c50b3e..dd2513c8 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -856,6 +856,12 @@ PLUGIN_FILES += $(filter-out LittleUtils/src/plugin.cpp,$(wildcard LittleUtils/s # modules/types which are present in other plugins LITTLEUTILS_CUSTOM = MsDisplayWidget +# -------------------------------------------------------------- +# LOGinstruments + +PLUGIN_FILES += $(filter-out LOGinstruments/src/LOGinstruments.cpp,$(wildcard LOGinstruments/src/*.cpp)) +PLUGIN_FILES += LOGinstruments/src/kiss_fft.c + # -------------------------------------------------------------- # LomasModules @@ -2565,6 +2571,13 @@ $(BUILD_DIR)/LittleUtils/%.cpp.o: LittleUtils/%.cpp $(foreach m,$(LITTLEUTILS_CUSTOM),$(call custom_module_names,$(m),LittleUtils)) \ -DpluginInstance=pluginInstance__LittleUtils +$(BUILD_DIR)/LOGinstruments/src/%.o: LOGinstruments/src/% + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(LOGINSTRUMENTS_CUSTOM),$(call custom_module_names,$(m),LOGinstruments)) \ + -DpluginInstance=pluginInstance__LOGinstruments + $(BUILD_DIR)/LomasModules/%.cpp.o: LomasModules/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 76ace7e4..830e1167 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -612,6 +612,9 @@ extern Model* modelDriftgen; extern Model* modelLooperOne; extern Model* modelLooperTwo; +// LOGinstruments +#include "LOGinstruments/src/LOGinstruments.hpp" + // LomasModules #include "LomasModules/src/plugin.hpp" #undef DR_WAV_IMPLEMENTATION @@ -983,6 +986,7 @@ Plugin* pluginInstance__kocmoc; Plugin* pluginInstance__LifeFormModular; Plugin* pluginInstance__LilacLoop; Plugin* pluginInstance__LittleUtils; +Plugin* pluginInstance__LOGinstruments; Plugin* pluginInstance__Lomas; Plugin* pluginInstance__Lyrae; Plugin* pluginInstance__Meander; @@ -2677,6 +2681,21 @@ static void initStatic__LittleUtils() } } +static void initStatic__LOGinstruments() +{ + Plugin* const p = new Plugin; + pluginInstance__LOGinstruments = p; + + const StaticPluginLoader spl(p, "LOGinstruments"); + if (spl.ok()) + { + p->addModel(modelSpeck); + p->addModel(modelLessMess); + p->addModel(modelVelvet); + p->addModel(modelCrystal); + } +} + static void initStatic__Lomas() { Plugin* const p = new Plugin; @@ -3652,6 +3671,7 @@ void initStaticPlugins() initStatic__LifeFormModular(); initStatic__LilacLoop(); initStatic__LittleUtils(); + initStatic__LOGinstruments(); initStatic__Lomas(); initStatic__Lyrae(); initStatic__Meander(); diff --git a/src/custom/dep.cpp b/src/custom/dep.cpp index 74bbebfd..0f5f5ce9 100644 --- a/src/custom/dep.cpp +++ b/src/custom/dep.cpp @@ -57,6 +57,7 @@ enum DarkMode { kModeESeries, kModeLilacLoop, kModeLittleUtils, + kModeLOGinstruments, kModeKocmoc, kModeMyth, kModeNonlinearcircuits, @@ -268,6 +269,11 @@ static const struct { { kModeLittleUtils, "/LittleUtils/res/PulseGenerator.svg", {}, -1 }, { kModeLittleUtils, "/LittleUtils/res/TeleportIn.svg", {}, -1 }, { kModeLittleUtils, "/LittleUtils/res/TeleportOut.svg", {}, -1 }, + // BSD-3 Clause + { kModeLOGinstruments, "/LOGinstruments/res/crystal-nofonts.svg", {}, -1 }, + { kModeLOGinstruments, "/LOGinstruments/res/LessMess_nofonts.svg", {}, -1 }, + { kModeLOGinstruments, "/LOGinstruments/res/Speck_nofonts2.svg", {}, -1 }, + { kModeLOGinstruments, "/LOGinstruments/res/velvet-nofonts.svg", {}, -1 }, // GPL-3.0-or-later { kModeKocmoc, "/kocmoc/res/DDLY.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/DIOD.svg", {}, -1 }, @@ -631,6 +637,13 @@ bool invertPaintForDarkMode(const DarkMode mode, NSVGshape* const shape, NSVGpai { switch (mode) { + // Special case for LOGinstruments gradient + case kModeLOGinstruments: + // original color from stop 1 was copied to this stop and made ~25% darker + paint.gradient->stops[0].color = 0xd95c5c5c; + // color was made ~75% darker + paint.gradient->stops[1].color = 0xd91f1f1f; + return false; // Special case for PathSet shifty gradient case kModePathSet: paint.gradient->stops[0].color = 0xff7c4919; // 50% darker than main blue @@ -703,6 +716,15 @@ bool invertPaintForDarkMode(const DarkMode mode, NSVGshape* const shape, NSVGpai return true; } break; + // Special case for LOGinstruments + case kModeLOGinstruments: + switch (paint.color) + { + // Don't change Speck scope color + case 0xff1a1a1a: + return false; + } + break; // Special case for Nonlinear Circuits case kModeNonlinearcircuits: switch (paint.color)