diff --git a/.gitmodules b/.gitmodules index c2ef577..b2ccb1e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -187,3 +187,6 @@ [submodule "plugins/voxglitch"] path = plugins/voxglitch url = https://github.com/clone45/voxglitch.git +[submodule "plugins/ArableInstruments"] + path = plugins/ArableInstruments + url = https://github.com/CardinalModules/ArableInstruments.git diff --git a/README.md b/README.md index 0c4e9dc..2bf06d0 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,7 @@ At the moment the following 3rd-party modules are provided: - AlgoritmArte - Amalgamated Harmonics - Animated Circuits +- Arable Instruments - Aria Salvatrice - Audible Instruments - Autinn @@ -147,6 +148,7 @@ At the moment the following 3rd-party modules are provided: - MSM - Nonlinear Circuits - Orbits +- Parable Instruments - Path Set - Prism - rackwindows diff --git a/docs/LICENSES.md b/docs/LICENSES.md index ce6dc83..9eb1703 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -19,6 +19,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | AlgoritmArte | GPL-3.0-or-later | | | Amalgamated Harmonics | BSD-3-Clause | | | Animated Circuits | GPL-3.0-or-later | | +| Arable Instruments | GPL-3.0-or-later | | | Aria Salvatrice | GPL-3.0-or-later | | | Audible Instruments | GPL-3.0-or-later | | | Autinn | GPL-3.0-or-later | | @@ -58,6 +59,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule | MSM | MIT | Repo's [LICENSE-dist.md](https://github.com/netboy3/MSM-vcvrack-plugin/issues/10) includes wrong information | | Nonlinear Circuits | CC0-1.0 | | | Orbits | GPL-3.0-or-later | | +| Parable Instruments | GPL-3.0-or-later | | | Path Set | GPL-3.0-or-later | | | Prism | BSD-3-Clause | | | Rackwindows | MIT | | @@ -96,6 +98,7 @@ Below is a list of artwork licenses from plugins | AmalgamatedHarmonics/DSEG*.ttf | OFL-1.1-RFN | | | AmalgamatedHarmonics/Roboto*.ttf | Apache-2.0 | | | AnimatedCircuits/* | CC-BY-NC-SA-4.0 | | +| ArableInstruments/* | Custom | Copyright © Alex Brandt, [used and distributed with permission](https://github.com/adbrant/ArableInstruments/issues/21) | | AriaModules/* | CC-BY-SA-4.0 | | | AriaModules/Arcane/* | CC-BY-NC-SA-3.0 | Unused in Cardinal | | AriaModules/components/* | WTFPL | | @@ -174,6 +177,7 @@ Below is a list of artwork licenses from plugins | nonlinearcircuits/Audiowide-Regular.ttf | OFL-1.1-RFN | | | Orbits/* | CC-BY-NC-ND-4.0 | | | Orbits/fonts/ShareTechMono-Regular.ttf | OFL-1.1-RFN | | +| ParableInstruments/* | Custom | Copyright © Alex Brandt, [used and distributed with permission](https://github.com/adbrant/ArableInstruments/issues/21) | | PathSet/* | GPL-3.0-or-later | No artwork specific license provided | | Prism/* | CC-BY-SA-4.0 | | | Prism/RobotoCondensed-Regular.ttf | Apache-2.0 | | diff --git a/plugins/ArableInstruments b/plugins/ArableInstruments new file mode 160000 index 0000000..890448f --- /dev/null +++ b/plugins/ArableInstruments @@ -0,0 +1 @@ +Subproject commit 890448f087e3ab47eac391f9bcfe03f7bbd2123e diff --git a/plugins/Makefile b/plugins/Makefile index 5409da7..909a5e8 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -261,6 +261,24 @@ AMALGAMATEDHARMONICS_CUSTOM += bogaudio PLUGIN_FILES += $(wildcard AnimatedCircuits/src/Folding/*.cpp) PLUGIN_FILES += $(wildcard AnimatedCircuits/src/LFold/*.cpp) +# -------------------------------------------------------------- +# ArableInstruments + +PLUGIN_FILES += ArableInstruments/src/Clouds.cpp +PLUGIN_FILES += ArableInstruments/eurorack/clouds/dsp/correlator.cc +PLUGIN_FILES += ArableInstruments/eurorack/clouds/dsp/granular_processor.cc +PLUGIN_FILES += ArableInstruments/eurorack/clouds/dsp/mu_law.cc +PLUGIN_FILES += ArableInstruments/eurorack/clouds/dsp/pvoc/frame_transformation.cc +PLUGIN_FILES += ArableInstruments/eurorack/clouds/dsp/pvoc/phase_vocoder.cc +PLUGIN_FILES += ArableInstruments/eurorack/clouds/dsp/pvoc/stft.cc +PLUGIN_FILES += ArableInstruments/eurorack/clouds/resources.cc +PLUGIN_FILES += ArableInstruments/eurorack/stmlib/utils/random.cc +PLUGIN_FILES += ArableInstruments/eurorack/stmlib/dsp/atan.cc +PLUGIN_FILES += ArableInstruments/eurorack/stmlib/dsp/units.cc + +# modules/types which are present in other plugins +ARABLE_CUSTOM = Clouds clouds stmlib + # -------------------------------------------------------------- # Aria @@ -699,6 +717,24 @@ PLUGIN_FILES += $(filter-out nonlinearcircuits/src/NLC.cpp,$(wildcard nonlinearc PLUGIN_FILES += $(wildcard Orbits/src/*.cpp) +# -------------------------------------------------------------- +# ParableInstruments + +PLUGIN_FILES += ParableInstruments/src/Clouds.cpp +PLUGIN_FILES += ParableInstruments/parasites/clouds/dsp/correlator.cc +PLUGIN_FILES += ParableInstruments/parasites/clouds/dsp/granular_processor.cc +PLUGIN_FILES += ParableInstruments/parasites/clouds/dsp/mu_law.cc +PLUGIN_FILES += ParableInstruments/parasites/clouds/dsp/pvoc/frame_transformation.cc +PLUGIN_FILES += ParableInstruments/parasites/clouds/dsp/pvoc/phase_vocoder.cc +PLUGIN_FILES += ParableInstruments/parasites/clouds/dsp/pvoc/stft.cc +PLUGIN_FILES += ParableInstruments/parasites/clouds/resources.cc +PLUGIN_FILES += ParableInstruments/parasites/stmlib/utils/random.cc +PLUGIN_FILES += ParableInstruments/parasites/stmlib/dsp/atan.cc +PLUGIN_FILES += ParableInstruments/parasites/stmlib/dsp/units.cc + +# modules/types which are present in other plugins +PARABLE_CUSTOM = Clouds CustomPanel CloudsWidget FreezeLight clouds stmlib + # -------------------------------------------------------------- # Path Set @@ -826,7 +862,7 @@ VALLEYAUDIO_CUSTOM_PER_FILE = TempoKnob PLUGIN_FILES += $(filter-out voxglitch/src/plugin.cpp,$(wildcard voxglitch/src/*.cpp)) # modules/types which are present in other plugins -VOXGLITCH_CUSTOM = $(DRWAV) Readout +VOXGLITCH_CUSTOM = $(DRWAV) AudioBuffer AudioFile GateSequencer Looper Readout Sequencer SequencerDisplay # -------------------------------------------------------------- # ZetaCarinaeModules @@ -995,6 +1031,7 @@ RESOURCE_FILES = \ $(wildcard */res/*/*/*.ttf)) RESOURCE_FILES += $(wildcard */presets) +RESOURCE_FILES += ArableInstruments/res/Joni.png RESOURCE_FILES += BaconPlugs/res/Keypunch029.json RESOURCE_FILES += BaconPlugs/res/midi/chopin RESOURCE_FILES += BaconPlugs/res/midi/debussy @@ -1007,6 +1044,7 @@ RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityShapes RESOURCE_FILES += MindMeldModular/res/ShapeMaster/MindMeldPresets RESOURCE_FILES += MindMeldModular/res/ShapeMaster/MindMeldShapes RESOURCE_FILES += nonlinearcircuits/res +RESOURCE_FILES += ParableInstruments/res/Neil.png # MOD builds only have LV2 FX variant for now ifeq ($(MOD_BUILD),true) @@ -1223,6 +1261,17 @@ $(BUILD_DIR)/AnimatedCircuits/%.cpp.o: AnimatedCircuits/%.cpp $(foreach m,$(ANIMATEDCIRCUITS_CUSTOM),$(call custom_module_names,$(m),AnimatedCircuits)) \ -DpluginInstance=pluginInstance__AnimatedCircuits +$(BUILD_DIR)/ArableInstruments/%.o: ArableInstruments/% + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(ARABLE_CUSTOM),$(call custom_module_names,$(m),Arable)) \ + -DpluginInstance=pluginInstance__ArableInstruments \ + -DTEST \ + -IArableInstruments/eurorack \ + -Wno-class-memaccess \ + -Wno-unused-local-typedefs + $(BUILD_DIR)/AriaModules/%.cpp.o: AriaModules/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" @@ -1622,6 +1671,18 @@ $(BUILD_DIR)/Orbits/%.cpp.o: Orbits/%.cpp $(foreach m,$(ORBITS_CUSTOM),$(call custom_module_names,$(m),Orbits)) \ -DpluginInstance=pluginInstance__Orbits +$(BUILD_DIR)/ParableInstruments/%.o: ParableInstruments/% + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(PARABLE_CUSTOM),$(call custom_module_names,$(m),Parable)) \ + -DpluginInstance=pluginInstance__ParableInstruments \ + -DPARASITES \ + -DTEST \ + -IArableInstruments/parasites \ + -Wno-class-memaccess \ + -Wno-unused-local-typedefs + $(BUILD_DIR)/PathSet/%.cpp.o: PathSet/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/ParableInstruments/parasites b/plugins/ParableInstruments/parasites new file mode 120000 index 0000000..8e79925 --- /dev/null +++ b/plugins/ParableInstruments/parasites @@ -0,0 +1 @@ +../ArableInstruments/parasites \ No newline at end of file diff --git a/plugins/ParableInstruments/plugin.json b/plugins/ParableInstruments/plugin.json new file mode 100644 index 0000000..a32ff37 --- /dev/null +++ b/plugins/ParableInstruments/plugin.json @@ -0,0 +1,25 @@ +{ + "slug": "ParableInstruments", + "name": "Parable Instruments", + "version": "2.0.0", + "license": "GPL-3.0-or-later", + "brand": "Parable Instruments", + "author": "adbrant", + "authorEmail": "", + "authorUrl": "https://github.com/adbrant/ArableInstruments/blob/master/README.md", + "pluginUrl": "https://github.com/adbrant/ArableInstruments/blob/master/README.md", + "manualUrl": "https://github.com/adbrant/ArableInstruments/blob/master/README.md", + "sourceUrl": "https://github.com/adbrant/ArableInstruments.git", + "donateUrl": "", + "modules": [ + { + "slug": "Neil", + "name": "Neil", + "description": "", + "tags": [ + "Granular", + "Reverb" + ] + } + ] +} diff --git a/plugins/ParableInstruments/res/CKSS_rot_0.svg b/plugins/ParableInstruments/res/CKSS_rot_0.svg new file mode 120000 index 0000000..585ac1f --- /dev/null +++ b/plugins/ParableInstruments/res/CKSS_rot_0.svg @@ -0,0 +1 @@ +../../ArableInstruments/res/CKSS_rot_0.svg \ No newline at end of file diff --git a/plugins/ParableInstruments/res/CKSS_rot_1.svg b/plugins/ParableInstruments/res/CKSS_rot_1.svg new file mode 120000 index 0000000..58a2ff0 --- /dev/null +++ b/plugins/ParableInstruments/res/CKSS_rot_1.svg @@ -0,0 +1 @@ +../../ArableInstruments/res/CKSS_rot_1.svg \ No newline at end of file diff --git a/plugins/ParableInstruments/res/Neil.png b/plugins/ParableInstruments/res/Neil.png new file mode 120000 index 0000000..26dbedb --- /dev/null +++ b/plugins/ParableInstruments/res/Neil.png @@ -0,0 +1 @@ +../../ArableInstruments/res/Neil.png \ No newline at end of file diff --git a/plugins/ParableInstruments/res/Neil.svg b/plugins/ParableInstruments/res/Neil.svg new file mode 120000 index 0000000..04bfc60 --- /dev/null +++ b/plugins/ParableInstruments/res/Neil.svg @@ -0,0 +1 @@ +../../ArableInstruments/res/Neil.svg \ No newline at end of file diff --git a/plugins/ParableInstruments/src/ArableInstruments.hpp b/plugins/ParableInstruments/src/ArableInstruments.hpp new file mode 120000 index 0000000..d44ebde --- /dev/null +++ b/plugins/ParableInstruments/src/ArableInstruments.hpp @@ -0,0 +1 @@ +../../ArableInstruments/src/ArableInstruments.hpp \ No newline at end of file diff --git a/plugins/ParableInstruments/src/Clouds.cpp b/plugins/ParableInstruments/src/Clouds.cpp new file mode 120000 index 0000000..924a7f2 --- /dev/null +++ b/plugins/ParableInstruments/src/Clouds.cpp @@ -0,0 +1 @@ +../../ArableInstruments/src/Clouds.cpp \ No newline at end of file diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 849d784..91f951c 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -42,6 +42,11 @@ // AnimatedCircuits #include "AnimatedCircuits/src/plugin.hpp" +// ArableInstruments +#define modelClouds modelArableClouds +#include "ArableInstruments/src/ArableInstruments.hpp" +#undef modelClouds + // Aria /* NOTE too much noise in original include, do this a different way // #include "AriaModules/src/plugin.hpp" @@ -616,11 +621,16 @@ extern Model* modelBlankPanel; // Orbits #include "Orbits/src/plugin.hpp" +// ParableInstruments +#define modelClouds modelParableClouds +#include "ParableInstruments/src/ArableInstruments.hpp" +#undef modelClouds + // Path Set -# include "PathSet/src/plugin.hpp" +#include "PathSet/src/plugin.hpp" // Prism -# include "Prism/src/plugin.hpp" +#include "Prism/src/plugin.hpp" // rackwindows #include "rackwindows/src/plugin.hpp" @@ -666,7 +676,9 @@ extern Model* modelFilterPlus; #include "ValleyAudio/src/Valley.hpp" // Voxglitch +#define modelLooper modelVoxglitchLooper #include "voxglitch/src/plugin.hpp" +#undef modelLooper // ZetaCarinaeModules #include "ZetaCarinaeModules/src/plugin.hpp" @@ -700,6 +712,7 @@ Plugin* pluginInstance__8Mode; extern Plugin* pluginInstance__AaronStatic; Plugin* pluginInstance__Algoritmarte; Plugin* pluginInstance__AmalgamatedHarmonics; +Plugin* pluginInstance__ArableInstruments; Plugin* pluginInstance__AnimatedCircuits; Plugin* pluginInstance__Aria; Plugin* pluginInstance__AudibleInstruments; @@ -743,6 +756,7 @@ extern Plugin* pluginInstance__mscHack; Plugin* pluginInstance__MSM; Plugin* pluginInstance__nonlinearcircuits; Plugin* pluginInstance__Orbits; +Plugin* pluginInstance__ParableInstruments; Plugin* pluginInstance__PathSet; Plugin* pluginInstance__Prism; Plugin* pluginInstance__rackwindows; @@ -1000,6 +1014,20 @@ static void initStatic__AnimatedCircuits() } } +static void initStatic__ArableInstruments() +{ + Plugin* const p = new Plugin; + pluginInstance__ArableInstruments = p; + + const StaticPluginLoader spl(p, "ArableInstruments"); + if (spl.ok()) + { +#define modelClouds modelArableClouds + p->addModel(modelClouds); +#undef modelClouds + } +} + static void initStatic__Aria() { Plugin* const p = new Plugin; @@ -2260,6 +2288,20 @@ static void initStatic__Orbits() } } +static void initStatic__ParableInstruments() +{ + Plugin* const p = new Plugin; + pluginInstance__ParableInstruments = p; + + const StaticPluginLoader spl(p, "ParableInstruments"); + if (spl.ok()) + { +#define modelClouds modelParableClouds + p->addModel(modelClouds); +#undef modelClouds + } +} + static void initStatic__PathSet() { Plugin* const p = new Plugin; @@ -2442,6 +2484,7 @@ static void initStatic__Voxglitch() const StaticPluginLoader spl(p, "voxglitch"); if (spl.ok()) { +#define modelLooper modelVoxglitchLooper p->addModel(modelAutobreak); p->addModel(modelByteBeat); p->addModel(modelDigitalProgrammer); @@ -2462,6 +2505,7 @@ static void initStatic__Voxglitch() p->addModel(modelWavBank); p->addModel(modelWavBankMC); p->addModel(modelXY); +#undef modelLooper } } @@ -2517,6 +2561,7 @@ void initStaticPlugins() initStatic__Algoritmarte(); initStatic__AmalgamatedHarmonics(); initStatic__AnimatedCircuits(); + initStatic__ArableInstruments(); initStatic__Aria(); initStatic__AudibleInstruments(); initStatic__Autinn(); @@ -2559,6 +2604,7 @@ void initStaticPlugins() initStatic__MSM(); initStatic__nonlinearcircuits(); initStatic__Orbits(); + initStatic__ParableInstruments(); initStatic__PathSet(); initStatic__Prism(); initStatic__rackwindows(); diff --git a/src/custom/dep.cpp b/src/custom/dep.cpp index c0b3c4c..c13442f 100644 --- a/src/custom/dep.cpp +++ b/src/custom/dep.cpp @@ -70,6 +70,8 @@ static const struct { { "/Algoritmarte/res/Planetz.svg", {}, -1 }, { "/Algoritmarte/res/Zefiro.svg", {}, -1 }, // Custom, runtime dark mode used with permission + { "/ArableInstruments/res/Joni.svg", {}, -1 }, + // Custom, runtime dark mode used with permission { "/AudibleInstruments/res/Blinds.svg", {}, -1 }, { "/AudibleInstruments/res/Braids.svg", {}, -1 }, { "/AudibleInstruments/res/Branches.svg", {}, -1 }, @@ -279,6 +281,8 @@ static const struct { { "/nonlinearcircuits/res/NLC - SEGUE.svg", {}, -1 }, { "/nonlinearcircuits/res/squid-axon-papernoise-panel2.svg", {}, -1 }, { "/nonlinearcircuits/res/NLC - STATUES.svg", {}, -1 }, + // Custom, runtime dark mode used with permission + { "/ParableInstruments/res/Neil.svg", {}, -1 }, // GPL-3.0-or-later { "/PathSet/res/AstroVibe.svg", {}, -1 }, { "/PathSet/res/IceTray.svg", {}, -1 },