| @@ -184,3 +184,6 @@ | |||
| [submodule "plugins/nonlinearcircuits"] | |||
| path = plugins/nonlinearcircuits | |||
| url = https://github.com/mhetrick/nonlinearcircuits.git | |||
| [submodule "plugins/voxglitch"] | |||
| path = plugins/voxglitch | |||
| url = https://github.com/clone45/voxglitch.git | |||
| @@ -155,6 +155,7 @@ At the moment the following 3rd-party modules are provided: | |||
| - stocaudio | |||
| - Substation Opensource | |||
| - Valley | |||
| - Voxglitch | |||
| - ZetaCarinae | |||
| - ZZC | |||
| @@ -66,6 +66,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | |||
| | Sonus Modular | GPL-3.0-or-later | | | |||
| | stocaudio | GPL-3.0-or-later | | | |||
| | Valley | GPL-3.0-or-later | | | |||
| | Voxglitch | GPL-3.0-or-later | [License still to be applied in the repo](https://github.com/clone45/voxglitch/issues/123) | | |||
| | ZetaCarinae | GPL-3.0-or-later | | | |||
| | ZZC | GPL-3.0-or-later | | | |||
| @@ -185,6 +186,8 @@ Below is a list of artwork licenses from plugins | |||
| | ValleyAudio/din1451alt.ttf | CC-BY-3.0-DE | | | |||
| | ValleyAudio/DSEG14Classic-*.ttf | OFL-1.1-RFN | | | |||
| | ValleyAudio/ShareTechMono-*.ttf | OFL-1.1-RFN | | | |||
| | voxglitch/* | BSD-3-Clause | No artwork specific license provided | | |||
| | voxglitch/ShareTechMono-Regular.ttf | OFL-1.1-RFN | | | |||
| | ZetaCarinaeModules/* | GPL-3.0-or-later | [Same license as source code](https://github.com/mhampton/ZetaCarinaeModules/issues/8) | | |||
| | ZZC/* | CC-BY-NC-SA-4.0 | | | |||
| | ZZC/panels/* | CC-BY-NC-SA-4.0 | NOTE: The ZZC Logo is Copyright (c) 2019 Sergey Ukolov and cannot be used in derivative works; Cardinal's use does not officially constitute derivative work. | | |||
| @@ -820,6 +820,14 @@ PLUGIN_BINARIES += ValleyAudio/src/XFADE.bin | |||
| VALLEYAUDIO_CUSTOM = $(DRWAV) DigitalDisplay | |||
| VALLEYAUDIO_CUSTOM_PER_FILE = TempoKnob | |||
| # -------------------------------------------------------------- | |||
| # Voxglitch | |||
| PLUGIN_FILES += $(filter-out voxglitch/src/plugin.cpp,$(wildcard voxglitch/src/*.cpp)) | |||
| # modules/types which are present in other plugins | |||
| VOXGLITCH_CUSTOM = $(DRWAV) Readout | |||
| # -------------------------------------------------------------- | |||
| # ZetaCarinaeModules | |||
| @@ -1679,6 +1687,13 @@ $(BUILD_DIR)/ValleyAudio/%.cpp.o: ValleyAudio/%.cpp | |||
| -Wno-sign-compare \ | |||
| -Wno-unused-but-set-variable | |||
| $(BUILD_DIR)/voxglitch/%.cpp.o: voxglitch/%.cpp | |||
| -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | |||
| @echo "Compiling $<" | |||
| $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ | |||
| $(foreach m,$(VOXGLITCH_CUSTOM),$(call custom_module_names,$(m),Voxglitch)) \ | |||
| -DpluginInstance=pluginInstance__Voxglitch | |||
| $(BUILD_DIR)/ZetaCarinaeModules/%.cpp.o: ZetaCarinaeModules/%.cpp | |||
| -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | |||
| @echo "Compiling $<" | |||
| @@ -665,6 +665,9 @@ extern Model* modelFilterPlus; | |||
| // ValleyAudio | |||
| #include "ValleyAudio/src/Valley.hpp" | |||
| // Voxglitch | |||
| #include "voxglitch/src/plugin.hpp" | |||
| // ZetaCarinaeModules | |||
| #include "ZetaCarinaeModules/src/plugin.hpp" | |||
| @@ -748,6 +751,7 @@ Plugin* pluginInstance__sonusmodular; | |||
| Plugin* pluginInstance__stocaudio; | |||
| Plugin* pluginInstance__substation; | |||
| Plugin* pluginInstance__ValleyAudio; | |||
| Plugin* pluginInstance__Voxglitch; | |||
| Plugin* pluginInstance__ZetaCarinaeModules; | |||
| Plugin* pluginInstance__ZZC; | |||
| #endif // NOPLUGINS | |||
| @@ -2430,6 +2434,37 @@ static void initStatic__ValleyAudio() | |||
| } | |||
| } | |||
| static void initStatic__Voxglitch() | |||
| { | |||
| Plugin* p = new Plugin; | |||
| pluginInstance__Voxglitch = p; | |||
| const StaticPluginLoader spl(p, "voxglitch"); | |||
| if (spl.ok()) | |||
| { | |||
| p->addModel(modelAutobreak); | |||
| p->addModel(modelByteBeat); | |||
| p->addModel(modelDigitalProgrammer); | |||
| p->addModel(modelDigitalSequencer); | |||
| p->addModel(modelDigitalSequencerXP); | |||
| p->addModel(modelGlitchSequencer); | |||
| p->addModel(modelGhosts); | |||
| p->addModel(modelGoblins); | |||
| p->addModel(modelGrainEngine); | |||
| p->addModel(modelGrainEngineMK2); | |||
| p->addModel(modelGrainEngineMK2Expander); | |||
| p->addModel(modelGrainFx); | |||
| p->addModel(modelHazumi); | |||
| p->addModel(modelLooper); | |||
| p->addModel(modelRepeater); | |||
| p->addModel(modelSamplerX8); | |||
| p->addModel(modelSatanonaut); | |||
| p->addModel(modelWavBank); | |||
| p->addModel(modelWavBankMC); | |||
| p->addModel(modelXY); | |||
| } | |||
| } | |||
| static void initStatic__ZetaCarinaeModules() | |||
| { | |||
| Plugin* p = new Plugin; | |||
| @@ -2532,6 +2567,7 @@ void initStaticPlugins() | |||
| initStatic__stocaudio(); | |||
| initStatic__substation(); | |||
| initStatic__ValleyAudio(); | |||
| initStatic__Voxglitch(); | |||
| initStatic__ZetaCarinaeModules(); | |||
| initStatic__ZZC(); | |||
| #endif // NOPLUGINS | |||
| @@ -0,0 +1 @@ | |||
| Subproject commit c391e1a83b73b38125fb007117c40d0f5ee2091c | |||
| @@ -283,6 +283,26 @@ static const struct { | |||
| { "/PathSet/res/AstroVibe.svg", {}, -1 }, | |||
| { "/PathSet/res/IceTray.svg", {}, -1 }, | |||
| { "/PathSet/res/ShiftyMod.svg", {}, -1 }, | |||
| // BSD-3-Clause | |||
| { "/voxglitch/res/autobreak_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/bytebeat_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/digital_programmer_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/digital_sequencer_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/digital_sequencer_xp_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/ghosts_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/glitch_sequencer_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/goblins_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/grain_engine_mk2_expander_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/grain_engine_mk2_front_panel_r3.svg", {}, -1 }, | |||
| { "/voxglitch/res/grain_fx_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/hazumi_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/looper_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/repeater_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/samplerx8_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/satanonaut_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/wav_bank_front_panel.svg", {}, -1 }, | |||
| { "/voxglitch/res/wav_bank_mc_front_panel_v2.svg", {}, -1 }, | |||
| { "/voxglitch/res/xy_front_panel.svg", {}, -1 }, | |||
| }; | |||
| static inline bool invertPaint(NSVGshape* const shape, NSVGpaint& paint, const char* const svgFileToInvert = nullptr) | |||
| @@ -458,6 +478,24 @@ static inline bool invertPaint(NSVGshape* const shape, NSVGpaint& paint, const c | |||
| } | |||
| } | |||
| // Special case for voxglitch colors | |||
| if (svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/voxglitch/", 11) == 0) | |||
| { | |||
| switch (paint.color) | |||
| { | |||
| // wavbank blue | |||
| case 0xffc5ae8a: | |||
| // various black | |||
| case 0xff121212: | |||
| case 0xff2a2828: | |||
| return false; | |||
| // satanonaut | |||
| case 0xff595959: | |||
| paint.color = 0x7f3219ac; | |||
| return true; | |||
| } | |||
| } | |||
| switch (paint.color) | |||
| { | |||
| // scopes or other special things (do nothing) | |||