| @@ -5,7 +5,7 @@ body: | |||
| id: version | |||
| attributes: | |||
| label: Version | |||
| value: "24.12" | |||
| value: "25.06" | |||
| validations: | |||
| required: true | |||
| - type: dropdown | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -263,4 +263,3 @@ | |||
| [submodule "plugins/eightfold"] | |||
| path = plugins/eightfold | |||
| url = https://github.com/scanner-darkly/eightfold.git | |||
| @@ -15,7 +15,7 @@ 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 | |||
| @@ -145,7 +145,6 @@ 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) | |||
| @@ -199,6 +198,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 @@ | |||
| Subproject commit 17000e7fe99459b25a50094a8b00bdfa12f2bfbc | |||
| Subproject commit c9b60551497a7a9b76d86d694b6af08afe96335c | |||
| @@ -1 +1 @@ | |||
| Subproject commit 0946f783f0e9e230bca893289325f91144a3429f | |||
| Subproject commit f6eaed13bdeccec013d81ba2261f98aa8f452702 | |||
| @@ -39,7 +39,6 @@ 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 | | | |||
| @@ -92,6 +91,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 | | | |||
| @@ -1 +1 @@ | |||
| Subproject commit f3be5aee081d87cc7a6795110525569670ff0907 | |||
| Subproject commit 8c30f9f1eddba89805f4131aeb2d6ca3e31a46b1 | |||
| @@ -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 { | |||
| @@ -1 +0,0 @@ | |||
| Subproject commit b94c5deb9b93d810f582221f03db8a6feaee6679 | |||
| @@ -1 +1 @@ | |||
| Subproject commit 52b1e03c34bd1baa264395c150cd62d8e192b12f | |||
| Subproject commit 8c46fbe13acdcb87991719bddcc6ec8abcf152ef | |||
| @@ -694,19 +694,6 @@ 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) | |||
| # modules/types which are present in other plugins | |||
| DRUMKIT_CUSTOM = ADSR Envelope LowFrequencyOscillator | |||
| # -------------------------------------------------------------- | |||
| # eightfold | |||
| @@ -843,7 +830,7 @@ JW_CUSTOM = PlayHead Quantizer Arrange | |||
| 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 | |||
| @@ -1338,6 +1325,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 | |||
| @@ -1487,7 +1487,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 | |||
| @@ -2210,7 +2210,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 | |||
| @@ -2266,7 +2266,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 \ | |||
| @@ -2286,7 +2286,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 \ | |||
| @@ -2339,7 +2339,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 | |||
| @@ -2350,15 +2350,6 @@ $(BUILD_DIR)/DHE-Modules/src/%.cpp.o: DHE-Modules/src/%.cpp | |||
| -DpluginInstance=pluginInstance__DHE \ | |||
| -IDHE-Modules/src | |||
| $(BUILD_DIR)/DrumKit/%.cpp.o: DrumKit/%.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 | |||
| $(BUILD_DIR)/eightfold/src/%.cpp.o: eightfold/src/%.cpp | |||
| -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | |||
| @echo "Compiling $<" | |||
| @@ -2508,7 +2499,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 | |||
| @@ -2517,7 +2508,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 | |||
| @@ -2638,7 +2629,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 \ | |||
| @@ -2719,7 +2710,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 | |||
| @@ -2793,7 +2784,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 | |||
| @@ -2823,7 +2814,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 \ | |||
| @@ -2835,7 +2826,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 | |||
| @@ -2846,6 +2837,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 @@ | |||
| Subproject commit a1f7deb7931b7ef0fc4fa9f8a3871d9e37e81e73 | |||
| Subproject commit e2bcefcaa7753f017cd131a28aae0e5e346aafec | |||
| @@ -0,0 +1 @@ | |||
| Subproject commit 05330ce99f4ec742f906c77ab5d8758a15decb4c | |||
| @@ -1 +1 @@ | |||
| Subproject commit eaf7cbf3af0a8525d3c649c53eab476c3052d41b | |||
| Subproject commit ea69acab96db49c32601b609cdfe06444ecee0e8 | |||
| @@ -395,10 +395,6 @@ namespace truth { void init(Plugin*); } | |||
| namespace xycloid { void init(Plugin*); } | |||
| } | |||
| // DrumKit | |||
| #include "DrumKit/src/DrumKit.hpp" | |||
| void setupSamples(); | |||
| // eightfold | |||
| #include "eightfold/src/plugin.hpp" | |||
| @@ -468,6 +464,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; | |||
| @@ -486,6 +483,7 @@ extern Model* modelGingerbread; | |||
| extern Model* modelLogicCombine; | |||
| extern Model* modelMidSide; | |||
| extern Model* modelMinMax; | |||
| extern Model* modelNormals; | |||
| extern Model* modelPhaseDrivenSequencer; | |||
| extern Model* modelPhaseDrivenSequencer32; | |||
| extern Model* modelPhasorAnalyzer; | |||
| @@ -515,8 +513,10 @@ 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; | |||
| @@ -900,6 +900,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" | |||
| @@ -957,7 +961,6 @@ 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; | |||
| @@ -1010,6 +1013,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; | |||
| @@ -2147,30 +2151,6 @@ static void initStatic__DHE() | |||
| } | |||
| } | |||
| static void initStatic__DrumKit() | |||
| { | |||
| Plugin* const p = new Plugin; | |||
| pluginInstance__DrumKit = p; | |||
| const StaticPluginLoader spl(p, "DrumKit"); | |||
| 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__eightfold() | |||
| { | |||
| Plugin* const p = new Plugin; | |||
| @@ -2430,6 +2410,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); | |||
| @@ -2448,6 +2429,7 @@ 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); | |||
| @@ -2477,8 +2459,10 @@ static void initStatic__HetrickCV() | |||
| 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); | |||
| @@ -2618,6 +2602,7 @@ static void initStatic__kocmoc() | |||
| p->addModel(modelTRG); | |||
| p->addModel(modelLADR); | |||
| p->addModel(modeluLADR); | |||
| p->addModel(modelDIOD); | |||
| p->addModel(modelOP); | |||
| p->addModel(modelPHASR); | |||
| p->addModel(modelMUL); | |||
| @@ -3537,6 +3522,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; | |||
| @@ -3609,7 +3618,6 @@ void initStaticPlugins() | |||
| initStatic__CVfunk(); | |||
| initStatic__dBiz(); | |||
| initStatic__DHE(); | |||
| initStatic__DrumKit(); | |||
| initStatic__eightfold(); | |||
| initStatic__EnigmaCurry(); | |||
| initStatic__ESeries(); | |||
| @@ -3662,6 +3670,7 @@ void initStaticPlugins() | |||
| initStatic__ValleyAudio(); | |||
| initStatic__Voxglitch(); | |||
| initStatic__WhatTheRack(); | |||
| initStatic__WSTD_Drums(); | |||
| initStatic__ZetaCarinaeModules(); | |||
| initStatic__ZZC(); | |||
| @@ -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"; | |||
| // ----------------------------------------------------------------------------------------------------------- | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -317,7 +317,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 +331,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)) | |||
| @@ -54,7 +54,6 @@ enum DarkMode { | |||
| kModeCf, | |||
| kModeComputerscare, | |||
| kModeDHE, | |||
| kModeDrumKit, | |||
| kModeESeries, | |||
| kModeLilacLoop, | |||
| kModeLittleUtils, | |||
| @@ -258,19 +257,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 | |||
| @@ -284,6 +270,7 @@ static const struct { | |||
| { kModeLittleUtils, "/LittleUtils/res/TeleportOut.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 }, | |||
| @@ -373,6 +360,7 @@ enum LightMode { | |||
| kModePrism, | |||
| kModeRepelzen, | |||
| kModeSonusmodular, | |||
| kModeWSTDDrums, | |||
| }; | |||
| static const struct { | |||
| @@ -593,6 +581,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 | |||
| @@ -629,12 +631,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 PathSet shifty gradient | |||
| case kModePathSet: | |||
| paint.gradient->stops[0].color = 0xff7c4919; // 50% darker than main blue | |||
| @@ -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"}}, | |||
| // {{"", ""}, {"", ""}}, | |||
| }; | |||
| @@ -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/> | |||
| @@ -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/> | |||