diff --git a/.gitmodules b/.gitmodules index 4cf547b..ecb4c84 100644 --- a/.gitmodules +++ b/.gitmodules @@ -133,3 +133,6 @@ [submodule "plugins/substation-opensource"] path = plugins/substation-opensource url = https://gitlab.com/falktx/substation-opensource.git +[submodule "plugins/MockbaModular"] + path = plugins/MockbaModular + url = https://github.com/MockbaTheBorg/MockbaModular.git diff --git a/README.md b/README.md index f652236..1975ba2 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,7 @@ At the moment the following 3rd-party modules are provided: - Lomas Modules - Lyrae Modules - MindMeld +- Mockba Modular - Mog - mscHack - Prism diff --git a/docs/LICENSES.md b/docs/LICENSES.md index 5a0bda1..73b2497 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -41,6 +41,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | Lomas Modules | GPL-3.0-or-later | | | Lyrae Modules | GPL-3.0-or-later | | | MindMeld | GPL-3.0-or-later | | +| Mockba Modular | MIT | | | Mog | CC0-1.0 | | | mscHack | BSD-3-Clause | | | Prism | BSD-3-Clause | | @@ -126,6 +127,7 @@ Below is a list of artwork licenses from plugins | LyraeModules/* | CC-BY-NC-SA-4.0 | | | MindMeld/* | CC-BY-NC-ND-4.0 | | | MindMeld/fonts/RobotoCondensed-*.ttf | Apache-2.0 | | +| MockbaModular/* | MIT | No artwork specific license provided | | Mog/* | CC0-1.0 | | | Mog/components/* | CC-BY-NC-4.0 | | | Mog/Exo2-BoldItalic.ttf | OFL-1.1-RFN | | @@ -134,7 +136,7 @@ Below is a list of artwork licenses from plugins | Prism/RobotoCondensed-Regular.ttf | Apache-2.0 | | | Rackwindows/* | MIT | [Same license as source code](https://github.com/n0jo/rackwindows/issues/15) | | repelzen/* | CC-BY-SA-4.0 | | -| Substation Opensource | BSD-3-Clause-Attribution | No artwork specific license provided | +| substation-opensource/* | BSD-3-Clause-Attribution | No artwork specific license provided | | sonusmodular/* | GPL-3.0-or-later | [Same license as source code](https://gitlab.com/sonusdept/sonusmodular/-/issues/14) | | ValleyAudio/* | GPL-3.0-or-later | [Same license as source code](https://github.com/ValleyAudio/ValleyRackFree/issues/73) | | ValleyAudio/din1451alt.ttf | CC-BY-3.0-DE | | diff --git a/plugins/Makefile b/plugins/Makefile index ce6315c..bd53a03 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -581,6 +581,14 @@ PLUGIN_FILES += $(wildcard MindMeldModular/src/Utilities/*.cpp) # modules/types which are present in other plugins MINDMELD_CUSTOM = printNote +# -------------------------------------------------------------- +# MockbaModular + +PLUGIN_FILES += $(filter-out MockbaModular/src/plugin.cpp MockbaModular/src/MockbaModular.cpp MockbaModular/src/UDPClockMaster.cpp MockbaModular/src/UDPClockSlave.cpp,$(wildcard MockbaModular/src/*.cpp)) + +# modules/types which are present in other plugins +MOCKBAMODULAR_CUSTOM = Blank Comparator + # -------------------------------------------------------------- # Mog @@ -598,7 +606,7 @@ MSCHACK_CUSTOM_PER_FILE = MAIN_SYNC_CLOCK FILTER_STRUCT FILTER_PARAM_STRUCT OSC_ # -------------------------------------------------------------- # Prism -PLUGIN_FILES += $(filter-out Prism/src/plugin.cpp, $(wildcard Prism/src/*.cpp)) +PLUGIN_FILES += $(filter-out Prism/src/plugin.cpp,$(wildcard Prism/src/*.cpp)) PLUGIN_FILES += $(wildcard Prism/src/scales/*.cpp) # modules/types which are present in other plugins @@ -1357,6 +1365,13 @@ $(BUILD_DIR)/MindMeldModular/%.cpp.o: MindMeldModular/%.cpp $(foreach m,$(MINDMELD_CUSTOM),$(call custom_module_names,$(m),MindMeld)) \ -DpluginInstance=pluginInstance__MindMeld +$(BUILD_DIR)/MockbaModular/%.cpp.o: MockbaModular/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(MOCKBAMODULAR_CUSTOM),$(call custom_module_names,$(m),MockbaModular)) \ + -DpluginInstance=pluginInstance__MockbaModular + $(BUILD_DIR)/Mog/%.cpp.o: Mog/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/MockbaModular b/plugins/MockbaModular new file mode 160000 index 0000000..479d2c8 --- /dev/null +++ b/plugins/MockbaModular @@ -0,0 +1 @@ +Subproject commit 479d2c8007b2087cdf557a491df25c5b85784a96 diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 9389df6..daacd27 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -446,6 +446,21 @@ extern Model* modelBassMaster; extern Model* modelBassMasterJr; extern Model* modelShapeMaster; +// MockbaModular +#define modelBlank modelMockbaModularBlank +#define modelComparator modelMockbaModularComparator +#include "MockbaModular/src/plugin.hpp" +#undef modelBlank +#undef modelComparator +#include "MockbaModular/src/MockbaModular.hpp" +#undef min +#define saveBack ignoreMockbaModular1 +#define loadBack ignoreMockbaModular2 +#include "MockbaModular/src/MockbaModular.cpp" +#undef saveBack +#undef loadBack +std::string loadBack(int) { return "res/Empty_dark.svg"; } + // Mog #include "Mog/src/plugin.hpp" @@ -577,6 +592,7 @@ Plugin* pluginInstance__LittleUtils; Plugin* pluginInstance__Lomas; Plugin* pluginInstance__Lyrae; extern Plugin* pluginInstance__MindMeld; +Plugin* pluginInstance__MockbaModular; Plugin* pluginInstance__Mog; extern Plugin* pluginInstance__mscHack; Plugin* pluginInstance__Prism; @@ -1703,6 +1719,65 @@ static void initStatic__Mog() } } +static void initStatic__MockbaModular() +{ + Plugin* const p = new Plugin; + pluginInstance__MockbaModular = p; + + const StaticPluginLoader spl(p, "MockbaModular"); + if (spl.ok()) + { +#define modelBlank modelMockbaModularBlank +#define modelComparator modelMockbaModularComparator + p->addModel(modelBlank); + p->addModel(modelFeidah); + p->addModel(modelFeidahS); + p->addModel(modelFiltah); + p->addModel(modelMixah); + p->addModel(modelMixah3); + p->addModel(modelDividah); + p->addModel(modelCountah); + p->addModel(modelSelectah); + p->addModel(modelShapah); + p->addModel(modelHoldah); + p->addModel(modelPannah); + p->addModel(modelReVoltah); + p->addModel(modelCZSaw); + p->addModel(modelCZSquare); + p->addModel(modelCZPulse); + p->addModel(modelCZDblSine); + p->addModel(modelCZSawPulse); + p->addModel(modelCZReso1); + p->addModel(modelCZReso2); + p->addModel(modelCZReso3); + p->addModel(modelCZOsc); + p->addModel(modelMaugTriangle); + p->addModel(modelMaugShark); + p->addModel(modelMaugSaw); + p->addModel(modelMaugSaw2); + p->addModel(modelMaugSquare); + p->addModel(modelMaugSquare2); + p->addModel(modelMaugSquare3); + p->addModel(modelMaugOsc); + p->addModel(modelComparator); + p->addModel(modelDualBUFFER); + p->addModel(modelDualNOT); + p->addModel(modelDualOR); + p->addModel(modelDualNOR); + p->addModel(modelDualAND); + p->addModel(modelDualNAND); + p->addModel(modelDualXOR); + p->addModel(modelDualXNOR); + p->addModel(modelPSelectah); + + // require input files to work + spl.removeModule("UDPClockMaster"); + spl.removeModule("UDPClockSlave"); +#undef modelBlank +#undef modelComparator + } +} + static void initStatic__mscHack() { Plugin* const p = new Plugin; @@ -1960,6 +2035,7 @@ void initStaticPlugins() initStatic__Lomas(); initStatic__Lyrae(); initStatic__MindMeld(); + initStatic__MockbaModular(); initStatic__Mog(); initStatic__mscHack(); initStatic__Prism();