From 16be7bd7d1aaca4ed3fbe5350f128c5045983896 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 3 Dec 2021 13:26:28 +0000 Subject: [PATCH 1/4] Initial push for Aria modules, WIP Signed-off-by: falkTX --- .gitmodules | 3 + plugins/AriaModules | 1 + plugins/Makefile | 17 ++++++ plugins/plugins.cpp | 121 +++++++++++++++++++++++++++++++++------- plugins/res/AriaModules | 1 + 5 files changed, 122 insertions(+), 21 deletions(-) create mode 160000 plugins/AriaModules create mode 120000 plugins/res/AriaModules diff --git a/.gitmodules b/.gitmodules index d94f615..8c06da4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -79,3 +79,6 @@ [submodule "plugins/repelzen"] path = plugins/repelzen url = https://github.com/wiqid/repelzen.git +[submodule "plugins/AriaModules"] + path = plugins/AriaModules + url = https://github.com/CardinalModules/AriaModules.git diff --git a/plugins/AriaModules b/plugins/AriaModules new file mode 160000 index 0000000..0d095aa --- /dev/null +++ b/plugins/AriaModules @@ -0,0 +1 @@ +Subproject commit 0d095aa1aad140f8fa9834c85f689abf5d545abd diff --git a/plugins/Makefile b/plugins/Makefile index 8ed70cb..2599574 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -207,6 +207,16 @@ AMALGAMATEDHARMONICS_CUSTOM += bogaudio PLUGIN_FILES += $(wildcard AnimatedCircuits/src/Folding/*.cpp) +# -------------------------------------------------------------- +# Aria + +ARIA_TODO = Qqqq + +PLUGIN_FILES += $(filter-out AriaModules/src/plugin.cpp $(ARIA_TODO:%=AriaModules/src/%.cpp),$(wildcard AriaModules/src/*.cpp)) + +# modules/types which are present in other plugins +ARIA_CUSTOM = Blank + # -------------------------------------------------------------- # AS @@ -775,6 +785,13 @@ $(BUILD_DIR)/AnimatedCircuits/%.cpp.o: AnimatedCircuits/%.cpp $(foreach m,$(ANIMATEDCIRCUITS_CUSTOM),$(call custom_module_names,$(m),AnimatedCircuits)) \ -DpluginInstance=pluginInstance__AnimatedCircuits +$(BUILD_DIR)/AriaModules/%.cpp.o: AriaModules/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(ARIA_CUSTOM),$(call custom_module_names,$(m),Aria)) \ + -DpluginInstance=pluginInstance__Aria + $(BUILD_DIR)/AS/%.cpp.o: AS/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 16071ad..611ef22 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -30,6 +30,36 @@ // AnimatedCircuits #include "AnimatedCircuits/src/plugin.hpp" +// Aria +/* NOTE too much noise in original include, do this a different way +// #include "AriaModules/src/plugin.hpp" +*/ +#define modelBlank modelAriaBlank +extern Model *modelSplort; +extern Model *modelSmerge; +extern Model *modelSpleet; +extern Model *modelSwerge; +extern Model *modelSplirge; +// extern Model *modelSrot; +extern Model *modelQqqq; +extern Model *modelQuack; +extern Model *modelQ; +extern Model *modelQuale; +extern Model *modelDarius; +extern Model *modelSolomon4; +extern Model *modelSolomon8; +extern Model *modelSolomon16; +extern Model *modelArcane; +extern Model *modelAtout; +extern Model *modelAleister; +extern Model *modelPsychopump; +extern Model *modelPokies4; +extern Model *modelGrabby; +extern Model *modelRotatoes4; +extern Model *modelUndular; +extern Model *modelBlank; +#undef modelBlank + // AS #define modelADSR modelASADSR #define modelVCA modelASVCA @@ -327,6 +357,7 @@ Plugin* pluginInstance__Cardinal; #ifndef NOPLUGINS Plugin* pluginInstance__AmalgamatedHarmonics; Plugin* pluginInstance__AnimatedCircuits; +Plugin* pluginInstance__Aria; Plugin* pluginInstance__AS; Plugin* pluginInstance__Atelier; Plugin* pluginInstance__AudibleInstruments; @@ -429,6 +460,29 @@ struct StaticPluginLoader { { return rootJ != nullptr; } + + void removeModule(const char* const slugToRemove) const noexcept + { + json_t* const modules = json_object_get(rootJ, "modules"); + DISTRHO_SAFE_ASSERT_RETURN(modules != nullptr,); + + size_t i; + json_t* v; + json_array_foreach(modules, i, v) + { + if (json_t* const slug = json_object_get(v, "slug")) + { + if (const char* const value = json_string_value(slug)) + { + if (std::strcmp(value, slugToRemove) == 0) + { + json_array_remove(modules, i); + break; + } + } + } + } + } }; static void initStatic__Core() @@ -516,6 +570,50 @@ static void initStatic__AnimatedCircuits() } } +static void initStatic__Aria() +{ + Plugin* const p = new Plugin; + pluginInstance__Aria = p; + + const StaticPluginLoader spl(p, "AriaModules"); + if (spl.ok()) + { +#define modelBlank modelAriaBlank + p->addModel(modelSplort); + p->addModel(modelSmerge); + p->addModel(modelSpleet); + p->addModel(modelSwerge); + p->addModel(modelSplirge); + // p->addModel(modelSrot); + /* TODO needs quickjs + p->addModel(modelQqqq); + p->addModel(modelQuack); + p->addModel(modelQ); + p->addModel(modelQuale); + */ + p->addModel(modelDarius); + p->addModel(modelSolomon4); + p->addModel(modelSolomon8); + p->addModel(modelSolomon16); + p->addModel(modelArcane); + p->addModel(modelAtout); + p->addModel(modelAleister); + p->addModel(modelPsychopump); + p->addModel(modelPokies4); + p->addModel(modelGrabby); + p->addModel(modelRotatoes4); + p->addModel(modelUndular); + p->addModel(modelBlank); +#undef modelBlank + // NOTE disabled in Cardinal due to curl usage + // TODO finalize this + spl.removeModule("Qqqq"); + spl.removeModule("Quack"); + spl.removeModule("Q"); + spl.removeModule("Quale"); + } +} + static void initStatic__AS() { Plugin* const p = new Plugin; @@ -711,27 +809,7 @@ static void initStatic__Bidoo() // NOTE disabled in Cardinal due to curl usage // p->addModel(modelANTN); - - // intentionally remove known bad plugin - if (json_t* const modules = json_object_get(spl.rootJ, "modules")) - { - size_t i; - json_t* v; - json_array_foreach(modules, i, v) - { - if (json_t* const slug = json_object_get(v, "slug")) - { - if (const char* const value = json_string_value(slug)) - { - if (std::strcmp(value, "antN") == 0) - { - json_array_remove(modules, i); - break; - } - } - } - } - } + spl.removeModule("antN"); } } @@ -1289,6 +1367,7 @@ void initStaticPlugins() #ifndef NOPLUGINS initStatic__AmalgamatedHarmonics(); initStatic__AnimatedCircuits(); + initStatic__Aria(); initStatic__AS(); initStatic__Atelier(); initStatic__AudibleInstruments(); diff --git a/plugins/res/AriaModules b/plugins/res/AriaModules new file mode 120000 index 0000000..eaaeefa --- /dev/null +++ b/plugins/res/AriaModules @@ -0,0 +1 @@ +../AriaModules/res/ \ No newline at end of file From 5bd054399d033b1ae1325f1ecc18523184f3b032 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 3 Dec 2021 17:56:22 +0000 Subject: [PATCH 2/4] Remove Arcane from Aria's modules Signed-off-by: falkTX --- plugins/Makefile | 2 +- plugins/plugins.cpp | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/plugins/Makefile b/plugins/Makefile index 2599574..1d46583 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -212,7 +212,7 @@ PLUGIN_FILES += $(wildcard AnimatedCircuits/src/Folding/*.cpp) ARIA_TODO = Qqqq -PLUGIN_FILES += $(filter-out AriaModules/src/plugin.cpp $(ARIA_TODO:%=AriaModules/src/%.cpp),$(wildcard AriaModules/src/*.cpp)) +PLUGIN_FILES += $(filter-out AriaModules/src/Arcane.cpp AriaModules/src/plugin.cpp $(ARIA_TODO:%=AriaModules/src/%.cpp),$(wildcard AriaModules/src/*.cpp)) # modules/types which are present in other plugins ARIA_CUSTOM = Blank diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 611ef22..a967a4f 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -49,9 +49,6 @@ extern Model *modelDarius; extern Model *modelSolomon4; extern Model *modelSolomon8; extern Model *modelSolomon16; -extern Model *modelArcane; -extern Model *modelAtout; -extern Model *modelAleister; extern Model *modelPsychopump; extern Model *modelPokies4; extern Model *modelGrabby; @@ -595,9 +592,6 @@ static void initStatic__Aria() p->addModel(modelSolomon4); p->addModel(modelSolomon8); p->addModel(modelSolomon16); - p->addModel(modelArcane); - p->addModel(modelAtout); - p->addModel(modelAleister); p->addModel(modelPsychopump); p->addModel(modelPokies4); p->addModel(modelGrabby); @@ -605,8 +599,12 @@ static void initStatic__Aria() p->addModel(modelUndular); p->addModel(modelBlank); #undef modelBlank - // NOTE disabled in Cardinal due to curl usage - // TODO finalize this + // NOTE disabled in Cardinal due to online requirement + spl.removeModule("Arcane"); + spl.removeModule("Atout"); + spl.removeModule("Aleister"); + + // TODO build quickjs spl.removeModule("Qqqq"); spl.removeModule("Quack"); spl.removeModule("Q"); From a2bd1a6e8385e774f4ece5cca56e02511e8a0fe3 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 3 Dec 2021 19:34:42 +0000 Subject: [PATCH 3/4] Update aria's modules step 1: get lights to work Signed-off-by: falkTX --- plugins/AriaModules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/AriaModules b/plugins/AriaModules index 0d095aa..20d96fa 160000 --- a/plugins/AriaModules +++ b/plugins/AriaModules @@ -1 +1 @@ -Subproject commit 0d095aa1aad140f8fa9834c85f689abf5d545abd +Subproject commit 20d96fa86b7fff105de8892567bc2d2cf6c03fa2 From b362a26149ae8c41458e1f2bc55b9165d4d740da Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 3 Dec 2021 22:34:47 +0000 Subject: [PATCH 4/4] Get Qqqq modules to work Signed-off-by: falkTX --- deps/Makefile | 33 ++++++++++++++++++++++++++++++++- plugins/AriaModules | 2 +- plugins/Makefile | 4 +--- plugins/plugins.cpp | 8 -------- src/Makefile.cardinal.mk | 1 + 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/deps/Makefile b/deps/Makefile index 56cb413..9a1ecc3 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -130,7 +130,7 @@ DEP_MAKE += DEP_MAC_SDK_FLAGS= DEP_MAKE += MACHINE=$(MACHINE)$(MACHINE_SUFFIX) # -------------------------------------------------------------- -# VCV internal dependencies target +# Rack internal dependencies target $(DEP_PATH)/lib/%.a: $(DEP_MAKE) -C $(DEP_PATH) lib/$*.a @@ -176,10 +176,40 @@ $(DEP_PATH)/zstd-1.4.5/.stamp-patched: sed -i -e "142,144d" $(DEP_PATH)/zstd-1.4.5/programs/util.c touch $@ +# -------------------------------------------------------------- +# QuickJS target, needed for AriaModules + +QUICKJS_MAKE_FLAGS = CFLAGS="$(BUILD_C_FLAGS) -D_GNU_SOURCE -DCONFIG_VERSION='\"Cardinal\"' -w" +QUICKJS_MAKE_FLAGS += PROGS=libquickjs.a + +ifeq ($(WITH_LTO),true) +QUICKJS_MAKE_FLAGS += CONFIG_LTO=y +else +QUICKJS_MAKE_FLAGS += CONFIG_LTO=n +endif + +ifeq ($(WINDOWS),true) +QUICKJS_MAKE_FLAGS += CONFIG_WIN32=y +else ifeq ($(MACOS),true) +QUICKJS_MAKE_FLAGS += CONFIG_DARWIN=y +endif + +$(DEP_PATH)/lib/libquickjs.a: $(DEP_PATH)/QuickJS + $(DEP_MAKE) $(QUICKJS_MAKE_FLAGS) -C $(DEP_PATH)/QuickJS + install -d $(DEP_PATH)/include + install -d $(DEP_PATH)/lib + install -m644 $(DEP_PATH)/QuickJS/libquickjs.a $@ + install -m644 $(DEP_PATH)/QuickJS/quickjs.h $(DEP_PATH)/include/quickjs.h + +$(DEP_PATH)/QuickJS: + git clone "https://github.com/JerrySievert/QuickJS.git" $(DEP_PATH)/QuickJS + git -C $(DEP_PATH)/QuickJS checkout b70d5344013836544631c361ae20569b978176c9 + # -------------------------------------------------------------- # Build targets TARGETS += $(DEP_PATH)/lib/libjansson.a +TARGETS += $(DEP_PATH)/lib/libquickjs.a TARGETS += $(DEP_PATH)/lib/libsamplerate.a TARGETS += $(DEP_PATH)/lib/libspeexdsp.a @@ -206,5 +236,6 @@ clean: rm -rf $(DEP_PATH)/libsamplerate-0.1.9 rm -rf $(DEP_PATH)/speexdsp-SpeexDSP-1.2rc3 rm -rf $(DEP_PATH)/zstd-1.4.5 + rm -rf $(DEP_PATH)/QuickJS # -------------------------------------------------------------- diff --git a/plugins/AriaModules b/plugins/AriaModules index 20d96fa..90f8009 160000 --- a/plugins/AriaModules +++ b/plugins/AriaModules @@ -1 +1 @@ -Subproject commit 20d96fa86b7fff105de8892567bc2d2cf6c03fa2 +Subproject commit 90f8009e1431341225c616bb3a9c250b02bce2c1 diff --git a/plugins/Makefile b/plugins/Makefile index 1d46583..8fbb619 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -210,9 +210,7 @@ PLUGIN_FILES += $(wildcard AnimatedCircuits/src/Folding/*.cpp) # -------------------------------------------------------------- # Aria -ARIA_TODO = Qqqq - -PLUGIN_FILES += $(filter-out AriaModules/src/Arcane.cpp AriaModules/src/plugin.cpp $(ARIA_TODO:%=AriaModules/src/%.cpp),$(wildcard AriaModules/src/*.cpp)) +PLUGIN_FILES += $(filter-out AriaModules/src/Arcane.cpp AriaModules/src/plugin.cpp,$(wildcard AriaModules/src/*.cpp)) # modules/types which are present in other plugins ARIA_CUSTOM = Blank diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index a967a4f..a2dd9d5 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -582,12 +582,10 @@ static void initStatic__Aria() p->addModel(modelSwerge); p->addModel(modelSplirge); // p->addModel(modelSrot); - /* TODO needs quickjs p->addModel(modelQqqq); p->addModel(modelQuack); p->addModel(modelQ); p->addModel(modelQuale); - */ p->addModel(modelDarius); p->addModel(modelSolomon4); p->addModel(modelSolomon8); @@ -603,12 +601,6 @@ static void initStatic__Aria() spl.removeModule("Arcane"); spl.removeModule("Atout"); spl.removeModule("Aleister"); - - // TODO build quickjs - spl.removeModule("Qqqq"); - spl.removeModule("Quack"); - spl.removeModule("Q"); - spl.removeModule("Quale"); } } diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 851200b..c4f4e58 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -96,6 +96,7 @@ RACK_EXTRA_LIBS += ../rack.a ifneq ($(SYSDEPS),true) RACK_EXTRA_LIBS += ../Rack/dep/lib/libjansson.a +RACK_EXTRA_LIBS += ../Rack/dep/lib/libquickjs.a RACK_EXTRA_LIBS += ../Rack/dep/lib/libsamplerate.a RACK_EXTRA_LIBS += ../Rack/dep/lib/libspeexdsp.a ifeq ($(WINDOWS),true)