diff --git a/.gitmodules b/.gitmodules index b0f5b48..2419ab5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -154,6 +154,24 @@ [submodule "plugins/Orbits"] path = plugins/Orbits url = git@github.com:RareBreeds/Orbits.git +[submodule "plugins/stocaudio"] + path = plugins/stocaudio + url = https://github.com/aptrn/stocaudio-modules.git +[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/kocmoc"] + path = plugins/kocmoc + url = https://github.com/janne808/kocmoc-rack-modules.git +[submodule "plugins/PathSet"] + path = plugins/PathSet + url = https://github.com/patheros/PathSetModules.git +[submodule "plugins/Dintree"] + path = plugins/Dintree + url = https://github.com/hires/Dintree-Virtual.git [submodule "plugins/StarlingVia"] path = plugins/StarlingVia url = https://github.com/starlingcode/Via-for-Rack.git diff --git a/README.md b/README.md index 5127488..b95c0da 100644 --- a/README.md +++ b/README.md @@ -114,8 +114,10 @@ At the moment the following 3rd-party modules are provided: - Befaco - Bidoo - Bogaudio +- Catro/Modulo - cf - ChowDSP +- Dintree Virtual - DrumKit - E-Series - ExpertSleepers Encoders @@ -129,7 +131,9 @@ At the moment the following 3rd-party modules are provided: - ihtsyn - Impromptu - JW-Modules +- kocmoc - LifeFormModular +- Lilac Loop - Little Utils - Lomas Modules - Lyrae Modules @@ -139,11 +143,13 @@ At the moment the following 3rd-party modules are provided: - Mog - mscHack - Orbits +- Path Set - Prism - rackwindows - repelzen - Sonus Modular - Starling Via +- stocaudio - Substation Opensource - Valley - ZetaCarinae diff --git a/deps/Makefile b/deps/Makefile index 924ea9c..1d77f37 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -54,8 +54,8 @@ BASE_FLAGS += -I../include/mingw-compat BASE_FLAGS += -I../include/mingw-std-threads endif -BUILD_C_FLAGS += -fno-finite-math-only -BUILD_CXX_FLAGS += -fno-finite-math-only +BUILD_C_FLAGS += -fno-finite-math-only -fno-strict-aliasing +BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing # Rack code is not tested for this flag, unset it BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS diff --git a/docs/LICENSES.md b/docs/LICENSES.md index 0994526..a9ac135 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -4,7 +4,7 @@ While Cardinal itself is licensed under GPLv3+, some modules/plugins used by it are not. And since Cardinal builds the entire Rack and modules as a static library, -the more restrictive of the **code licenses** will apply to the final binary. +the more restrictive of the **code licenses** will apply to the final binary. Bellow follows a list of all code licenses used in Cardinal and linked submodules. @@ -25,8 +25,10 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | Befaco | GPL-3.0-or-later | | | Bidoo | GPL-3.0-or-later | | | Bogaudio | GPL-3.0-or-later | | +| Catro/Modulo | BSD-3-Clause | | | cf | BSD-3-Clause | | | ChowDSP | GPL-3.0-or-later | | +| Dintree | GPL-3.0-or-later | | | DrumKit | CC0-1.0 | | | E-Series | GPL-3.0-or-later | | | ExpertSleepers Encoders | MIT | | @@ -40,7 +42,9 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | ihtsyn | GPL-3.0-or-later | | | Impromptu | GPL-3.0-or-later | | | JW-Modules | BSD-3-Clause | | +| kocmoc | GPL-3.0-or-later | | | 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 | | @@ -50,11 +54,13 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | Mog | CC0-1.0 | | | mscHack | BSD-3-Clause | | | Orbits | GPL-3.0-or-later | | +| Path Set | GPL-3.0-or-later | | | Prism | BSD-3-Clause | | | Rackwindows | MIT | | | repelzen | GPL-3.0-or-later | | | Sonus Modular | GPL-3.0-or-later | | | Starling Via | MIT | | +| stocaudio | GPL-3.0-or-later | | | Substation Opensource | BSD-3-Clause-Attribution | Need to check full compatibility with GPLv3+ | | Valley | GPL-3.0-or-later | | | ZetaCarinae | GPL-3.0-or-later | | @@ -105,12 +111,15 @@ Below is a list of artwork licenses from plugins | BogaudioModules/fonts/inconsolata*.ttf | OFL-1.1-no-RFN | | | Cardinal/* | CC0-1.0 | | | Cardinal/Miku/Miku.png | CC-BY-NC-3.0 | https://piapro.net/intl/en_for_creators.html | +| CatroModulo/* | BSD-3-Clause | No artwork specific license provided | +| CatroModulo/Segment7Standard.ttf | OFL-1.1-RFN | | | cf/* | BSD-3-Clause | No artwork specific license provided | | cf/DejaVuSansMono.ttf | Bitstream-Vera | | | cf/Segment7Standard.ttf | OFL-1.1-RFN | | | cf/VT323-Regular.ttf | OFL-1.1-no-RFN | | | ChowDSP/* | GPL-3.0-or-later | Same license as source code | | ChowDSP/fonts/RobotoCondensed-*.ttf | Apache-2.0 | | +| Dintree/* | GPL-3.0-or-later | No artwork specific license provided | | DrumKit/* | CC0-1.0 | | | DrumKit/component/NovaMono.ttf | OFL-1.1-RFN | | | E-Series/* | Custom | Copyright © Synthesis Technology, [used and distributed with permission](LICENSE-PERMISSIONS.md#eseries-paul-schreiber--synthtech) | @@ -129,7 +138,9 @@ Below is a list of artwork licenses from plugins | ImpromptuModular/res/comp/complib/* | CC-BY-NC-4.0 | | | JW-Modules/* | BSD-3-Clause | No artwork specific license provided | | JW-Modules/DejaVuSansMono.ttf | Bitstream-Vera | Unused in Cardinal | +| kocmoc/* | GPL-3.0-or-later | No artwork specific license provided | | 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 | | @@ -149,12 +160,14 @@ Below is a list of artwork licenses from plugins | mscHack/* | BSD-3-Clause | No artwork specific license provided, see [mschack#108](https://github.com/mschack/VCV-Rack-Plugins/issues/108) | | Orbits/* | CC-BY-NC-ND-4.0 | | | Orbits/fonts/ShareTechMono-Regular.ttf | OFL-1.1-RFN | | +| PathSet/* | GPL-3.0-or-later | No artwork specific license provided | | Prism/* | CC-BY-SA-4.0 | | | 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 | | | sonusmodular/* | GPL-3.0-or-later | [Same license as source code](https://gitlab.com/sonusdept/sonusmodular/-/issues/14) | | StarlingVia/* | MIT | No artwork specific license provided | +| stocaudio/* | GPL-3.0-or-later | No artwork specific license provided | | substation-opensource/* | BSD-3-Clause-Attribution | No artwork specific license provided | | 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/include/mingw-compat/Shlobj.h b/include/mingw-compat/Shlobj.h index 8ec3bcb..c2a83a3 100644 --- a/include/mingw-compat/Shlobj.h +++ b/include/mingw-compat/Shlobj.h @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021 Filipe Coelho + * Copyright (C) 2021-2022 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -15,4 +15,6 @@ * For a full copy of the GNU General Public License see the LICENSE file. */ +#pragma once + #include diff --git a/include/mingw-compat/Shlwapi.h b/include/mingw-compat/Shlwapi.h index 66aa700..5753bfe 100644 --- a/include/mingw-compat/Shlwapi.h +++ b/include/mingw-compat/Shlwapi.h @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021 Filipe Coelho + * Copyright (C) 2021-2022 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -15,4 +15,6 @@ * For a full copy of the GNU General Public License see the LICENSE file. */ +#pragma once + #include diff --git a/include/mingw-compat/future b/include/mingw-compat/future new file mode 100644 index 0000000..b782903 --- /dev/null +++ b/include/mingw-compat/future @@ -0,0 +1,25 @@ +/* + * DISTRHO Cardinal Plugin + * Copyright (C) 2021-2022 Filipe Coelho + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * For a full copy of the GNU General Public License see the LICENSE file. + */ + +#pragma once +#include_next +#include "mingw.future.h" + +#undef IN +#undef OUT +#undef far +#undef near diff --git a/plugins/CatroModulo b/plugins/CatroModulo new file mode 160000 index 0000000..bf6f969 --- /dev/null +++ b/plugins/CatroModulo @@ -0,0 +1 @@ +Subproject commit bf6f969c5f7fff6a419a54197fb4318671281ad5 diff --git a/plugins/Dintree b/plugins/Dintree new file mode 160000 index 0000000..8d28da2 --- /dev/null +++ b/plugins/Dintree @@ -0,0 +1 @@ +Subproject commit 8d28da2a6083eb6af4b8d559e001fc9afbe2d41f diff --git a/plugins/ExpertSleepers-Encoders b/plugins/ExpertSleepers-Encoders index df096a6..95496e8 160000 --- a/plugins/ExpertSleepers-Encoders +++ b/plugins/ExpertSleepers-Encoders @@ -1 +1 @@ -Subproject commit df096a635fe8d3ea86a1e6451a55e45ccee5b83d +Subproject commit 95496e8a955407889bbab94cf404cf356802bb76 diff --git a/plugins/GrandeModular b/plugins/GrandeModular index 40a1976..33f445d 160000 --- a/plugins/GrandeModular +++ b/plugins/GrandeModular @@ -1 +1 @@ -Subproject commit 40a197698496030a30ead69658b1484eca2ae299 +Subproject commit 33f445d1e3f78aa1f62c8995010303bdb42e0163 diff --git a/plugins/JW-Modules b/plugins/JW-Modules index 68f04a5..f7399c4 160000 --- a/plugins/JW-Modules +++ b/plugins/JW-Modules @@ -1 +1 @@ -Subproject commit 68f04a5a8a1a656e7a3aa7e217524f0feb91167e +Subproject commit f7399c473735c0a5bec95bb40953e781f9a47ca4 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 8f18ce6..a271191 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -429,11 +429,26 @@ PLUGIN_FILES += $(filter-out ChowDSP/src/Credit.cpp,$(wildcard ChowDSP/src/*/*.c PLUGIN_FILES += $(wildcard ChowDSP/src/*/*/*.cpp) PLUGIN_FILES += $(wildcard ChowDSP/lib/r8lib/*.cpp) +# -------------------------------------------------------------- +# CatroModulo + +PLUGIN_FILES += $(wildcard CatroModulo/src/*.cpp) + +# modules/types which are present in other plugins +CATROMODULO_CUSTOM = LowFrequencyOscillator NumDisplayWidget + # -------------------------------------------------------------- # cf PLUGIN_FILES += $(filter-out cf/src/plugin.cpp,$(wildcard cf/src/*.cpp)) +# -------------------------------------------------------------- +# Dintree + +PLUGIN_FILES += $(wildcard Dintree/src/*.cpp) +PLUGIN_FILES += $(wildcard Dintree/src/components/*.cpp) +PLUGIN_FILES += $(wildcard Dintree/src/utils/*.cpp) + # -------------------------------------------------------------- # DrumKit @@ -444,6 +459,7 @@ PLUGIN_FILES += $(wildcard DrumKit/src/model/*.cpp) PLUGIN_FILES += $(wildcard DrumKit/deps/*.cpp) PLUGIN_FILES += $(wildcard DrumKit/deps/SynthDevKit/src/*.cpp) +# modules/types which are present in other plugins DRUMKIT_CUSTOM = ADSR Envelope LowFrequencyOscillator # -------------------------------------------------------------- @@ -466,6 +482,7 @@ PLUGIN_FILES += $(filter-out Extratone/src/plugin.cpp,$(wildcard Extratone/src/* PLUGIN_FILES += $(filter-out FehlerFabrik/src/plugin.cpp,$(wildcard FehlerFabrik/src/*.cpp)) +# modules/types which are present in other plugins FEHLERFABRIK_CUSTOM = Operator Sequencer SlewLimiter # -------------------------------------------------------------- @@ -559,6 +576,14 @@ endif # modules/types which are present in other plugins JW_CUSTOM = PlayHead Quantizer +# -------------------------------------------------------------- +# kocmoc + +PLUGIN_FILES += $(wildcard kocmoc/src/*.cpp) + +# modules/types which are present in other plugins +KOCMOC_CUSTOM = Phasor __ct_base __ct_comp + # -------------------------------------------------------------- # LifeFormModular @@ -567,6 +592,14 @@ 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) + +# modules/types which are present in other plugins +LILACLOOP_CUSTOM = AudioFile Mode + # -------------------------------------------------------------- # LittleUtils @@ -611,7 +644,7 @@ PLUGIN_FILES += $(filter-out ML_modules/src/plugin.cpp,$(wildcard ML_modules/src PLUGIN_FILES += ML_modules/freeverb/revmodel.cpp # modules/types which are present in other plugins -ML_CUSTOM = Quant Quantizer QuantizerWidget SH8 allpass comb revmodel +ML_CUSTOM = Mode Quant Quantizer QuantizerWidget SH8 allpass comb revmodel # -------------------------------------------------------------- # MockbaModular @@ -640,6 +673,11 @@ MSCHACK_CUSTOM_PER_FILE = MAIN_SYNC_CLOCK FILTER_STRUCT FILTER_PARAM_STRUCT OSC_ PLUGIN_FILES += $(wildcard Orbits/src/*.cpp) +# -------------------------------------------------------------- +# Path Set + +PLUGIN_FILES += $(wildcard PathSet/src/*.cpp) + # -------------------------------------------------------------- # Prism @@ -678,6 +716,10 @@ PLUGIN_FILES += $(wildcard StarlingVia/Via/modules/*/*.cpp) # modules/types which are present in other plugins STARLINGVIA_CUSTOM = Scanner +# -------------------------------------------------------------- +# stocaudio +PLUGIN_FILES += $(wildcard stocaudio/src/*.cpp) + # -------------------------------------------------------------- # Substation (Open source release) @@ -795,7 +837,6 @@ BASE_FLAGS += -DARCH_LIN endif BASE_FLAGS += -DBUILDING_PLUGIN_MODULES -BASE_FLAGS += -fno-strict-aliasing BASE_FLAGS += -I../dpf/dgl/src/nanovg BASE_FLAGS += -I../dpf/distrho @@ -865,8 +906,8 @@ BASE_FLAGS += -DHAVE_SNDFILE endif BUILD_C_FLAGS += -std=gnu11 -BUILD_C_FLAGS += -fno-finite-math-only -BUILD_CXX_FLAGS += -fno-finite-math-only +BUILD_C_FLAGS += -fno-finite-math-only -fno-strict-aliasing +BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing # Rack code is not tested for this flag, unset it BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS @@ -1220,6 +1261,13 @@ $(BUILD_DIR)/BogaudioModules/%.cpp.o: BogaudioModules/%.cpp -IBogaudioModules/lib \ -IBogaudioModules/src/dsp +$(BUILD_DIR)/CatroModulo/src/%.cpp.o: CatroModulo/src/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(CATROMODULO_CUSTOM),$(call custom_module_names,$(m),CatroModulo)) \ + -DpluginInstance=pluginInstance__CatroModulo + $(BUILD_DIR)/cf/src/%.cpp.o: cf/src/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" @@ -1240,6 +1288,13 @@ $(BUILD_DIR)/ChowDSP/%.cpp.o: ChowDSP/%.cpp -IChowDSP/lib/chowdsp_utils/DSP/WDF \ -Wno-deprecated-copy +$(BUILD_DIR)/Dintree/%.cpp.o: Dintree/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(DINTREE_CUSTOM),$(call custom_module_names,$(m),Dintree)) \ + -DpluginInstance=pluginInstance__Dintree + $(BUILD_DIR)/DrumKit/%.cpp.o: DrumKit/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" @@ -1399,6 +1454,13 @@ $(BUILD_DIR)/JW-Modules/%.cpp.o: JW-Modules/%.cpp -Wno-unused-but-set-variable \ -Wno-unused-result +$(BUILD_DIR)/kocmoc/%.cpp.o: kocmoc/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(KOCMOC_CUSTOM),$(call custom_module_names,$(m),kocmoc)) \ + -DpluginInstance=pluginInstance__kocmoc + $(BUILD_DIR)/LifeFormModular/%.cpp.o: LifeFormModular/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" @@ -1406,6 +1468,14 @@ $(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 \ + -DSKIP_MINGW_FORMAT + $(BUILD_DIR)/LittleUtils/%.cpp.o: LittleUtils/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" @@ -1483,6 +1553,13 @@ $(BUILD_DIR)/Orbits/%.cpp.o: Orbits/%.cpp $(foreach m,$(ORBITS_CUSTOM),$(call custom_module_names,$(m),Orbits)) \ -DpluginInstance=pluginInstance__Orbits +$(BUILD_DIR)/PathSet/%.cpp.o: PathSet/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(PATHSET_CUSTOM),$(call custom_module_names,$(m),PathSet)) \ + -DpluginInstance=pluginInstance__PathSet + $(BUILD_DIR)/Prism/%.cpp.o: Prism/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" @@ -1528,6 +1605,13 @@ $(BUILD_DIR)/StarlingVia/%.cpp.o: StarlingVia/%.cpp -IStarlingVia/Via/ui/inc \ -I./dep/starling-dsp +$(BUILD_DIR)/stocaudio/%.cpp.o: stocaudio/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(STOCAUDIO_CUSTOM),$(call custom_module_names,$(m),stocaudio)) \ + -DpluginInstance=pluginInstance__stocaudio + $(BUILD_DIR)/substation-%.cpp.o: substation-%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/MindMeldModular b/plugins/MindMeldModular index 621a29f..38e72d4 160000 --- a/plugins/MindMeldModular +++ b/plugins/MindMeldModular @@ -1 +1 @@ -Subproject commit 621a29f3f1b521582fd11ca7f17635d19faa340c +Subproject commit 38e72d454ddb1197ec8225224656135abe6b6609 diff --git a/plugins/PathSet b/plugins/PathSet new file mode 160000 index 0000000..d03e8b4 --- /dev/null +++ b/plugins/PathSet @@ -0,0 +1 @@ +Subproject commit d03e8b486deba4740bc7f15ae95a08d823a7d00a diff --git a/plugins/kocmoc b/plugins/kocmoc new file mode 160000 index 0000000..f2a8c19 --- /dev/null +++ b/plugins/kocmoc @@ -0,0 +1 @@ +Subproject commit f2a8c19f8aa81769e13d085d69a44de5afaacfaa diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 9c7eeb0..d646793 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -267,6 +267,9 @@ extern Model* modelTestVCF; #undef modelVCF #undef modelVCO +// CatroModulo +#include "CatroModulo/src/CatroModulo.hpp" + // cf #include "cf/src/plugin.hpp" @@ -276,6 +279,9 @@ extern Model* modelTestVCF; #include "ChowDSP/src/plugin.cpp" #undef init +// Dintree +#include "Dintree/src/plugin.hpp" + // DrumKit #include "DrumKit/src/DrumKit.hpp" void setupSamples(); @@ -407,6 +413,9 @@ extern Model* modelBlankPanel; #include "JW-Modules/src/JWModules.hpp" #undef modelQuantizer +// kocmoc +#include "kocmoc/src/plugin.hpp" + // LifeFormModular /* NOTE too much noise in original include, do this a different way // #include "LifeFormModular/src/plugin.hpp" @@ -428,6 +437,13 @@ extern Model* modelDriftgen; // LittleUtils #include "LittleUtils/src/plugin.hpp" +// Lilac Loop +/* NOTE too much noise in original include, do this a different way +// #include "LilacLoop/src/plugin.hpp" +*/ +extern Model* modelLooperOne; +extern Model* modelLooperTwo; + // LomasModules #include "LomasModules/src/plugin.hpp" #undef DR_WAV_IMPLEMENTATION @@ -549,6 +565,9 @@ extern Model* modelMaude_221; // Orbits #include "Orbits/src/plugin.hpp" +// Path Set +# include "PathSet/src/plugin.hpp" + // Prism # include "Prism/src/plugin.hpp" @@ -569,11 +588,15 @@ extern Model* modelMaude_221; // sonusmodular #include "sonusmodular/src/sonusmodular.hpp" + // Starling Via #define modelScanner modelStarlingViaScanner #include "StarlingVia/src/starling.hpp" #undef modelScanner +// stocaudio +#include "stocaudio/src/plugin.hpp" + // substation /* NOTE too much noise in original include, do this a different way // "substation-opensource/src/_plugin.hpp" @@ -636,8 +659,10 @@ Plugin* pluginInstance__Bacon; Plugin* pluginInstance__Befaco; Plugin* pluginInstance__Bidoo; Plugin* pluginInstance__BogaudioModules; +Plugin* pluginInstance__CatroModulo; Plugin* pluginInstance__cf; Plugin* pluginInstance__ChowDSP; +Plugin* pluginInstance__Dintree; extern Plugin* pluginInstance__DrumKit; Plugin* pluginInstance__ESeries; Plugin* pluginInstance__ExpertSleepersEncoders; @@ -654,7 +679,9 @@ Plugin* pluginInstance__HetrickCV; extern Plugin* pluginInstance__ImpromptuModular; Plugin* pluginInstance__ihtsyn; Plugin* pluginInstance__JW; +Plugin* pluginInstance__kocmoc; Plugin* pluginInstance__LifeFormModular; +Plugin* pluginInstance__LilacLoop; Plugin* pluginInstance__LittleUtils; Plugin* pluginInstance__Lomas; Plugin* pluginInstance__Lyrae; @@ -664,11 +691,13 @@ Plugin* pluginInstance__MockbaModular; Plugin* pluginInstance__Mog; extern Plugin* pluginInstance__mscHack; Plugin* pluginInstance__Orbits; +Plugin* pluginInstance__PathSet; Plugin* pluginInstance__Prism; Plugin* pluginInstance__rackwindows; Plugin* pluginInstance__repelzen; Plugin* pluginInstance__sonusmodular; Plugin* pluginInstance__StarlingVia; +Plugin* pluginInstance__stocaudio; Plugin* pluginInstance__substation; Plugin* pluginInstance__ValleyAudio; Plugin* pluginInstance__ZetaCarinaeModules; @@ -1281,6 +1310,27 @@ static void initStatic__BogaudioModules() } } +static void initStatic__CatroModulo() +{ + Plugin* const p = new Plugin; + pluginInstance__CatroModulo = p; + + const StaticPluginLoader spl(p, "CatroModulo"); + if (spl.ok()) + { + p->addModel(modelCM1Module); + p->addModel(modelCM2Module); + p->addModel(modelCM3Module); + p->addModel(modelCM4Module); + p->addModel(modelCM5Module); + p->addModel(modelCM6Module); + p->addModel(modelCM7Module); + p->addModel(modelCM8Module); + p->addModel(modelCM9Module); + p->addModel(modelCM10Module); + } +} + static void initStatic__cf() { Plugin* const p = new Plugin; @@ -1348,6 +1398,26 @@ static void initStatic__ChowDSP() } } +static void initStatic__Dintree() +{ + Plugin* const p = new Plugin; + pluginInstance__Dintree = p; + + const StaticPluginLoader spl(p, "Dintree"); + if (spl.ok()) + { + p->addModel(modelV100_Scanner); + p->addModel(modelV101_Dual_Envelope); + p->addModel(modelV102_Output_Mixer); + p->addModel(modelV103_Reverb_Delay); + p->addModel(modelV104_Four_Vs); + p->addModel(modelV105_Quad_CV_Proc); + p->addModel(modelV107_Dual_Slew); + p->addModel(modelV201_Tri_Comparator); + p->addModel(modelV218_SH_Clock_Noise); + } +} + static void initStatic__DrumKit() { Plugin* const p = new Plugin; @@ -1548,11 +1618,13 @@ static void initStatic__GrandeModular() { p->addModel(modelClip); p->addModel(modelLFO3); + p->addModel(modelLogic); p->addModel(modelMerge8); p->addModel(modelMergeSplit4); p->addModel(modelMicrotonalChords); p->addModel(modelMicrotonalNotes); p->addModel(modelNoteMT); + p->addModel(modelPeak); p->addModel(modelPolyMergeResplit); p->addModel(modelPolySplit); p->addModel(modelQuant); @@ -1741,6 +1813,25 @@ static void initStatic__JW() } } +static void initStatic__kocmoc() +{ + Plugin* const p = new Plugin; + pluginInstance__kocmoc= p; + + const StaticPluginLoader spl(p, "kocmoc"); + if (spl.ok()) + { + p->addModel(modelSVF_1); + p->addModel(modelTRG); + p->addModel(modelLADR); + p->addModel(modelOP); + p->addModel(modelPHASR); + p->addModel(modelMUL); + p->addModel(modelSKF); + p->addModel(modelDDLY); + } +} + static void initStatic__LifeFormModular() { Plugin* const p = new Plugin; @@ -1765,6 +1856,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; @@ -2000,6 +2103,20 @@ static void initStatic__Orbits() } } +static void initStatic__PathSet() +{ + Plugin* const p = new Plugin; + pluginInstance__PathSet = p; + + const StaticPluginLoader spl(p, "PathSet"); + if (spl.ok()) + { + p->addModel(modelShiftyMod); + p->addModel(modelIceTray); + p->addModel(modelAstroVibe); + } +} + static void initStatic__Prism() { Plugin* const p = new Plugin; @@ -2105,6 +2222,7 @@ static void initStatic__sonusmodular() } } + static void initStatic__StarlingVia() { Plugin* const p = new Plugin; @@ -2127,6 +2245,20 @@ static void initStatic__StarlingVia() } } +static void initStatic__stocaudio() +{ + Plugin* const p = new Plugin; + pluginInstance__stocaudio = p; + + const StaticPluginLoader spl(p, "stocaudio"); + if (spl.ok()) + { + p->addModel(modelPolyturing); + p->addModel(modelPolydelay); + p->addModel(modelSpread); + } +} + static void initStatic__substation() { Plugin* const p = new Plugin; @@ -2226,8 +2358,10 @@ void initStaticPlugins() initStatic__Befaco(); initStatic__Bidoo(); initStatic__BogaudioModules(); + initStatic__CatroModulo(); initStatic__cf(); initStatic__ChowDSP(); + initStatic__Dintree(); initStatic__DrumKit(); initStatic__ESeries(); initStatic__ExpertSleepersEncoders(); @@ -2244,7 +2378,9 @@ void initStaticPlugins() initStatic__ImpromptuModular(); initStatic__ihtsyn(); initStatic__JW(); + initStatic__kocmoc(); initStatic__LifeFormModular(); + initStatic__LilacLoop(); initStatic__LittleUtils(); initStatic__Lomas(); initStatic__Lyrae(); @@ -2254,11 +2390,13 @@ void initStaticPlugins() initStatic__Mog(); initStatic__mscHack(); initStatic__Orbits(); + initStatic__PathSet(); initStatic__Prism(); initStatic__rackwindows(); initStatic__repelzen(); initStatic__sonusmodular(); initStatic__StarlingVia(); + initStatic__stocaudio(); initStatic__substation(); initStatic__ValleyAudio(); initStatic__ZetaCarinaeModules(); diff --git a/plugins/stocaudio b/plugins/stocaudio new file mode 160000 index 0000000..ed5c85b --- /dev/null +++ b/plugins/stocaudio @@ -0,0 +1 @@ +Subproject commit ed5c85b0d9391c37f4ec4d9de4ef8aa30d94bcd6 diff --git a/src/Makefile b/src/Makefile index e370fa5..f5c196e 100644 --- a/src/Makefile +++ b/src/Makefile @@ -36,7 +36,6 @@ ifeq ($(HAIKU),true) BASE_FLAGS += -I../include/haiku-compat endif -BASE_FLAGS += -fno-strict-aliasing BASE_FLAGS += -DPRIVATE= BASE_FLAGS += -I../dpf/dgl/src/nanovg BASE_FLAGS += -I../dpf/distrho @@ -95,8 +94,8 @@ BASE_FLAGS += -I../include/mingw-std-threads endif BUILD_C_FLAGS += -std=gnu11 -BUILD_C_FLAGS += -fno-finite-math-only -BUILD_CXX_FLAGS += -fno-finite-math-only +BUILD_C_FLAGS += -fno-finite-math-only -fno-strict-aliasing +BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing # use our custom function to invert some colors BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index b3b06d8..fe4022f 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -129,7 +129,6 @@ else BASE_FLAGS += -DARCH_LIN endif -BASE_FLAGS += -fno-strict-aliasing BASE_FLAGS += -DPRIVATE= BASE_FLAGS += -I.. BASE_FLAGS += -I../../dpf/dgl/src/nanovg @@ -170,8 +169,8 @@ BASE_FLAGS += -I../../include/mingw-std-threads endif BUILD_C_FLAGS += -std=gnu11 -BUILD_C_FLAGS += -fno-finite-math-only -BUILD_CXX_FLAGS += -fno-finite-math-only +BUILD_C_FLAGS += -fno-finite-math-only -fno-strict-aliasing +BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing # Rack code is not tested for this flag, unset it BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS diff --git a/src/custom/dep.cpp b/src/custom/dep.cpp index 24c7889..4e89cc1 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 }, @@ -241,16 +243,39 @@ static const struct { { "/LittleUtils/res/PulseGenerator.svg", {}, -1 }, { "/LittleUtils/res/TeleportIn.svg", {}, -1 }, { "/LittleUtils/res/TeleportOut.svg", {}, -1 }, + // GPL-3.0-or-later + { "/kocmoc/res/DDLY.svg", {}, -1 }, + { "/kocmoc/res/LADR.svg", {}, -1 }, + { "/kocmoc/res/MUL.svg", {}, -1 }, + { "/kocmoc/res/OP.svg", {}, -1 }, + { "/kocmoc/res/PHASR.svg", {}, -1 }, + { "/kocmoc/res/SKF.svg", {}, -1 }, + { "/kocmoc/res/SVF.svg", {}, -1 }, + { "/kocmoc/res/TRG.svg", {}, -1 }, + // GPL-3.0-or-later + { "/PathSet/res/AstroVibe.svg", {}, -1 }, + { "/PathSet/res/IceTray.svg", {}, -1 }, + { "/PathSet/res/ShiftyMod.svg", {}, -1 }, }; -static inline bool invertPaint(NSVGpaint& paint, const char* const svgFileToInvert = nullptr) +static inline bool invertPaint(NSVGshape* const shape, NSVGpaint& paint, const char* const svgFileToInvert = nullptr) { - // Special case for DrumKit background grandient - if (paint.type == NSVG_PAINT_LINEAR_GRADIENT && svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/DrumKit/", 9) == 0) + if (paint.type == NSVG_PAINT_LINEAR_GRADIENT && svgFileToInvert != nullptr) { - paint.type = NSVG_PAINT_COLOR; - paint.color = 0xff191919; - return true; + // Special case for DrumKit background gradient + if (std::strncmp(svgFileToInvert, "/DrumKit/", 9) == 0) + { + paint.type = NSVG_PAINT_COLOR; + paint.color = 0xff191919; + return true; + } + // Special case for PathSet shifty gradient + if (std::strncmp(svgFileToInvert, "/PathSet/", 9) == 0) + { + paint.gradient->stops[0].color = 0xff7c4919; // 50% darker than main blue + paint.gradient->stops[1].color = 0xff5b3a1a; // 33.3% darker than main blue + return false; + } } if (paint.type == NSVG_PAINT_NONE) @@ -303,6 +328,86 @@ 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 PathSet colors + if (svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/PathSet/", 9) == 0) + { + switch (paint.color) + { + // main blue tone + case 0xffdf7a1a: + if (shape->opacity == 0.5f && std::strcmp(svgFileToInvert, "/PathSet/res/AstroVibe.svg") == 0) + { + shape->opacity = 0.2f; + return true; + } + if (shape->opacity == 0.25f) + shape->opacity = 0.75f; + return false; + // bottom logo stuff, set to full white + case 0xff000000: + if (shape->stroke.type != NSVG_PAINT_NONE) + { + paint.color = 0xffffffff; + return true; + } + break; + // pink step 2 (pink with 50% opacity on bg) + case 0xffef73ea: + paint.color = 0xff812d7d; + return true; + // pink step 3 (pink with 33.3% opacity on bg) + case 0xfff49ff0: + paint.color = 0xff4d234c; + return true; + // pink and orange + case 0xffe941e2: + case 0xff698efb: + return false; + // blue darker 1 (blue with 50% opacity on bg) + case 0xffde944f: + case 0xffe3b080: + case 0xffe4cbb3: + case 0xfff5c99f: + case 0xfff6d1b0: + paint.color = 0xff7c4919; + return true; + // blue darker 2 (blue with 33.3% opacity on bg) + case 0xffe5d9cd: + case 0xfff8dcc2: + case 0xffe1a265: + paint.color = 0xff5b3a1a; + return true; + // blue darker 3 (blue with 25% opacity on bg) + case 0xffe5cbb3: + paint.color = 0xff4b321a; + return true; + } + } + switch (paint.color) { // scopes or other special things (do nothing) @@ -384,8 +489,8 @@ NSVGimage* nsvgParseFromFileCardinal(const char* const filename, const char* con if (ignore) continue; - if (invertPaint(shape->fill, svgFileToInvert)) - invertPaint(shape->stroke, svgFileToInvert); + if (invertPaint(shape, shape->fill, svgFileToInvert)) + invertPaint(shape, shape->stroke, svgFileToInvert); } return handle;