Add DHE modules

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2024-01-06 15:42:08 +01:00
parent 80bda51e7c
commit 43bf3abe0e
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0
7 changed files with 114 additions and 13 deletions

3
.gitmodules vendored
View file

@ -230,3 +230,6 @@
[submodule "plugins/EnigmaCurry"] [submodule "plugins/EnigmaCurry"]
path = plugins/EnigmaCurry path = plugins/EnigmaCurry
url = https://github.com/EnigmaCurry/EnigmaCurry-vcv-pack.git url = https://github.com/EnigmaCurry/EnigmaCurry-vcv-pack.git
[submodule "plugins/DHE-Modules"]
path = plugins/DHE-Modules
url = https://github.com/dhemery/DHE-Modules.git

View file

@ -140,6 +140,7 @@ At the moment the following 3rd-party modules are provided:
- [cf](https://github.com/cfoulc/cf) - [cf](https://github.com/cfoulc/cf)
- [ChowDSP](https://github.com/jatinchowdhury18/ChowDSP-VCV) - [ChowDSP](https://github.com/jatinchowdhury18/ChowDSP-VCV)
- [dBiz](https://github.com/dBiz/dBiz) - [dBiz](https://github.com/dBiz/dBiz)
- [DHE Modules](https://github.com/dhemery/DHE-Modules)
- [DrumKit](https://svmodular.com/plugin/vcv/drumkit.html) - [DrumKit](https://svmodular.com/plugin/vcv/drumkit.html)
- [EnigmaCurry](https://github.com/EnigmaCurry/EnigmaCurry-vcv-pack) - [EnigmaCurry](https://github.com/EnigmaCurry/EnigmaCurry-vcv-pack)
- [E-Series](https://github.com/VCVRack/ESeries) - [E-Series](https://github.com/VCVRack/ESeries)

View file

@ -34,6 +34,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule
| cf | BSD-3-Clause | | | cf | BSD-3-Clause | |
| ChowDSP | GPL-3.0-or-later | | | ChowDSP | GPL-3.0-or-later | |
| dBiz | GPL-3.0-or-later | | | dBiz | GPL-3.0-or-later | |
| DHE-Modules | MIT | |
| DrumKit | CC0-1.0 | | | DrumKit | CC0-1.0 | |
| EnigmaCurry | GPL-3.0-or-later | | | EnigmaCurry | GPL-3.0-or-later | |
| E-Series | GPL-3.0-or-later | | | E-Series | GPL-3.0-or-later | |
@ -159,6 +160,7 @@ Below is a list of artwork licenses from plugins
| dBiz/* | CC-BY-NC-ND-4.0 | | | dBiz/* | CC-BY-NC-ND-4.0 | |
| dBiz/DejaVuSansMono.ttf | Bitstream-Vera | | | dBiz/DejaVuSansMono.ttf | Bitstream-Vera | |
| dBiz/ShareTechMono-Regular.ttf | OFL-1.1 | | | dBiz/ShareTechMono-Regular.ttf | OFL-1.1 | |
| DHE-Modules/* | MIT | Same license as source code |
| DrumKit/* | CC0-1.0 | | | DrumKit/* | CC0-1.0 | |
| DrumKit/component/NovaMono.ttf | OFL-1.1-RFN | | | DrumKit/component/NovaMono.ttf | OFL-1.1-RFN | |
| EnigmaCurry/res/fonts/dseg/* | OFL-1.1-RFN | | | EnigmaCurry/res/fonts/dseg/* | OFL-1.1-RFN | |

1
plugins/DHE-Modules Submodule

@ -0,0 +1 @@
Subproject commit 1d1c286fc69babdb36dfe5fa4fe2856b0f707854

View file

@ -655,6 +655,11 @@ PLUGIN_FILES += $(filter-out dBiz/src/plugin.cpp,$(wildcard dBiz/src/*.cpp))
DBIZ_CUSTOM = Chord DarkDefaultItem Divider FourSeq FourSeqWidget OrangeLight VCA4 Wavefolder darkPanelID lightPanelID DBIZ_CUSTOM = Chord DarkDefaultItem Divider FourSeq FourSeqWidget OrangeLight VCA4 Wavefolder darkPanelID lightPanelID
DBIZ_CUSTOM_PER_FILE = LERP MultiFilter Oscillator calcOutput sineOsc subBank DBIZ_CUSTOM_PER_FILE = LERP MultiFilter Oscillator calcOutput sineOsc subBank
# --------------------------------------------------------------
# DHE-Modules
PLUGIN_FILES += $(filter-out DHE-Modules/src/plugin.cpp,$(wildcard DHE-Modules/src/modules/*/init.cpp))
# -------------------------------------------------------------- # --------------------------------------------------------------
# DrumKit # DrumKit
@ -1390,6 +1395,7 @@ RESOURCE_FILES += BaconPlugs/res/midi/chopin
RESOURCE_FILES += BaconPlugs/res/midi/debussy RESOURCE_FILES += BaconPlugs/res/midi/debussy
RESOURCE_FILES += BaconPlugs/res/midi/goldberg RESOURCE_FILES += BaconPlugs/res/midi/goldberg
RESOURCE_FILES += cf/playeroscs RESOURCE_FILES += cf/playeroscs
RESOURCE_FILES += DHE-Modules/svg
RESOURCE_FILES += DrumKit/res/samples RESOURCE_FILES += DrumKit/res/samples
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityPresets RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityPresets
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityShapes RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityShapes
@ -2216,6 +2222,14 @@ $(BUILD_DIR)/dBiz/src/%.cpp.o: dBiz/src/%.cpp
$(foreach m,$(DBIZ_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),dBiz_$(shell basename $*))) \ $(foreach m,$(DBIZ_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),dBiz_$(shell basename $*))) \
-DpluginInstance=pluginInstance__dBiz -DpluginInstance=pluginInstance__dBiz
$(BUILD_DIR)/DHE-Modules/src/%.cpp.o: DHE-Modules/src/%.cpp
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
@echo "Compiling $<"
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \
$(foreach m,$(DHE_CUSTOM),$(call custom_module_names,$(m),DHE)) \
-DpluginInstance=pluginInstance__DHE \
-IDHE-Modules/src
$(BUILD_DIR)/DrumKit/%.cpp.o: DrumKit/%.cpp $(BUILD_DIR)/DrumKit/%.cpp.o: DrumKit/%.cpp
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
@echo "Compiling $<" @echo "Compiling $<"

View file

@ -1,18 +1,7 @@
/* /*
* DISTRHO Cardinal Plugin * DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> * Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
* * SPDX-License-Identifier: GPL-3.0-or-later
* 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.
*/ */
#include "rack.hpp" #include "rack.hpp"
@ -335,6 +324,26 @@ extern Model* modelTestVCF;
#undef modelFourSeq #undef modelFourSeq
#undef modelVCA4 #undef modelVCA4
// DHEModules
// NOTE very unique way of handling init, needs special handling
namespace dhe {
namespace blossom { void init(Plugin*); }
namespace buttons { void init(Plugin*); }
namespace cubic { void init(Plugin*); }
namespace curve_sequencer { void init(Plugin*); }
namespace envelope { void init(Plugin*); }
namespace func { void init(Plugin*); }
namespace fuzzy_logic { void init(Plugin*); }
namespace gator { void init(Plugin*); }
namespace ranger { void init(Plugin*); }
namespace scannibal { void init(Plugin*); }
namespace sequencizer { void init(Plugin*); }
namespace swave { void init(Plugin*); }
namespace tapers { void init(Plugin*); }
namespace truth { void init(Plugin*); }
namespace xycloid { void init(Plugin*); }
}
// DrumKit // DrumKit
#include "DrumKit/src/DrumKit.hpp" #include "DrumKit/src/DrumKit.hpp"
void setupSamples(); void setupSamples();
@ -821,6 +830,7 @@ Plugin* pluginInstance__CatroModulo;
Plugin* pluginInstance__cf; Plugin* pluginInstance__cf;
Plugin* pluginInstance__ChowDSP; Plugin* pluginInstance__ChowDSP;
Plugin* pluginInstance__dBiz; Plugin* pluginInstance__dBiz;
Plugin* pluginInstance__DHE;
extern Plugin* pluginInstance__DrumKit; extern Plugin* pluginInstance__DrumKit;
Plugin* pluginInstance__EnigmaCurry; Plugin* pluginInstance__EnigmaCurry;
Plugin* pluginInstance__ESeries; Plugin* pluginInstance__ESeries;
@ -1835,6 +1845,32 @@ static void initStatic__dBiz()
} }
} }
static void initStatic__DHE()
{
Plugin* const p = new Plugin;
pluginInstance__DHE = p;
const StaticPluginLoader spl(p, "DHE-Modules");
if (spl.ok())
{
dhe::blossom::init(p);
dhe::buttons::init(p);
dhe::cubic::init(p);
dhe::curve_sequencer::init(p);
dhe::envelope::init(p);
dhe::func::init(p);
dhe::fuzzy_logic::init(p);
dhe::gator::init(p);
dhe::ranger::init(p);
dhe::scannibal::init(p);
dhe::sequencizer::init(p);
dhe::swave::init(p);
dhe::tapers::init(p);
dhe::truth::init(p);
dhe::xycloid::init(p);
}
}
static void initStatic__DrumKit() static void initStatic__DrumKit()
{ {
Plugin* const p = new Plugin; Plugin* const p = new Plugin;
@ -3116,6 +3152,7 @@ void initStaticPlugins()
initStatic__cf(); initStatic__cf();
initStatic__ChowDSP(); initStatic__ChowDSP();
initStatic__dBiz(); initStatic__dBiz();
initStatic__DHE();
initStatic__DrumKit(); initStatic__DrumKit();
initStatic__EnigmaCurry(); initStatic__EnigmaCurry();
initStatic__ESeries(); initStatic__ESeries();

View file

@ -74,6 +74,7 @@ enum DarkMode {
kModeAudibleInstruments, kModeAudibleInstruments,
kModeBidoo, kModeBidoo,
kModeCf, kModeCf,
kModeDHE,
kModeDrumKit, kModeDrumKit,
kModeESeries, kModeESeries,
kModeHetrickCV, kModeHetrickCV,
@ -226,6 +227,35 @@ static const struct {
{ kModeCf, "/cf/res/SUB.svg", {}, -1 }, { kModeCf, "/cf/res/SUB.svg", {}, -1 },
{ kModeCf, "/cf/res/trSEQ.svg", {}, -1 }, { kModeCf, "/cf/res/trSEQ.svg", {}, -1 },
{ kModeCf, "/cf/res/VARIABLE.svg", {}, -1 }, { kModeCf, "/cf/res/VARIABLE.svg", {}, -1 },
// MIT
{ kModeDHE, "/DHE-Modules/svg/blossom.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/booster-stage.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/buttons.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/cubic.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/curve-sequencer-4.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/curve-sequencer-8.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/curve-sequencer-16.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/func.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/func-6.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/fuzzy-logic-h.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/fuzzy-logic-z.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/gator.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/hostage.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/ranger.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/scannibal-4.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/scannibal-8.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/scannibal-16.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/sequencizer-4.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/sequencizer-8.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/sequencizer-16.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/stage.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/swave.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/tapers.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/truth-2.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/truth-3.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/truth-4.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/upstage.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/xycloid.svg", {}, -1 },
// CC0-1.0 // CC0-1.0
{ kModeDrumKit, "/DrumKit/res/Baronial.svg", {}, -1 }, { kModeDrumKit, "/DrumKit/res/Baronial.svg", {}, -1 },
{ kModeDrumKit, "/DrumKit/res/BD9.svg", {}, -1 }, { kModeDrumKit, "/DrumKit/res/BD9.svg", {}, -1 },
@ -611,6 +641,15 @@ static const struct {
{ kModeSonusmodular, "/sonusmodular/res/yabp.svg" }, { kModeSonusmodular, "/sonusmodular/res/yabp.svg" },
}; };
static inline
unsigned int darkerColor(const unsigned int color) noexcept
{
return (color & 0xff000000)
| (std::max<int>(0, ((color & 0xff0000) >> 16) - 0x80) << 16)
| (std::max<int>(0, ((color & 0xff00) >> 8) - 0x80) << 8)
| (std::max<int>(0, (color & 0xff) - 0x80));
}
static inline static inline
unsigned int invertColor(const unsigned int color) noexcept unsigned int invertColor(const unsigned int color) noexcept
{ {
@ -670,6 +709,10 @@ bool invertPaintForDarkMode(const DarkMode mode, NSVGshape* const shape, NSVGpai
} }
} }
break; break;
// Special case for DHE, mark things darker instead of inverting
case kModeDHE:
paint.color = darkerColor(paint.color);
return true;
// Special case for JW-Modules colors // Special case for JW-Modules colors
case kModeJW: case kModeJW:
switch (paint.color) switch (paint.color)