diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index e04dd50..c8e1ced 100644 --- a/.github/ISSUE_TEMPLATE/bug.yaml +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -5,7 +5,7 @@ body: id: version attributes: label: Version - value: "24.12" + value: "25.06" validations: required: true - type: dropdown diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ba1e33c..0c8684e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,11 +3,12 @@ name: build on: [push, pull_request] env: - CACHE_VERSION: 11 + CACHE_VERSION: 12 CARDINAL_UNDER_WINE: 1 CIBUILD: true DEBIAN_FRONTEND: noninteractive LIBGL_ALWAYS_SOFTWARE: true + PAWPAW_CI: 1 PAWPAW_FAST_MATH: 1 PAWPAW_SKIP_GLIB: 1 PAWPAW_SKIP_LTO: 1 @@ -23,7 +24,7 @@ jobs: target: [aarch64, armhf, i686, riscv64, x86_64] runs-on: ubuntu-latest container: - image: ubuntu:20.04 + image: ubuntu:22.04 steps: - name: Install git run: | @@ -125,7 +126,7 @@ jobs: *.tar.gz linux-x86_64-debug: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -228,10 +229,12 @@ jobs: files: | ${{ github.event.repository.name }}-*.pkg - modaudio: + mod-plugin-builder: strategy: matrix: include: + - name: darkglass-anagram + target: darkglass-anagram - name: modduo target: modduo-static extraflags: MODDUO=true @@ -239,7 +242,7 @@ jobs: target: modduox-static - name: moddwarf target: moddwarf - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -254,7 +257,7 @@ jobs: - name: Set up dependencies run: | sudo apt-get update -qq - sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static + sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python3 libtool-bin liblo-dev qemu-user-static sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra sudo apt-get clean - name: Bootstrap toolchain @@ -471,7 +474,7 @@ jobs: Cardinal-*.zip headless: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -488,7 +491,7 @@ jobs: make HEADLESS=true -j $(nproc) lto: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -505,7 +508,7 @@ jobs: make WITH_LTO=true -j $(nproc) native sysdeps: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -521,7 +524,7 @@ jobs: make SYSDEPS=true -j $(nproc) source-tarball: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -561,7 +564,7 @@ jobs: /home/runner/*/*/cardinal*.tar.xz plugin-validation: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: @@ -583,8 +586,8 @@ jobs: - name: Set up dependencies run: | # custom repos - wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_11.1.0_all.deb - sudo dpkg -i kxstudio-repos_11.1.0_all.deb + wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_11.2.0_all.deb + sudo dpkg -i kxstudio-repos_11.2.0_all.deb sudo apt-get update -qq # build-deps sudo apt-get install -yqq libdbus-1-dev libgl1-mesa-dev liblo-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev diff --git a/.gitmodules b/.gitmodules index 41435ee..472b131 100644 --- a/.gitmodules +++ b/.gitmodules @@ -49,9 +49,9 @@ [submodule "plugins/ValleyAudio"] path = plugins/ValleyAudio url = https://github.com/ValleyAudio/ValleyRackFree.git -[submodule "plugins/DrumKit"] - path = plugins/DrumKit - url = https://github.com/SVModular/DrumKit.git +[submodule "plugins/WSTD-Drums"] + path = plugins/WSTD-Drums + url = https://github.com/Wasted-Audio/WSTD-Drums.git [submodule "carla"] path = carla url = https://github.com/falkTX/Carla.git @@ -262,4 +262,7 @@ url = https://github.com/Rcomian/rcm-modules.git [submodule "plugins/admiral"] path = plugins/admiral - url = https://github.com/wapiflapi/admiral.git \ No newline at end of file + url = https://github.com/wapiflapi/admiral.git +[submodule "plugins/eightfold"] + path = plugins/eightfold + url = https://github.com/scanner-darkly/eightfold.git \ No newline at end of file diff --git a/Makefile b/Makefile index 507cd76..9aa443f 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ #!/usr/bin/make -f # DISTRHO Cardinal Plugin -# Copyright (C) 2021-2024 Filipe Coelho +# Copyright (C) 2021-2025 Filipe Coelho # SPDX-License-Identifier: GPL-3.0-or-later ROOT = . include $(ROOT)/Makefile.base.mk -# ----------------------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Set version # also set in: @@ -15,20 +15,20 @@ include $(ROOT)/Makefile.base.mk # src/CardinalPlugin.cpp `getVersion` # utils/macOS/Info_{JACK,Native}.plist # .github/ISSUE_TEMPLATE/bug.yaml src/CardinalCommon.cpp src/CardinalPlugin.cpp utils/macOS/Info_{JACK,Native}.plist -VERSION = 24.12 +VERSION = 25.06 -# -------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Build targets all: cardinal carla deps dgl plugins gen resources -# -------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Build config PREFIX ?= /usr/local DESTDIR ?= -# -------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- # Carla config CARLA_EXTRA_ARGS = \ @@ -44,7 +44,16 @@ ifneq ($(DEBUG),true) CARLA_EXTRA_ARGS += EXTERNAL_PLUGINS=true endif -# -------------------------------------------------------------- +# --------------------------------------------------------------------------------------------------------------------- +# DGL config + +ifeq ($(WASM),true) +UI_TYPE = gles2 +else +UI_TYPE = opengl +endif + +# --------------------------------------------------------------------------------------------------------------------- # Check for required system-wide dependencies ifeq ($(SYSDEPS),true) @@ -183,7 +192,7 @@ endif dgl: ifneq ($(HEADLESS),true) - $(MAKE) opengl -C dpf/dgl $(DGL_EXTRA_ARGS) + $(MAKE) $(UI_TYPE) -C dpf/dgl $(DGL_EXTRA_ARGS) endif plugins: deps @@ -229,6 +238,9 @@ clap: carla deps dgl plugins resources lv2: carla deps dgl plugins resources $(MAKE) lv2 -C src $(CARLA_EXTRA_ARGS) +mapi: carla deps dgl plugins resources + $(MAKE) mapi -C src $(CARLA_EXTRA_ARGS) + vst2: carla deps dgl plugins resources $(MAKE) vst2 -C src $(CARLA_EXTRA_ARGS) diff --git a/README.md b/README.md index 105b5b4..58ba5d9 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,7 @@ At the moment the following 3rd-party modules are provided: - [CVfunk](https://github.com/codygeary/CVfunk-Modules) - [dBiz](https://github.com/dBiz/dBiz) - [DHE Modules](https://github.com/dhemery/DHE-Modules) -- [DrumKit](https://svmodular.com/plugin/vcv/drumkit.html) +- [eightfold](https://github.com/scanner-darkly/eightfold) - [EnigmaCurry](https://github.com/EnigmaCurry/EnigmaCurry-vcv-pack) - [E-Series](https://github.com/VCVRack/ESeries) - [ExpertSleepers Encoders](https://expert-sleepers.co.uk/vcvrack_encoders.html) @@ -199,6 +199,7 @@ At the moment the following 3rd-party modules are provided: - [Valley](https://github.com/ValleyAudio/ValleyRackFree) - [Voxglitch](https://github.com/clone45/voxglitch) - [WhatTheRack](https://github.com/korfuri/WhatTheRack) +- [WSTD-Drums](https://github.com/Wasted-Audio/WSTD-Drums) - [ZetaCarinae](https://github.com/mhampton/ZetaCarinaeModules) - [ZZC](https://github.com/zezic/ZZC) diff --git a/carla b/carla index 17000e7..034d0c4 160000 --- a/carla +++ b/carla @@ -1 +1 @@ -Subproject commit 17000e7fe99459b25a50094a8b00bdfa12f2bfbc +Subproject commit 034d0c4242ba834e0b5a8967a5eefedf9d97178c diff --git a/deps/Makefile b/deps/Makefile index 0354e0c..c53e998 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -57,6 +57,7 @@ SPACE += CMAKE = cmake CMAKE += -DCMAKE_INSTALL_LIBDIR=lib CMAKE += -DCMAKE_INSTALL_PREFIX='$(RACK_DEP_PATH)' +CMAKE += -DCMAKE_POLICY_VERSION_MINIMUM=3.5 CMAKE += -DBUILD_SHARED_LIBS=OFF # make sure debug/release matches diff --git a/deps/PawPaw b/deps/PawPaw index 0985cf8..f6eaed1 160000 --- a/deps/PawPaw +++ b/deps/PawPaw @@ -1 +1 @@ -Subproject commit 0985cf8d1c3a00b1958ef90e0f1aa511b865241a +Subproject commit f6eaed13bdeccec013d81ba2261f98aa8f452702 diff --git a/docs/LICENSES.md b/docs/LICENSES.md index ffdcb89..074067c 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -39,7 +39,7 @@ Below follows a list of all code licenses used in Cardinal and linked submodules | CVfunk | MIT | | | dBiz | GPL-3.0-or-later | | | DHE-Modules | MIT | | -| DrumKit | CC0-1.0 | | +| eightfold | GPL-3.0-or-later | | | EnigmaCurry | GPL-3.0-or-later | | | E-Series | GPL-3.0-or-later | | | ExpertSleepers Encoders | MIT | | @@ -92,6 +92,7 @@ Below follows a list of all code licenses used in Cardinal and linked submodules | unless_modules | GPL-3.0-or-later | | | Valley | GPL-3.0-or-later | | | Voxglitch | GPL-3.0-or-later | | +| WSTD-Drums | CC0-1.0 | | | WhatTheRack | WTFPL | | | ZetaCarinae | GPL-3.0-or-later | | | ZZC | GPL-3.0-or-later | | @@ -179,6 +180,7 @@ Below is a list of artwork licenses from plugins | DHE-Modules/* | MIT | Same license as source code | | DrumKit/* | CC0-1.0 | | | DrumKit/component/NovaMono.ttf | OFL-1.1-RFN | | +| eightfold/* | GPL-3.0-or-later | No artwork specific license provided | | EnigmaCurry/res/fonts/dseg/* | OFL-1.1-RFN | | | EnigmaCurry/res/fonts/Fantasque/* | OFL-1.1 | | | EnigmaCurry/res/fonts/manrope/* | OFL-1.1 | | @@ -202,6 +204,7 @@ 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 | +| JW-Modules/res/fonts/ShareTechMono-Regular.ttf | OFL-1.1 | | | 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 | diff --git a/dpf b/dpf index c1ef624..201fa73 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit c1ef6244581cf8378366c686cf210e3062ec40a5 +Subproject commit 201fa7387a2ec5bb3bc8352e4551eafccbcfcfb8 diff --git a/plugins/AmalgamatedHarmonics b/plugins/AmalgamatedHarmonics index 97700c0..bf74c2b 160000 --- a/plugins/AmalgamatedHarmonics +++ b/plugins/AmalgamatedHarmonics @@ -1 +1 @@ -Subproject commit 97700c06af7df4d8fcf173ae3670b7907a682627 +Subproject commit bf74c2b7674c610cfc57421157d814c98bd92438 diff --git a/plugins/Befaco b/plugins/Befaco index 5a80023..5914634 160000 --- a/plugins/Befaco +++ b/plugins/Befaco @@ -1 +1 @@ -Subproject commit 5a80023d86e0f67ead3e27385170310cd430d44c +Subproject commit 5914634cd91cf11cc32394616252beb19c5c934c diff --git a/plugins/CVfunk b/plugins/CVfunk index 37d6a2a..51f2b4e 160000 --- a/plugins/CVfunk +++ b/plugins/CVfunk @@ -1 +1 @@ -Subproject commit 37d6a2ac4562a266474aab47ff4b490ddd7dfc64 +Subproject commit 51f2b4e61cde7978fb84cdd892a1d3aaedc0ff5b diff --git a/plugins/Cardinal/src/HostTime.cpp b/plugins/Cardinal/src/HostTime.cpp index a28c4cd..f6c2f9d 100644 --- a/plugins/Cardinal/src/HostTime.cpp +++ b/plugins/Cardinal/src/HostTime.cpp @@ -40,11 +40,18 @@ struct HostTime : TerminalModule { kHostTimeCount }; + enum BarDivisions { + Bars1 = 1, + Bars4 = 4, + Bars8 = 8 + }; + const CardinalPluginContext* const pcontext; rack::dsp::PulseGenerator pulseReset, pulseBar, pulseBeat, pulseClock; float sampleTime = 0.0f; uint32_t lastProcessCounter = 0; + BarDivisions barDivision = Bars1; // cached time values struct { bool reset = true; @@ -122,7 +129,9 @@ struct HostTime : TerminalModule { { timeInfo.beat = 1; ++timeInfo.bar; - pulseBar.trigger(); + + if (timeInfo.bar % barDivision == 1) + pulseBar.trigger(); } } @@ -148,9 +157,10 @@ struct HostTime : TerminalModule { ? tick / pcontext->ticksPerBeat : 0.0f; const float barPhase = playingWithBBT && pcontext->beatsPerBar > 0 - ? ((float) (timeInfo.beat - 1) + beatPhase) / pcontext->beatsPerBar + ? ((float)((timeInfo.bar - 1) % barDivision) + (timeInfo.beat - 1) + beatPhase) + / (pcontext->beatsPerBar * barDivision) : 0.0f; - + lights[kHostTimeRolling].setBrightness(playing ? 1.0f : 0.0f); lights[kHostTimeReset].setBrightnessSmooth(hasReset ? 1.0f : 0.0f, args.sampleTime * 0.5f); lights[kHostTimeBar].setBrightnessSmooth(hasBar ? 1.0f : 0.0f, args.sampleTime * 0.5f); @@ -170,6 +180,20 @@ struct HostTime : TerminalModule { void processTerminalOutput(const ProcessArgs&) override {} + + json_t* dataToJson() override { + json_t* rootJ = json_object(); + json_object_set_new(rootJ, "barDivision", json_integer(barDivision)); + return rootJ; + } + + void dataFromJson(json_t* rootJ) override { + if (json_t* bdJ = json_object_get(rootJ, "barDivision")) { + int value = json_integer_value(bdJ); + if (value == Bars1 || value == Bars4 || value == Bars8) + barDivision = static_cast(value); + } + } }; // -------------------------------------------------------------------------------------------------------------------- @@ -286,6 +310,22 @@ struct HostTimeWidget : ModuleWidgetWith8HP { ModuleWidget::drawLayer(args, layer); } + + void appendContextMenu(Menu* menu) override { + struct BarDivisionItem : MenuItem { + HostTime* module; + HostTime::BarDivisions value; + void onAction(const event::Action& e) override { + module->barDivision = value; + } + }; + + menu->addChild(new MenuSeparator); + menu->addChild(construct(&MenuLabel::text, "Bar Division")); + menu->addChild(construct(&BarDivisionItem::text, "Bars/1", &BarDivisionItem::module, module, &BarDivisionItem::value, HostTime::Bars1)); + menu->addChild(construct(&BarDivisionItem::text, "Bars/4", &BarDivisionItem::module, module, &BarDivisionItem::value, HostTime::Bars4)); + menu->addChild(construct(&BarDivisionItem::text, "Bars/8", &BarDivisionItem::module, module, &BarDivisionItem::value, HostTime::Bars8)); + } }; #else struct HostTimeWidget : ModuleWidget { diff --git a/plugins/DrumKit b/plugins/DrumKit deleted file mode 160000 index e4eb7ad..0000000 --- a/plugins/DrumKit +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e4eb7adaff1afa731563e09c83e35d87319d4654 diff --git a/plugins/HetrickCV b/plugins/HetrickCV index 4dc7c53..8c46fbe 160000 --- a/plugins/HetrickCV +++ b/plugins/HetrickCV @@ -1 +1 @@ -Subproject commit 4dc7c53b9f230bfd4f6c4deb432c477a65188ac0 +Subproject commit 8c46fbe13acdcb87991719bddcc6ec8abcf152ef diff --git a/plugins/JW-Modules b/plugins/JW-Modules index 9d8f851..72c8b56 160000 --- a/plugins/JW-Modules +++ b/plugins/JW-Modules @@ -1 +1 @@ -Subproject commit 9d8f8515deb20d7e14ca85b4c1d04ec6b66b3e8d +Subproject commit 72c8b569dd2cc12ce16abe2da582fc58e07c3d54 diff --git a/plugins/LyraeModules b/plugins/LyraeModules index 8162f0d..b6dde88 160000 --- a/plugins/LyraeModules +++ b/plugins/LyraeModules @@ -1 +1 @@ -Subproject commit 8162f0d6aee157425c7d7eb3582d905c9ac6c43e +Subproject commit b6dde88e4d780de0207ece26c5b7de23d61c84e6 diff --git a/plugins/Makefile b/plugins/Makefile index 683f0bc..dd2513c 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -560,7 +560,7 @@ PLUGIN_FILES += $(filter-out Befaco/src/plugin.cpp Befaco/src/MidiThing.cpp,$(wi PLUGIN_FILES += $(wildcard Befaco/src/noise-plethora/*/*.cpp) # modules/types which are present in other plugins -BEFACO_CUSTOM = ADSR Mixer chowdsp Burst RecordButton +BEFACO_CUSTOM = ADSR Mixer chowdsp Burst RecordButton Mixer2 Slew BEFACO_FLAGS = $(filter-out -fsingle-precision-constant,$(filter-out -std=gnu++11,$(BUILD_CXX_FLAGS))) BEFACO_FLAGS += -std=gnu++17 @@ -678,7 +678,7 @@ COMPUTERSCARE_CUSTOM = Quantizer PanelBorder PLUGIN_FILES += $(filter-out CVfunk/src/plugin.cpp,$(wildcard CVfunk/src/*.cpp)) # modules/types which are present in other plugins -CVFUNK_CUSTOM = Steps +CVFUNK_CUSTOM = Steps Node # -------------------------------------------------------------- # dBiz @@ -695,17 +695,15 @@ DBIZ_CUSTOM_PER_FILE = LERP MultiFilter Oscillator calcOutput sineOsc subBank PLUGIN_FILES += $(filter-out DHE-Modules/src/plugin.cpp,$(wildcard DHE-Modules/src/modules/*/init.cpp)) # -------------------------------------------------------------- -# DrumKit - -PLUGIN_FILES += $(wildcard DrumKit/src/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/src/controller/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/src/view/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/src/model/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/deps/*.cpp) -PLUGIN_FILES += $(wildcard DrumKit/deps/SynthDevKit/src/*.cpp) +# eightfold +PLUGIN_FILES += $(filter-out eightfold/src/plugin.cpp,$(wildcard eightfold/src/*.cpp)) # modules/types which are present in other plugins -DRUMKIT_CUSTOM = ADSR Envelope LowFrequencyOscillator +EIGHTFOLD_CUSTOM = Comparator comparator + + +EIGHTFOLD_FLAGS = $(filter-out -std=gnu++11,$(BUILD_CXX_FLAGS)) +EIGHTFOLD_FLAGS += -std=gnu++17 # -------------------------------------------------------------- # EnigmaCurry @@ -824,7 +822,7 @@ endif endif # modules/types which are present in other plugins -JW_CUSTOM = PlayHead Quantizer +JW_CUSTOM = PlayHead Quantizer Arrange # -------------------------------------------------------------- # kocmoc @@ -832,7 +830,7 @@ JW_CUSTOM = PlayHead Quantizer PLUGIN_FILES += $(filter-out kocmoc/src/plugin.cpp,$(wildcard kocmoc/src/*.cpp)) # modules/types which are present in other plugins -KOCMOC_CUSTOM = Phasor __ct_base __ct_comp +KOCMOC_CUSTOM = Diode Phasor __ct_base __ct_comp # -------------------------------------------------------------- # LifeFormModular @@ -1333,6 +1331,19 @@ VOXGLITCH_CUSTOM_PER_FILE = AudioBuffer GateSequencer Grain SamplePlayer Sequenc PLUGIN_FILES += $(filter-out WhatTheRack/src/WhatTheRack.cpp,$(wildcard WhatTheRack/src/*.cpp)) +# -------------------------------------------------------------- +# WSTD-Drums + +PLUGIN_FILES += $(wildcard WSTD-Drums/src/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/src/controller/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/src/view/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/src/model/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/deps/*.cpp) +PLUGIN_FILES += $(wildcard WSTD-Drums/deps/SynthDevKit/src/*.cpp) + +# modules/types which are present in other plugins +WSTD_DRUMS_CUSTOM = ADSR Envelope LowFrequencyOscillator + # -------------------------------------------------------------- # ZetaCarinaeModules @@ -1452,6 +1463,7 @@ clean: PLUGIN_LIST = $(subst /plugin.json,,$(wildcard */plugin.json)) UNWANTED_FILES = HetrickCV/res/illustrator - deprecated/MyModule.svg +UNWANTED_FILES += $(wildcard "HetrickCV/res/affinity redo/*") UNWANTED_FILES += $(wildcard Meander/res/*) UNWANTED_FILES += $(wildcard Mog/res/*) UNWANTED_FILES += $(wildcard Mog/res/*/*) @@ -1481,7 +1493,7 @@ RESOURCE_FILES += BaconPlugs/res/midi/goldberg RESOURCE_FILES += Befaco/res/SpringReverbIR.f32 RESOURCE_FILES += cf/playeroscs RESOURCE_FILES += DHE-Modules/svg -RESOURCE_FILES += DrumKit/res/samples +RESOURCE_FILES += WSTD-Drums/res/samples RESOURCE_FILES += Meander/res RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityPresets RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityShapes @@ -2204,7 +2216,7 @@ $(BUILD_DIR)/AS/%.cpp.o: AS/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(AS_CUSTOM),$(call custom_module_names,$(m),AS)) \ - $(foreach m,$(AS_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),AS_$(shell basename $*))) \ + $(foreach m,$(AS_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),AS_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__AS \ -Wno-unused-private-field @@ -2260,7 +2272,7 @@ $(BUILD_DIR)/Bidoo%.cpp.o: Bidoo%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(BIDOO_CUSTOM),$(call custom_module_names,$(m),Bidoo)) \ - $(foreach m,$(BIDOO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Bidoo_$(shell basename $*))) \ + $(foreach m,$(BIDOO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Bidoo_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__Bidoo \ -DSKIP_MINGW_FORMAT \ -IBidoo/src/dep/gverb/include \ @@ -2280,7 +2292,7 @@ $(BUILD_DIR)/BogaudioModules%.cpp.o: BogaudioModules%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(BOGAUDIO_CUSTOM),$(call custom_module_names,$(m),Bogaudio)) \ - $(foreach m,$(BOGAUDIO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Bogaudio_$(shell basename $*))) \ + $(foreach m,$(BOGAUDIO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Bogaudio_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__BogaudioModules \ -DRACK_SIMD=1 \ -DSKIP_MINGW_FORMAT \ @@ -2333,7 +2345,7 @@ $(BUILD_DIR)/dBiz/src/%.cpp.o: dBiz/src/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(DBIZ_CUSTOM),$(call custom_module_names,$(m),dBiz)) \ - $(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 $(BUILD_DIR)/DHE-Modules/src/%.cpp.o: DHE-Modules/src/%.cpp @@ -2344,14 +2356,12 @@ $(BUILD_DIR)/DHE-Modules/src/%.cpp.o: DHE-Modules/src/%.cpp -DpluginInstance=pluginInstance__DHE \ -IDHE-Modules/src -$(BUILD_DIR)/DrumKit/%.cpp.o: DrumKit/%.cpp +$(BUILD_DIR)/eightfold/src/%.cpp.o: eightfold/src/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" - $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ - $(foreach m,$(DRUMKIT_CUSTOM),$(call custom_module_names,$(m),DrumKit)) \ - -DpluginInstance=pluginInstance__DrumKit \ - -Dinit=init__DrumKit \ - -Wno-sign-compare + $(SILENT)$(CXX) $< $(EIGHTFOLD_FLAGS) -c -o $@ \ + $(foreach m,$(EIGHTFOLD_CUSTOM),$(call custom_module_names,$(m),eightfold)) \ + -DpluginInstance=pluginInstance__eightfold $(BUILD_DIR)/EnigmaCurry/src/%.cpp.o: EnigmaCurry/src/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @@ -2495,7 +2505,7 @@ $(BUILD_DIR)/ImpromptuModular%.cpp.o: ImpromptuModular%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(IMPROMPTUMODULAR_CUSTOM),$(call custom_module_names,$(m),ImpromptuModular)) \ - $(foreach m,$(IMPROMPTUMODULAR_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ImpromptuModular_$(shell basename $*))) \ + $(foreach m,$(IMPROMPTUMODULAR_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ImpromptuModular_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__ImpromptuModular \ -Wno-format-truncation @@ -2504,7 +2514,7 @@ $(BUILD_DIR)/ihtsyn/%.cpp.o: ihtsyn/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(IHTSYN_CUSTOM),$(call custom_module_names,$(m),ihtsyn)) \ - $(foreach m,$(IHTSYN_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ihtsyn_$(shell basename $*))) \ + $(foreach m,$(IHTSYN_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ihtsyn_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__ihtsyn $(BUILD_DIR)/JW-Modules/src/WavHead.cpp.o: JW-Modules/src/WavHead.cpp @@ -2632,7 +2642,7 @@ $(BUILD_DIR)/mscHack/%.cpp.o: mscHack/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(MSCHACK_CUSTOM),$(call custom_module_names,$(m),mscHack)) \ - $(foreach m,$(MSCHACK_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),mscHack_$(shell basename $*))) \ + $(foreach m,$(MSCHACK_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),mscHack_$(shell basename -- $*))) \ -DthePlugin=pluginInstance__mscHack \ -Dinit=init__mscHack \ -Wno-class-memaccess \ @@ -2713,7 +2723,7 @@ $(BUILD_DIR)/Prism/%.cpp.o: Prism/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(PRISM_CUSTOM),$(call custom_module_names,$(m),Prism)) \ - $(foreach m,$(PRISM_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Prism_$(shell basename $*))) \ + $(foreach m,$(PRISM_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Prism_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__Prism \ $(BUILD_DIR)/rackwindows/%.cpp.o: rackwindows/%.cpp @@ -2757,6 +2767,7 @@ $(BUILD_DIR)/Sapphire/%.cpp.o: Sapphire/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -std=gnu++17 -c -o $@ \ $(foreach m,$(SAPPHIRE_CUSTOM),$(call custom_module_names,$(m),Sapphire)) \ + -DSKIP_MINGW_FORMAT \ -DpluginInstance=pluginInstance__sapphire $(BUILD_DIR)/sonusmodular/%.cpp.o: sonusmodular/%.cpp @@ -2786,7 +2797,7 @@ $(BUILD_DIR)/stoermelder-packone/%.cpp.o: stoermelder-packone/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(STOERMELDER_PACKONE_CUSTOM),$(call custom_module_names,$(m),stoermelder_p1)) \ - $(foreach m,$(STOERMELDER_PACKONE_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),stoermelder_p1_$(shell basename $*))) \ + $(foreach m,$(STOERMELDER_PACKONE_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),stoermelder_p1_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__stoermelder_p1 \ -Dinit=init__stoermelder_p1 @@ -2816,7 +2827,7 @@ $(BUILD_DIR)/ValleyAudio/%.cpp.o: ValleyAudio/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(VALLEYAUDIO_CUSTOM),$(call custom_module_names,$(m),ValleyAudio)) \ - $(foreach m,$(VALLEYAUDIO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ValleyAudio_$(shell basename $*))) \ + $(foreach m,$(VALLEYAUDIO_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),ValleyAudio_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__ValleyAudio \ -DSTDIO_OVERRIDE=ValleyAudio \ -IValleyAudio/src \ @@ -2828,7 +2839,7 @@ $(BUILD_DIR)/voxglitch/%.cpp.o: voxglitch/%.cpp @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ $(foreach m,$(VOXGLITCH_CUSTOM),$(call custom_module_names,$(m),Voxglitch)) \ - $(foreach m,$(VOXGLITCH_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Voxglitch_$(shell basename $*))) \ + $(foreach m,$(VOXGLITCH_CUSTOM_PER_FILE),$(call custom_per_file_names,$(m),Voxglitch_$(shell basename -- $*))) \ -DpluginInstance=pluginInstance__Voxglitch \ -DSKIP_MINGW_FORMAT @@ -2839,6 +2850,15 @@ $(BUILD_DIR)/WhatTheRack/%.cpp.o: WhatTheRack/%.cpp $(foreach m,$(WHATTHERACK_CUSTOM),$(call custom_module_names,$(m),WhatTheRack)) \ -DpluginInstance=pluginInstance__WhatTheRack +$(BUILD_DIR)/WSTD-Drums/%.cpp.o: WSTD-Drums/%.cpp + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \ + $(foreach m,$(WSTD_DRUMS_CUSTOM),$(call custom_module_names,$(m),WSTD_Drums)) \ + -DpluginInstance=pluginInstance__WSTD_Drums \ + -Dinit=init__WSTD_Drums \ + -Wno-sign-compare + $(BUILD_DIR)/ZamAudio/%.cpp.o: ZamAudio/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/MockbaModular b/plugins/MockbaModular index 479d2c8..b819787 160000 --- a/plugins/MockbaModular +++ b/plugins/MockbaModular @@ -1 +1 @@ -Subproject commit 479d2c8007b2087cdf557a491df25c5b85784a96 +Subproject commit b819787d86a1db0ad6f4208cb96b8e3589b5e4ee diff --git a/plugins/PathSet b/plugins/PathSet index 66e69a2..2f55b4b 160000 --- a/plugins/PathSet +++ b/plugins/PathSet @@ -1 +1 @@ -Subproject commit 66e69a2f2047e3dab06275b12852e56d143388cf +Subproject commit 2f55b4b115e76623ef54e24c30daad4d576a4446 diff --git a/plugins/Sapphire b/plugins/Sapphire index fcfdfab..ef10da4 160000 --- a/plugins/Sapphire +++ b/plugins/Sapphire @@ -1 +1 @@ -Subproject commit fcfdfab93efed535ea65e0a47c870f6e2e6654be +Subproject commit ef10da4e2578162b2db2f6534857d6504491daf4 diff --git a/plugins/WSTD-Drums b/plugins/WSTD-Drums new file mode 160000 index 0000000..05330ce --- /dev/null +++ b/plugins/WSTD-Drums @@ -0,0 +1 @@ +Subproject commit 05330ce99f4ec742f906c77ab5d8758a15decb4c diff --git a/plugins/ZZC b/plugins/ZZC index 1536461..f590088 160000 --- a/plugins/ZZC +++ b/plugins/ZZC @@ -1 +1 @@ -Subproject commit 15364616da500d31f7545dcbfc01b4fda7f7c9d4 +Subproject commit f5900888025fcfad7842770e83365ba743bb51bd diff --git a/plugins/eightfold b/plugins/eightfold new file mode 160000 index 0000000..a541c5c --- /dev/null +++ b/plugins/eightfold @@ -0,0 +1 @@ +Subproject commit a541c5cfdc3fb9ad8e4f345470f817eaf576b987 diff --git a/plugins/kocmoc b/plugins/kocmoc index eb46ce3..ea69aca 160000 --- a/plugins/kocmoc +++ b/plugins/kocmoc @@ -1 +1 @@ -Subproject commit eb46ce3a8b5795d61c2e3eb60f6ca58799a8cee2 +Subproject commit ea69acab96db49c32601b609cdfe06444ecee0e8 diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 884ea7e..830e116 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -147,10 +147,14 @@ extern Model* modelChord; #define modelADSR modelBefacoADSR #define modelMixer modelBefacoMixer #define modelBurst modelBefacoBurst +#define modelMixer2 modelBefacoMixer2 +#define modelSlew modelBefacoSlew #include "Befaco/src/plugin.hpp" #undef modelADSR #undef modelMixer #undef modelBurst +#undef modelMixer2 +#undef modelSlew // Bidoo #include "Bidoo/src/plugin.hpp" @@ -339,9 +343,11 @@ extern Model* modelTestVCF; #include "cf/src/plugin.hpp" // CVfunk +#define modelNode modelCVfunkNode #define modelSteps modelCVfunkSteps #include "CVfunk/src/plugin.hpp" #undef modelSteps +#undef modelNode // ChowDSP #include "ChowDSP/src/plugin.hpp" @@ -391,9 +397,8 @@ namespace truth { void init(Plugin*); } namespace xycloid { void init(Plugin*); } } -// DrumKit -#include "DrumKit/src/DrumKit.hpp" -void setupSamples(); +// eightfold +#include "eightfold/src/plugin.hpp" // EnigmaCurry #define modelPulse modelEnigmaCurryPulse @@ -450,6 +455,7 @@ void saveGtgPluginDefault(const char*, int) {} extern Model* modelTwoToFour; extern Model* modelAnalogToDigital; extern Model* modelASR; +extern Model* modelBinaryCounter; extern Model* modelBinaryGate; extern Model* modelBinaryNoise; extern Model* modelBitshift; @@ -460,6 +466,7 @@ extern Model* modelChaos2Op; extern Model* modelChaos3Op; extern Model* modelChaoticAttractors; extern Model* modelClockedNoise; +extern Model* modelClockToPhasor; extern Model* modelComparator; extern Model* modelContrast; extern Model* modelCrackle; @@ -478,12 +485,14 @@ extern Model* modelGingerbread; extern Model* modelLogicCombine; extern Model* modelMidSide; extern Model* modelMinMax; +extern Model* modelNormals; extern Model* modelPhaseDrivenSequencer; extern Model* modelPhaseDrivenSequencer32; extern Model* modelPhasorAnalyzer; extern Model* modelPhasorBurstGen; extern Model* modelPhasorDivMult; extern Model* modelPhasorEuclidean; +extern Model* modelPhasorFreezer; extern Model* modelPhasorGates; extern Model* modelPhasorGates32; extern Model* modelPhasorGates64; @@ -492,6 +501,7 @@ extern Model* modelPhasorGeometry; extern Model* modelPhasorHumanizer; extern Model* modelPhasorMixer; extern Model* modelPhasorOctature; +extern Model* modelPhasorProbability; extern Model* modelPhasorQuadrature; extern Model* modelPhasorRandom; extern Model* modelPhasorRanger; @@ -499,18 +509,22 @@ extern Model* modelPhasorReset; extern Model* modelPhasorRhythmGroup; extern Model* modelPhasorShape; extern Model* modelPhasorShift; +extern Model* modelPhasorSplitter; extern Model* modelPhasorStutter; extern Model* modelPhasorSubstepShape; extern Model* modelPhasorSwing; extern Model* modelPhasorTimetable; extern Model* modelPhasorToClock; +extern Model* modelPhasorToRandom; extern Model* modelPhasorToLFO; extern Model* modelPhasorToWaveforms; +extern Model* modelPolymetricPhasors; extern Model* modelProbability; extern Model* modelRandomGates; extern Model* modelRotator; extern Model* modelRungler; extern Model* modelScanner; +extern Model* modelTrigShaper; extern Model* modelVectorMix; extern Model* modelWaveshape; extern Model* modelXYToPolar; @@ -562,8 +576,10 @@ extern Model* modelBlankPanel; // JW-Modules #define modelQuantizer modelJWQuantizer +#define modelArrange modelJWArrange #include "JW-Modules/src/JWModules.hpp" #undef modelQuantizer +#undef modelArrange // kocmoc #include "kocmoc/src/plugin.hpp" @@ -614,6 +630,8 @@ extern Model* modelDelta; extern Model* modelVega; extern Model* modelBD383238; extern Model* modelZeta; +extern Model* modelSheliak; +extern Model* modelBeta; #undef modelDelta // Meander @@ -887,6 +905,10 @@ void surgext_rack_update_theme(); // WhatTheRack #include "WhatTheRack/src/WhatTheRack.hpp" +// WSTD-Drums +#include "WSTD-Drums/src/WSTD_Drums.hpp" +void setupSamples(); + // ZetaCarinaeModules #include "ZetaCarinaeModules/src/plugin.hpp" @@ -944,7 +966,7 @@ Plugin* pluginInstance__Computerscare; Plugin* pluginInstance__CVfunk; Plugin* pluginInstance__dBiz; Plugin* pluginInstance__DHE; -extern Plugin* pluginInstance__DrumKit; +Plugin* pluginInstance__eightfold; Plugin* pluginInstance__EnigmaCurry; Plugin* pluginInstance__ESeries; Plugin* pluginInstance__ExpertSleepersEncoders; @@ -997,6 +1019,7 @@ Plugin* pluginInstance__unless_modules; Plugin* pluginInstance__ValleyAudio; Plugin* pluginInstance__Voxglitch; Plugin* pluginInstance__WhatTheRack; +extern Plugin* pluginInstance__WSTD_Drums; Plugin* pluginInstance__ZetaCarinaeModules; Plugin* pluginInstance__ZZC; @@ -1612,6 +1635,8 @@ static void initStatic__Befaco() #define modelADSR modelBefacoADSR #define modelMixer modelBefacoMixer #define modelBurst modelBefacoBurst +#define modelMixer2 modelBefacoMixer2 +#define modelSlew modelBefacoSlew p->addModel(modelEvenVCO); p->addModel(modelRampage); p->addModel(modelABC); @@ -1638,9 +1663,16 @@ static void initStatic__Befaco() p->addModel(modelOctaves); p->addModel(modelBypass); p->addModel(modelBandit); + p->addModel(modelAtte); + p->addModel(modelAxBC); + p->addModel(modelMixer2); + p->addModel(modelMuDi); + p->addModel(modelSlew); #undef modelADSR #undef modelMixer #undef modelBurst +#undef modelMixer2 +#undef modelSlew // NOTE disabled in Cardinal due to MIDI usage spl.removeModule("MidiThingV2"); @@ -2021,25 +2053,40 @@ static void initStatic__CVfunk() const StaticPluginLoader spl(p, "CVfunk"); if (spl.ok()) { -#define modelSteps modelCVfunkSteps - p->addModel(modelSteps); - p->addModel(modelEnvelopeArray); - p->addModel(modelPentaSequencer); - p->addModel(modelImpulseController); - p->addModel(modelSignals); - p->addModel(modelRanges); - p->addModel(modelHexMod); - p->addModel(modelCollatz); - p->addModel(modelStrings); - p->addModel(modelMagnets); - p->addModel(modelOuros); - p->addModel(modelPressedDuck); - p->addModel(modelFlowerPatch); - p->addModel(modelSyncro); - p->addModel(modelNona); - p->addModel(modelDecima); - p->addModel(modelMorta); -#undef modelSteps + #define modelSteps modelCVfunkSteps + #define modelNode modelCVfunkNode + p->addModel(modelSteps); + p->addModel(modelEnvelopeArray); + p->addModel(modelPentaSequencer); + p->addModel(modelImpulseController); + p->addModel(modelSignals); + p->addModel(modelRanges); + p->addModel(modelHexMod); + p->addModel(modelCollatz); + p->addModel(modelStrings); + p->addModel(modelMagnets); + p->addModel(modelOuros); + p->addModel(modelPressedDuck); + p->addModel(modelFlowerPatch); + p->addModel(modelSyncro); + p->addModel(modelNona); + p->addModel(modelDecima); + p->addModel(modelMorta); + p->addModel(modelStepWave); + p->addModel(modelPreeeeeeeeeeessedDuck); + p->addModel(modelArrange); + p->addModel(modelTriDelay); + p->addModel(modelTatami); + p->addModel(modelCartesia); + p->addModel(modelJunkDNA); + p->addModel(modelPicus); + p->addModel(modelNode); + p->addModel(modelWeave); + p->addModel(modelWonk); + p->addModel(modelHammer); + p->addModel(modelHub); + #undef modelNode + #undef modelSteps } } @@ -2121,27 +2168,19 @@ static void initStatic__DHE() } } -static void initStatic__DrumKit() +static void initStatic__eightfold() { Plugin* const p = new Plugin; - pluginInstance__DrumKit = p; + pluginInstance__eightfold = p; - const StaticPluginLoader spl(p, "DrumKit"); + const StaticPluginLoader spl(p, "eightfold"); if (spl.ok()) { - setupSamples(); - p->addModel(modelBD9); - p->addModel(modelSnare); - p->addModel(modelClosedHH); - p->addModel(modelOpenHH); - p->addModel(modelDMX); - p->addModel(modelCR78); - p->addModel(modelSBD); - p->addModel(modelGnome); - p->addModel(modelSequencer); - p->addModel(modelTomi); - p->addModel(modelBaronial); - p->addModel(modelMarionette); + p->addModel(modelSDOrcasHeartV2); + p->addModel(modelSDFormation); + p->addModel(modelSDLines); + p->addModel(modelSDTransgate); + p->addModel(modelSDComparator); } } @@ -2377,6 +2416,7 @@ static void initStatic__HetrickCV() p->addModel(modelTwoToFour); p->addModel(modelAnalogToDigital); p->addModel(modelASR); + p->addModel(modelBinaryCounter); p->addModel(modelBinaryGate); p->addModel(modelBinaryNoise); p->addModel(modelBitshift); @@ -2387,6 +2427,7 @@ static void initStatic__HetrickCV() p->addModel(modelChaos3Op); p->addModel(modelChaoticAttractors); p->addModel(modelClockedNoise); + p->addModel(modelClockToPhasor); p->addModel(modelComparator); p->addModel(modelContrast); p->addModel(modelCrackle); @@ -2405,12 +2446,14 @@ static void initStatic__HetrickCV() p->addModel(modelLogicCombine); p->addModel(modelMidSide); p->addModel(modelMinMax); + p->addModel(modelNormals); p->addModel(modelPhaseDrivenSequencer); p->addModel(modelPhaseDrivenSequencer32); p->addModel(modelPhasorAnalyzer); p->addModel(modelPhasorBurstGen); p->addModel(modelPhasorDivMult); p->addModel(modelPhasorEuclidean); + p->addModel(modelPhasorFreezer); p->addModel(modelPhasorGates); p->addModel(modelPhasorGates32); p->addModel(modelPhasorGates64); @@ -2419,6 +2462,7 @@ static void initStatic__HetrickCV() p->addModel(modelPhasorHumanizer); p->addModel(modelPhasorMixer); p->addModel(modelPhasorOctature); + p->addModel(modelPhasorProbability); p->addModel(modelPhasorQuadrature); p->addModel(modelPhasorRandom); p->addModel(modelPhasorRanger); @@ -2426,18 +2470,22 @@ static void initStatic__HetrickCV() p->addModel(modelPhasorRhythmGroup); p->addModel(modelPhasorShape); p->addModel(modelPhasorShift); + p->addModel(modelPhasorSplitter); p->addModel(modelPhasorStutter); p->addModel(modelPhasorSubstepShape); p->addModel(modelPhasorSwing); p->addModel(modelPhasorTimetable); p->addModel(modelPhasorToClock); + p->addModel(modelPhasorToRandom); p->addModel(modelPhasorToLFO); p->addModel(modelPhasorToWaveforms); + p->addModel(modelPolymetricPhasors); p->addModel(modelProbability); p->addModel(modelRandomGates); p->addModel(modelRotator); p->addModel(modelRungler); p->addModel(modelScanner); + p->addModel(modelTrigShaper); p->addModel(modelVectorMix); p->addModel(modelWaveshape); p->addModel(modelXYToPolar); @@ -2516,6 +2564,7 @@ static void initStatic__JW() if (spl.ok()) { #define modelQuantizer modelJWQuantizer +#define modelArrange modelJWArrange p->addModel(modelAdd5); p->addModel(modelAbcdSeq); p->addModel(modelBouncyBalls); @@ -2551,7 +2600,9 @@ static void initStatic__JW() #else spl.removeModule("Str1ker"); #endif + p->addModel(modelArrange); #undef modelQuantizer +#undef modelArrange } } @@ -2564,8 +2615,11 @@ static void initStatic__kocmoc() if (spl.ok()) { p->addModel(modelSVF_1); + p->addModel(modeluSVF); p->addModel(modelTRG); p->addModel(modelLADR); + p->addModel(modeluLADR); + p->addModel(modelDIOD); p->addModel(modelOP); p->addModel(modelPHASR); p->addModel(modelMUL); @@ -2670,6 +2724,8 @@ static void initStatic__Lyrae() p->addModel(modelVega); p->addModel(modelBD383238); p->addModel(modelZeta); + p->addModel(modelSheliak); + p->addModel(modelBeta); #undef modelDelta } } @@ -3174,7 +3230,11 @@ static void initStatic__Sapphire() if (spl.ok()) { p->addModel(modelSapphireChaops); + p->addModel(modelSapphireEcho); + p->addModel(modelSapphireEchoOut); + p->addModel(modelSapphireEchoTap); p->addModel(modelSapphireElastika); + p->addModel(modelSapphireEnv); p->addModel(modelSapphireFrolic); p->addModel(modelSapphireGalaxy); p->addModel(modelSapphireGlee); @@ -3193,6 +3253,7 @@ static void initStatic__Sapphire() p->addModel(modelSapphireTout); p->addModel(modelSapphireTricorder); p->addModel(modelSapphireTubeUnit); + p->addModel(modelSapphireZoo); } } @@ -3494,6 +3555,30 @@ static void initStatic__WhatTheRack() } } +static void initStatic__WSTD_Drums() +{ + Plugin* const p = new Plugin; + pluginInstance__WSTD_Drums = p; + + const StaticPluginLoader spl(p, "WSTD-Drums"); + if (spl.ok()) + { + setupSamples(); + p->addModel(modelBD9); + p->addModel(modelSnare); + p->addModel(modelClosedHH); + p->addModel(modelOpenHH); + p->addModel(modelDMX); + p->addModel(modelCR78); + p->addModel(modelSBD); + p->addModel(modelGnome); + p->addModel(modelSequencer); + p->addModel(modelTomi); + p->addModel(modelBaronial); + p->addModel(modelMarionette); + } +} + static void initStatic__ZetaCarinaeModules() { Plugin* p = new Plugin; @@ -3566,7 +3651,7 @@ void initStaticPlugins() initStatic__CVfunk(); initStatic__dBiz(); initStatic__DHE(); - initStatic__DrumKit(); + initStatic__eightfold(); initStatic__EnigmaCurry(); initStatic__ESeries(); initStatic__ExpertSleepersEncoders(); @@ -3619,6 +3704,7 @@ void initStaticPlugins() initStatic__ValleyAudio(); initStatic__Voxglitch(); initStatic__WhatTheRack(); + initStatic__WSTD_Drums(); initStatic__ZetaCarinaeModules(); initStatic__ZZC(); diff --git a/src/Cardinal/DistrhoPluginInfo.h b/src/Cardinal/DistrhoPluginInfo.h index 200488a..dca872d 100644 --- a/src/Cardinal/DistrhoPluginInfo.h +++ b/src/Cardinal/DistrhoPluginInfo.h @@ -53,6 +53,7 @@ #define DISTRHO_PLUGIN_IS_SYNTH 1 #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS + 10 #define DISTRHO_PLUGIN_NUM_OUTPUTS CARDINAL_NUM_AUDIO_OUTPUTS + 10 +#define DISTRHO_PLUGIN_WANT_MIDI_AS_MPE 1 #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 #define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1 #define DISTRHO_PLUGIN_WANT_FULL_STATE 1 diff --git a/src/CardinalCommon.cpp b/src/CardinalCommon.cpp index 1c4cc46..818540a 100644 --- a/src/CardinalCommon.cpp +++ b/src/CardinalCommon.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2024 Filipe Coelho + * Copyright (C) 2021-2025 Filipe Coelho * SPDX-License-Identifier: GPL-3.0-or-later */ @@ -99,7 +99,7 @@ void destroyStaticPlugins(); } } -const std::string CARDINAL_VERSION = "24.12"; +const std::string CARDINAL_VERSION = "25.06"; // ----------------------------------------------------------------------------------------------------------- @@ -626,47 +626,7 @@ Initializer::Initializer(const CardinalBasePlugin* const plugin, const CardinalB if (asset::userDir.empty()) { - #if defined(DISTRHO_OS_WASM) - asset::userDir = "/userfiles"; - #elif defined(ARCH_MAC) - asset::userDir = system::join(homeDir(), "Documents", "Cardinal"); - #elif defined(ARCH_WIN) - asset::userDir = system::join(getSpecialPath(kSpecialPathMyDocuments), "Cardinal"); - #else - std::string xdgConfigDir; - if (const char* const xdgEnv = getenv("XDG_CONFIG_HOME")) - xdgConfigDir = xdgEnv; - if (xdgConfigDir.empty()) - xdgConfigDir = system::join(homeDir(), ".config"); - - const std::string xdgDirsConfigPath(system::join(xdgConfigDir, "user-dirs.dirs")); - - if (system::exists(xdgDirsConfigPath)) - { - std::ifstream xdgDirsConfigFile(xdgDirsConfigPath, std::ios::in|std::ios::ate); - std::string xdgDirsConfig(xdgDirsConfigFile.tellg(), 0); - - xdgDirsConfigFile.seekg(0); - xdgDirsConfigFile.read(&xdgDirsConfig[0], xdgDirsConfig.size()); - - if (const char* const xdgDocsDir = std::strstr(xdgDirsConfig.c_str(), "XDG_DOCUMENTS_DIR=\"")) - { - if (const char* const xdgDocsDirNL = std::strstr(xdgDocsDir, "\"\n")) - { - asset::userDir = std::string(xdgDocsDir + 19, xdgDocsDirNL - xdgDocsDir - 19); - - if (string::startsWith(asset::userDir, "$HOME")) - asset::userDir.replace(asset::userDir.begin(), asset::userDir.begin() + 5, homeDir()); - - if (! system::exists(asset::userDir)) - asset::userDir.clear(); - } - } - } - - if (asset::userDir.empty()) - asset::userDir = system::join(homeDir(), "Documents", "Cardinal"); - #endif + asset::userDir = system::join(getSpecialDir(kSpecialDirDocuments), "Cardinal"); if (isRealInstance) { @@ -683,17 +643,10 @@ Initializer::Initializer(const CardinalBasePlugin* const plugin, const CardinalB #ifndef CARDINAL_COMMON_DSP_ONLY if (asset::configDir.empty()) { - #if defined(ARCH_MAC) || defined(ARCH_WIN) || defined(DISTRHO_OS_WASM) - asset::configDir = asset::userDir; - #else - if (const char* const xdgEnv = getenv("XDG_CONFIG_HOME")) - asset::configDir = system::join(xdgEnv, "Cardinal"); - else - asset::configDir = system::join(homeDir(), ".config", "Cardinal"); + asset::configDir = system::join(getSpecialDir(kSpecialDirConfig), "Cardinal"); if (isRealInstance) system::createDirectory(asset::configDir); - #endif } #endif @@ -875,7 +828,8 @@ void Initializer::stopRemoteServer() lo_server_thread_stop(oscServerThread); lo_server_thread_del_method(oscServerThread, nullptr, nullptr); lo_server_thread_free(oscServerThread); - oscServerThread = oscServer = nullptr; + oscServerThread = nullptr; + oscServer = nullptr; } #else if (oscServer != nullptr) diff --git a/src/CardinalFX/DistrhoPluginInfo.h b/src/CardinalFX/DistrhoPluginInfo.h index 1401000..b01d6f2 100644 --- a/src/CardinalFX/DistrhoPluginInfo.h +++ b/src/CardinalFX/DistrhoPluginInfo.h @@ -53,6 +53,7 @@ #define DISTRHO_PLUGIN_IS_SYNTH 0 #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS #define DISTRHO_PLUGIN_NUM_OUTPUTS CARDINAL_NUM_AUDIO_OUTPUTS +#define DISTRHO_PLUGIN_WANT_MIDI_AS_MPE 1 #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 #define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1 #define DISTRHO_PLUGIN_WANT_FULL_STATE 1 diff --git a/src/CardinalMini/DistrhoPluginInfo.h b/src/CardinalMini/DistrhoPluginInfo.h index c98736a..f9fcd18 100644 --- a/src/CardinalMini/DistrhoPluginInfo.h +++ b/src/CardinalMini/DistrhoPluginInfo.h @@ -44,6 +44,7 @@ #define DISTRHO_PLUGIN_IS_SYNTH 0 #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS + 5 #define DISTRHO_PLUGIN_NUM_OUTPUTS CARDINAL_NUM_AUDIO_OUTPUTS + 5 +#define DISTRHO_PLUGIN_WANT_MIDI_AS_MPE 1 #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 #define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1 #define DISTRHO_PLUGIN_WANT_FULL_STATE 1 diff --git a/src/CardinalMiniSep/DistrhoPluginInfo.h b/src/CardinalMiniSep/DistrhoPluginInfo.h index 3593730..cab92d1 100644 --- a/src/CardinalMiniSep/DistrhoPluginInfo.h +++ b/src/CardinalMiniSep/DistrhoPluginInfo.h @@ -43,6 +43,7 @@ #define DISTRHO_PLUGIN_IS_SYNTH 0 #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS + 5 #define DISTRHO_PLUGIN_NUM_OUTPUTS CARDINAL_NUM_AUDIO_OUTPUTS + 5 +#define DISTRHO_PLUGIN_WANT_MIDI_AS_MPE 1 #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 #define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1 #define DISTRHO_PLUGIN_WANT_FULL_STATE 1 diff --git a/src/CardinalNative/DistrhoPluginInfo.h b/src/CardinalNative/DistrhoPluginInfo.h index 3b8081d..88eff03 100644 --- a/src/CardinalNative/DistrhoPluginInfo.h +++ b/src/CardinalNative/DistrhoPluginInfo.h @@ -53,6 +53,7 @@ #define DISTRHO_PLUGIN_IS_SYNTH 0 #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS #define DISTRHO_PLUGIN_NUM_OUTPUTS CARDINAL_NUM_AUDIO_OUTPUTS +#define DISTRHO_PLUGIN_WANT_MIDI_AS_MPE 1 #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 #define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1 #define DISTRHO_PLUGIN_WANT_FULL_STATE 1 diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index b69ab28..f154871 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2024 Filipe Coelho + * Copyright (C) 2021-2025 Filipe Coelho * SPDX-License-Identifier: GPL-3.0-or-later */ @@ -414,7 +414,7 @@ protected: uint32_t getVersion() const override { - return d_version(0, 24, 12); + return d_version(0, 25, 6); } int64_t getUniqueId() const override diff --git a/src/CardinalRemote/Makefile b/src/CardinalRemote/Makefile index 8c89164..6e53f44 100644 --- a/src/CardinalRemote/Makefile +++ b/src/CardinalRemote/Makefile @@ -229,7 +229,6 @@ SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/chopin SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/debussy SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/goldberg SYMLINKED_DIRS_RESOURCES += cf/playeroscs -SYMLINKED_DIRS_RESOURCES += DrumKit/res/samples SYMLINKED_DIRS_RESOURCES += Fundamental/presets SYMLINKED_DIRS_RESOURCES += GrandeModular/presets SYMLINKED_DIRS_RESOURCES += LyraeModules/presets @@ -247,6 +246,7 @@ SYMLINKED_DIRS_RESOURCES += surgext/build/surge-data/fx_presets SYMLINKED_DIRS_RESOURCES += surgext/build/surge-data/wavetables SYMLINKED_DIRS_RESOURCES += surgext/patches SYMLINKED_DIRS_RESOURCES += surgext/presets +SYMLINKED_DIRS_RESOURCES += WSTD-Drums/res/samples LINK_FLAGS += $(foreach d,$(SYMLINKED_DIRS_RESOURCES),--preload-file=../../bin/CardinalNative.lv2/resources/$(d)@/resources/$(d)) endif LINK_FLAGS += -sALLOW_MEMORY_GROWTH diff --git a/src/CardinalSynth/DistrhoPluginInfo.h b/src/CardinalSynth/DistrhoPluginInfo.h index 2d9c3fd..6cf1102 100644 --- a/src/CardinalSynth/DistrhoPluginInfo.h +++ b/src/CardinalSynth/DistrhoPluginInfo.h @@ -52,6 +52,7 @@ #define DISTRHO_PLUGIN_IS_SYNTH 1 #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS #define DISTRHO_PLUGIN_NUM_OUTPUTS CARDINAL_NUM_AUDIO_OUTPUTS +#define DISTRHO_PLUGIN_WANT_MIDI_AS_MPE 1 #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 #define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1 #define DISTRHO_PLUGIN_WANT_FULL_STATE 1 diff --git a/src/Makefile b/src/Makefile index 48d3bed..8799bff 100644 --- a/src/Makefile +++ b/src/Makefile @@ -147,6 +147,9 @@ au: $(TARGETS) $(MAKE) au -C CardinalFX $(CARDINAL_SYNTH_ARGS) $(MAKE) au -C CardinalSynth $(CARDINAL_SYNTH_ARGS) +mapi: $(TARGETS) + $(MAKE) mapi -C CardinalFX $(CARDINAL_FX_ARGS) + lv2: $(TARGETS) $(MAKE) lv2 -C Cardinal $(MAKE) lv2 -C CardinalFX $(CARDINAL_FX_ARGS) diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 0cc66af..731dc36 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -264,6 +264,7 @@ endif ifeq ($(WASM),true) APP_EXT = .js +UI_TYPE = gles2 endif USE_VST2_BUNDLE = true @@ -317,7 +318,6 @@ SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/debussy SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/goldberg SYMLINKED_DIRS_RESOURCES += cf/playeroscs SYMLINKED_DIRS_RESOURCES += DHE-Modules/svg -SYMLINKED_DIRS_RESOURCES += DrumKit/res/samples SYMLINKED_DIRS_RESOURCES += GrandeModular/presets SYMLINKED_DIRS_RESOURCES += LyraeModules/presets SYMLINKED_DIRS_RESOURCES += Meander/res @@ -332,6 +332,7 @@ SYMLINKED_DIRS_RESOURCES += Orbits/presets SYMLINKED_DIRS_RESOURCES += stoermelder-packone/presets SYMLINKED_DIRS_RESOURCES += surgext/build/surge-data/fx_presets SYMLINKED_DIRS_RESOURCES += surgext/build/surge-data/wavetables +SYMLINKED_DIRS_RESOURCES += WSTD-Drums/res/samples endif LINK_FLAGS += $(foreach d,$(SYMLINKED_DIRS_RESOURCES),--preload-file=../../bin/CardinalNative.lv2/resources/$(d)@/resources/$(d)) @@ -408,6 +409,11 @@ endif BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"' +# -------------------------------------------------------------- +# we know what we are doing, promise! + +BUILD_CXX_FLAGS += -DDISTRHO_NO_WARNINGS + # -------------------------------------------------------------- # Enable all possible plugin types and setup resources diff --git a/src/custom/dep.cpp b/src/custom/dep.cpp index 59ee7bb..0f5f5ce 100644 --- a/src/custom/dep.cpp +++ b/src/custom/dep.cpp @@ -54,7 +54,6 @@ enum DarkMode { kModeCf, kModeComputerscare, kModeDHE, - kModeDrumKit, kModeESeries, kModeLilacLoop, kModeLittleUtils, @@ -259,19 +258,6 @@ static const struct { { 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 - { kModeDrumKit, "/DrumKit/res/Baronial.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/BD9.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/ClosedHH.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/CR78.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/DMX.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Gnome.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Marionette.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/OpenHH.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/SBD.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Sequencer.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Snare.svg", {}, -1 }, - { kModeDrumKit, "/DrumKit/res/Tomi.svg", {}, -1 }, // Custom, runtime dark mode used with permission { kModeESeries,"/ESeries/res/E340.svg", {}, -1 }, // GPL3.0-or-later @@ -290,12 +276,15 @@ static const struct { { kModeLOGinstruments, "/LOGinstruments/res/velvet-nofonts.svg", {}, -1 }, // GPL-3.0-or-later { kModeKocmoc, "/kocmoc/res/DDLY.svg", {}, -1 }, + { kModeKocmoc, "/kocmoc/res/DIOD.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/LADR.svg", {}, -1 }, + { kModeKocmoc, "/kocmoc/res/uLADR.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/MUL.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/OP.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/PHASR.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/SKF.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/SVF.svg", {}, -1 }, + { kModeKocmoc, "/kocmoc/res/uSVF.svg", {}, -1 }, { kModeKocmoc, "/kocmoc/res/TRG.svg", {}, -1 }, // GPL-3.0-or-later { kModeMyth, "/myth-modules/res/Mavka.svg", {}, -1 }, @@ -377,6 +366,7 @@ enum LightMode { kModePrism, kModeRepelzen, kModeSonusmodular, + kModeWSTDDrums, }; static const struct { @@ -439,6 +429,11 @@ static const struct { { kModeBefaco, "/Befaco/res/panels/Octaves.svg" }, { kModeBefaco, "/Befaco/res/panels/Bypass.svg" }, { kModeBefaco, "/Befaco/res/panels/Bandit.svg" }, + { kModeBefaco, "/Befaco/res/panels/Atte.svg" }, + { kModeBefaco, "/Befaco/res/panels/AxBC.svg" }, + { kModeBefaco, "/Befaco/res/panels/Mixer2.svg" }, + { kModeBefaco, "/Befaco/res/panels/MuDi.svg" }, + { kModeBefaco, "/Befaco/res/panels/Slew.svg" }, // GPLv3+ { kModeCardinal, "/Cardinal/res/AudioFile.svg" }, { kModeCardinal, "/Cardinal/res/AudioToCVPitch.svg" }, @@ -592,6 +587,20 @@ static const struct { { kModeSonusmodular, "/sonusmodular/res/tropicana.svg" }, { kModeSonusmodular, "/sonusmodular/res/twoff.svg" }, { kModeSonusmodular, "/sonusmodular/res/yabp.svg" }, + // CC0-1.0 + { kModeWSTDDrums, "/WSTD-Drums/res/Baronial.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/BD9.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/ClosedHH.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/CR78.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/DMX.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Gnome.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Marionette.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/OpenHH.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/SBD.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Sequencer.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Snare.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/Tomi.svg" }, + { kModeWSTDDrums, "/WSTD-Drums/res/component/Knob.svg" }, }; static inline @@ -628,12 +637,6 @@ bool invertPaintForDarkMode(const DarkMode mode, NSVGshape* const shape, NSVGpai { switch (mode) { - // Special case for DrumKit background gradient - case kModeDrumKit: - std::free(paint.gradient); - paint.type = NSVG_PAINT_COLOR; - paint.color = 0xff191919; - return true; // Special case for LOGinstruments gradient case kModeLOGinstruments: // original color from stop 1 was copied to this stop and made ~25% darker diff --git a/src/override/Scene.cpp b/src/override/Scene.cpp index 909b498..5b6e85a 100644 --- a/src/override/Scene.cpp +++ b/src/override/Scene.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2024 Filipe Coelho + * Copyright (C) 2021-2025 Filipe Coelho * SPDX-License-Identifier: GPL-3.0-or-later */ @@ -207,20 +207,23 @@ void Scene::step() { (internal->historyActionIndex != actionIndex && actionIndex > 0 && time - internal->lastSceneChangeTime >= 1.0)) { - remoteDetails->first = false; - - const std::string& name(APP->history->actions[actionIndex - 1]->name); - static const std::vector ignoredNames = { - "move knob", - "move modules", - "move switch", - }; - if (std::find(ignoredNames.cbegin(), ignoredNames.cend(), name) == ignoredNames.cend()) { - printf("action '%s'\n", APP->history->actions[actionIndex - 1]->name.c_str()); + if (remoteDetails->first) { + remoteDetails->first = false; remoteUtils::sendFullPatchToRemote(remoteDetails); - - if (remoteDetails->screenshot) { - window::generateScreenshot(); + } else { + const std::string& name(APP->history->actions[actionIndex - 1]->name); + static const std::vector ignoredNames = { + "move knob", + "move modules", + "move switch", + }; + if (std::find(ignoredNames.cbegin(), ignoredNames.cend(), name) == ignoredNames.cend()) { + d_debug("action '%s'\n", APP->history->actions[actionIndex - 1]->name.c_str()); + remoteUtils::sendFullPatchToRemote(remoteDetails); + + if (remoteDetails->screenshot) { + window::generateScreenshot(); + } } } internal->historyActionIndex = actionIndex; diff --git a/src/override/plugin.cpp b/src/override/plugin.cpp index 957fe9d..7b059e4 100644 --- a/src/override/plugin.cpp +++ b/src/override/plugin.cpp @@ -48,6 +48,7 @@ static const std::map pluginSlugFallbacks = { {"AudibleInstrumentsPreview", "AudibleInstruments"}, {"SequelSequencers", "DanielDavies"}, {"DelexanderVol1", "DelexandraVol1"}, + {"DrumKit", "WSTD-Drums"} // {"", ""}, }; @@ -102,6 +103,18 @@ static const std::map moduleSlugFallbacks = {{"Core", "Notes"}, {"Cardinal", "TextEditor"}}, {{"Core", "Blank"}, {"Cardinal", "Blank"}}, {{"MindMeld-ShapeMasterPro", "ShapeMasterPro"}, {"MindMeldModular", "ShapeMaster"}}, + {{"DrumKit", "BassDrum9"}, {"WSTD-Drums", "BassDrum9"}}, + {{"DrumKit", "ClosedHiHat"}, {"WSTD-Drums", "ClosedHiHat"}}, + {{"DrumKit", "CR78"}, {"WSTD-Drums", "CR78"}}, + {{"DrumKit", "DMX"}, {"WSTD-Drums", "DMX"}}, + {{"DrumKit", "OpenHiHat"}, {"WSTD-Drums", "OpenHiHat"}}, + {{"DrumKit", "SyntheticBassDrum"}, {"WSTD-Drums", "SyntheticBassDrum"}}, + {{"DrumKit", "SnareDrumN"}, {"WSTD-Drums", "SnareDrumN"}}, + {{"DrumKit", "Tomi"}, {"WSTD-Drums", "Tomi"}}, + {{"DrumKit", "Gnome"}, {"WSTD-Drums", "Gnome"}}, + {{"DrumKit", "Sequencer"}, {"WSTD-Drums", "Sequencer"}}, + {{"DrumKit", "Baronial"}, {"WSTD-Drums", "Baronial"}}, + {{"DrumKit", "MarionetteBass"}, {"WSTD-Drums", "MarionetteBass"}}, // {{"", ""}, {"", ""}}, }; diff --git a/utils/macOS/Info_JACK.plist b/utils/macOS/Info_JACK.plist index c97c0e1..80a5cf1 100644 --- a/utils/macOS/Info_JACK.plist +++ b/utils/macOS/Info_JACK.plist @@ -11,11 +11,11 @@ CFBundleIdentifier studio.kx.distrho.cardinal.jack CFBundleShortVersionString - 24.12 + 25.06 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright - (C) 2011-2024 Filipe Coelho. + (C) 2011-2025 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. NSHighResolutionCapable diff --git a/utils/macOS/Info_Native.plist b/utils/macOS/Info_Native.plist index 5051b55..b9c5068 100644 --- a/utils/macOS/Info_Native.plist +++ b/utils/macOS/Info_Native.plist @@ -11,11 +11,11 @@ CFBundleIdentifier studio.kx.distrho.cardinal.native CFBundleShortVersionString - 24.12 + 25.06 LSMinimumSystemVersion 10.15 NSHumanReadableCopyright - (C) 2011-2024 Filipe Coelho. + (C) 2011-2025 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. NSHighResolutionCapable