Browse Source

Merge branch 'main' into add-loginstruments

pull/656/head
ksmk GitHub 5 months ago
parent
commit
4ee60f2d18
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
43 changed files with 369 additions and 211 deletions
  1. +1
    -1
      .github/ISSUE_TEMPLATE/bug.yaml
  2. +16
    -13
      .github/workflows/build.yml
  3. +7
    -4
      .gitmodules
  4. +20
    -8
      Makefile
  5. +2
    -1
      README.md
  6. +1
    -1
      carla
  7. +1
    -0
      deps/Makefile
  8. +1
    -1
      deps/PawPaw
  9. +4
    -1
      docs/LICENSES.md
  10. +1
    -1
      dpf
  11. +1
    -1
      plugins/AmalgamatedHarmonics
  12. +1
    -1
      plugins/Befaco
  13. +1
    -1
      plugins/CVfunk
  14. +43
    -3
      plugins/Cardinal/src/HostTime.cpp
  15. +0
    -1
      plugins/DrumKit
  16. +1
    -1
      plugins/HetrickCV
  17. +1
    -1
      plugins/JW-Modules
  18. +1
    -1
      plugins/LyraeModules
  19. +51
    -31
      plugins/Makefile
  20. +1
    -1
      plugins/MockbaModular
  21. +1
    -1
      plugins/PathSet
  22. +1
    -1
      plugins/Sapphire
  23. +1
    -0
      plugins/WSTD-Drums
  24. +1
    -1
      plugins/ZZC
  25. +1
    -0
      plugins/eightfold
  26. +1
    -1
      plugins/kocmoc
  27. +126
    -40
      plugins/plugins.cpp
  28. +1
    -0
      src/Cardinal/DistrhoPluginInfo.h
  29. +6
    -52
      src/CardinalCommon.cpp
  30. +1
    -0
      src/CardinalFX/DistrhoPluginInfo.h
  31. +1
    -0
      src/CardinalMini/DistrhoPluginInfo.h
  32. +1
    -0
      src/CardinalMiniSep/DistrhoPluginInfo.h
  33. +1
    -0
      src/CardinalNative/DistrhoPluginInfo.h
  34. +2
    -2
      src/CardinalPlugin.cpp
  35. +1
    -1
      src/CardinalRemote/Makefile
  36. +1
    -0
      src/CardinalSynth/DistrhoPluginInfo.h
  37. +3
    -0
      src/Makefile
  38. +7
    -1
      src/Makefile.cardinal.mk
  39. +23
    -20
      src/custom/dep.cpp
  40. +17
    -14
      src/override/Scene.cpp
  41. +13
    -0
      src/override/plugin.cpp
  42. +2
    -2
      utils/macOS/Info_JACK.plist
  43. +2
    -2
      utils/macOS/Info_Native.plist

+ 1
- 1
.github/ISSUE_TEMPLATE/bug.yaml View File

@@ -5,7 +5,7 @@ body:
id: version
attributes:
label: Version
value: "24.12"
value: "25.06"
validations:
required: true
- type: dropdown


+ 16
- 13
.github/workflows/build.yml View File

@@ -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


+ 7
- 4
.gitmodules View File

@@ -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
url = https://github.com/wapiflapi/admiral.git
[submodule "plugins/eightfold"]
path = plugins/eightfold
url = https://github.com/scanner-darkly/eightfold.git

+ 20
- 8
Makefile View File

@@ -1,12 +1,12 @@
#!/usr/bin/make -f
# DISTRHO Cardinal Plugin
# Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2021-2025 Filipe Coelho <falktx@falktx.com>
# 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)



+ 2
- 1
README.md View File

@@ -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)



+ 1
- 1
carla

@@ -1 +1 @@
Subproject commit 17000e7fe99459b25a50094a8b00bdfa12f2bfbc
Subproject commit 034d0c4242ba834e0b5a8967a5eefedf9d97178c

+ 1
- 0
deps/Makefile View File

@@ -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


+ 1
- 1
deps/PawPaw

@@ -1 +1 @@
Subproject commit 0985cf8d1c3a00b1958ef90e0f1aa511b865241a
Subproject commit f6eaed13bdeccec013d81ba2261f98aa8f452702

+ 4
- 1
docs/LICENSES.md View File

@@ -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 |


+ 1
- 1
dpf

@@ -1 +1 @@
Subproject commit c1ef6244581cf8378366c686cf210e3062ec40a5
Subproject commit 201fa7387a2ec5bb3bc8352e4551eafccbcfcfb8

+ 1
- 1
plugins/AmalgamatedHarmonics

@@ -1 +1 @@
Subproject commit 97700c06af7df4d8fcf173ae3670b7907a682627
Subproject commit bf74c2b7674c610cfc57421157d814c98bd92438

+ 1
- 1
plugins/Befaco

@@ -1 +1 @@
Subproject commit 5a80023d86e0f67ead3e27385170310cd430d44c
Subproject commit 5914634cd91cf11cc32394616252beb19c5c934c

+ 1
- 1
plugins/CVfunk

@@ -1 +1 @@
Subproject commit 37d6a2ac4562a266474aab47ff4b490ddd7dfc64
Subproject commit 51f2b4e61cde7978fb84cdd892a1d3aaedc0ff5b

+ 43
- 3
plugins/Cardinal/src/HostTime.cpp View File

@@ -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<BarDivisions>(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>(&MenuLabel::text, "Bar Division"));
menu->addChild(construct<BarDivisionItem>(&BarDivisionItem::text, "Bars/1", &BarDivisionItem::module, module, &BarDivisionItem::value, HostTime::Bars1));
menu->addChild(construct<BarDivisionItem>(&BarDivisionItem::text, "Bars/4", &BarDivisionItem::module, module, &BarDivisionItem::value, HostTime::Bars4));
menu->addChild(construct<BarDivisionItem>(&BarDivisionItem::text, "Bars/8", &BarDivisionItem::module, module, &BarDivisionItem::value, HostTime::Bars8));
}
};
#else
struct HostTimeWidget : ModuleWidget {


+ 0
- 1
plugins/DrumKit

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

+ 1
- 1
plugins/HetrickCV

@@ -1 +1 @@
Subproject commit 4dc7c53b9f230bfd4f6c4deb432c477a65188ac0
Subproject commit 8c46fbe13acdcb87991719bddcc6ec8abcf152ef

+ 1
- 1
plugins/JW-Modules

@@ -1 +1 @@
Subproject commit 9d8f8515deb20d7e14ca85b4c1d04ec6b66b3e8d
Subproject commit 72c8b569dd2cc12ce16abe2da582fc58e07c3d54

+ 1
- 1
plugins/LyraeModules

@@ -1 +1 @@
Subproject commit 8162f0d6aee157425c7d7eb3582d905c9ac6c43e
Subproject commit b6dde88e4d780de0207ece26c5b7de23d61c84e6

+ 51
- 31
plugins/Makefile View File

@@ -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 $<"


+ 1
- 1
plugins/MockbaModular

@@ -1 +1 @@
Subproject commit 479d2c8007b2087cdf557a491df25c5b85784a96
Subproject commit b819787d86a1db0ad6f4208cb96b8e3589b5e4ee

+ 1
- 1
plugins/PathSet

@@ -1 +1 @@
Subproject commit 66e69a2f2047e3dab06275b12852e56d143388cf
Subproject commit 2f55b4b115e76623ef54e24c30daad4d576a4446

+ 1
- 1
plugins/Sapphire

@@ -1 +1 @@
Subproject commit fcfdfab93efed535ea65e0a47c870f6e2e6654be
Subproject commit ef10da4e2578162b2db2f6534857d6504491daf4

+ 1
- 0
plugins/WSTD-Drums

@@ -0,0 +1 @@
Subproject commit 05330ce99f4ec742f906c77ab5d8758a15decb4c

+ 1
- 1
plugins/ZZC

@@ -1 +1 @@
Subproject commit 15364616da500d31f7545dcbfc01b4fda7f7c9d4
Subproject commit f5900888025fcfad7842770e83365ba743bb51bd

+ 1
- 0
plugins/eightfold

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

+ 1
- 1
plugins/kocmoc

@@ -1 +1 @@
Subproject commit eb46ce3a8b5795d61c2e3eb60f6ca58799a8cee2
Subproject commit ea69acab96db49c32601b609cdfe06444ecee0e8

+ 126
- 40
plugins/plugins.cpp View File

@@ -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();



+ 1
- 0
src/Cardinal/DistrhoPluginInfo.h View File

@@ -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


+ 6
- 52
src/CardinalCommon.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2025 Filipe Coelho <falktx@falktx.com>
* 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)


+ 1
- 0
src/CardinalFX/DistrhoPluginInfo.h View File

@@ -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


+ 1
- 0
src/CardinalMini/DistrhoPluginInfo.h View File

@@ -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


+ 1
- 0
src/CardinalMiniSep/DistrhoPluginInfo.h View File

@@ -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


+ 1
- 0
src/CardinalNative/DistrhoPluginInfo.h View File

@@ -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


+ 2
- 2
src/CardinalPlugin.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2025 Filipe Coelho <falktx@falktx.com>
* 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


+ 1
- 1
src/CardinalRemote/Makefile View File

@@ -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


+ 1
- 0
src/CardinalSynth/DistrhoPluginInfo.h View File

@@ -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


+ 3
- 0
src/Makefile View File

@@ -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)


+ 7
- 1
src/Makefile.cardinal.mk View File

@@ -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



+ 23
- 20
src/custom/dep.cpp View File

@@ -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


+ 17
- 14
src/override/Scene.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2025 Filipe Coelho <falktx@falktx.com>
* 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<std::string> 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<std::string> 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;


+ 13
- 0
src/override/plugin.cpp View File

@@ -48,6 +48,7 @@ static const std::map<std::string, std::string> pluginSlugFallbacks = {
{"AudibleInstrumentsPreview", "AudibleInstruments"},
{"SequelSequencers", "DanielDavies"},
{"DelexanderVol1", "DelexandraVol1"},
{"DrumKit", "WSTD-Drums"}
// {"", ""},
};

@@ -102,6 +103,18 @@ static const std::map<PluginModuleSlug, PluginModuleSlug> 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"}},
// {{"", ""}, {"", ""}},
};



+ 2
- 2
utils/macOS/Info_JACK.plist View File

@@ -11,11 +11,11 @@
<key>CFBundleIdentifier</key>
<string>studio.kx.distrho.cardinal.jack</string>
<key>CFBundleShortVersionString</key>
<string>24.12</string>
<string>25.06</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
<key>NSHumanReadableCopyright</key>
<string>(C) 2011-2024 Filipe Coelho.
<string>(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.</string>
<key>NSHighResolutionCapable</key>
<true/>


+ 2
- 2
utils/macOS/Info_Native.plist View File

@@ -11,11 +11,11 @@
<key>CFBundleIdentifier</key>
<string>studio.kx.distrho.cardinal.native</string>
<key>CFBundleShortVersionString</key>
<string>24.12</string>
<string>25.06</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
<key>NSHumanReadableCopyright</key>
<string>(C) 2011-2024 Filipe Coelho.
<string>(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.</string>
<key>NSHighResolutionCapable</key>
<true/>


Loading…
Cancel
Save