From 4a64135373a0b1bbb9304bc362e67bb8624c9a4b Mon Sep 17 00:00:00 2001 From: Joakim Langkilde Date: Thu, 25 Jun 2026 12:44:17 +0200 Subject: [PATCH] feat: drop the hold-both-footswitches DFU gesture DFU is reachable over MIDI (CC 119 >= 64) and via the Seed's BOOT+RESET buttons, so the footswitch gesture is redundant -- and removing it frees the footswitch combinations for upcoming features (presets). Only the call site in main.cpp is removed; the vendored Hothouse proxy is untouched, and --gc-sections drops the now-unused method (~0.9 KB flash reclaimed). Docs/comments updated (README, params.h, flash scripts, architecture SVG). Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 3 +++ README.md | 4 +++- docs/firmware-architecture.svg | 2 +- scripts/flash.ps1 | 2 +- scripts/flash.sh | 2 +- src/config/params.h | 2 +- src/main.cpp | 5 ++--- 7 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bed9bfd..187bb42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this pr uses [Semantic Versioning](https://semver.org/) (`vMAJOR.MINOR.PATCH`). ## [Unreleased] +- **Removed the "hold both footswitches → DFU" gesture.** Enter DFU for flashing over MIDI + (CC 119 ≥ 64, e.g. from Propagator) or with the Daisy Seed's BOOT+RESET buttons. Frees the + footswitch combinations for upcoming features (e.g. presets). - **Lower audio-CPU on the voice path** (no audible change): the per-voice filter only recomputes its coefficients when cutoff / resonance / filter-type actually change, so static-filter patches skip a `sinf`+`powf` (Svf) or coefficient polynomial (Moog) every diff --git a/README.md b/README.md index bdfe836..81d4438 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,9 @@ Spore currently targets one platform: | **Footsw 1** | **Tap** = engage/bypass · **Hold** = edit FX (knobs become FX controls) | | **Footsw 2** | Mode action - Granular **freeze**, Generative **re-seed** | | **LED 1 / 2**| Engaged state (mid = editing FX) / active FX | -| Hold **both** footswitches 2s | Reboot to **DFU** for flashing | + +Enter DFU for flashing over MIDI (**CC 119** ≥ 64, e.g. from Propagator) or with the Daisy +Seed's **BOOT + RESET** buttons. Audio: Hothouse stereo **in** and **out** (1/4" jacks). Synth & Generative ignore the input (they generate); Granular records and reuses it. diff --git a/docs/firmware-architecture.svg b/docs/firmware-architecture.svg index c9186e4..ca04735 100644 --- a/docs/firmware-architecture.svg +++ b/docs/firmware-architecture.svg @@ -39,7 +39,7 @@ 3 Togglesmode · var · FX - 2 Footswitchesbypass · action · DFU + 2 Footswitchesbypass · action Analog sensorlight / pressure (ADC) diff --git a/scripts/flash.ps1 b/scripts/flash.ps1 index 197613f..fdc9050 100644 --- a/scripts/flash.ps1 +++ b/scripts/flash.ps1 @@ -1,6 +1,6 @@ # Build + flash over USB DFU (no programmer needed). # Put the device in the bootloader first: hold BOOT, tap RESET -# (or hold BOTH footswitches for 2s to trigger the DFU reboot gesture). +# (or send MIDI CC 119 >= 64 from the editor to reboot into DFU). $ErrorActionPreference = "Stop" . (Join-Path $PSScriptRoot "env.ps1") $root = Split-Path $PSScriptRoot -Parent diff --git a/scripts/flash.sh b/scripts/flash.sh index fa1acae..37838af 100644 --- a/scripts/flash.sh +++ b/scripts/flash.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Build + flash over USB DFU (no programmer needed). # Put the device in the bootloader first: hold BOOT, tap RESET -# (or hold BOTH footswitches for 2s to trigger the DFU reboot gesture). +# (or send MIDI CC 119 >= 64 from the editor to reboot into DFU). set -euo pipefail . "$(dirname "$0")/env.sh" cd "$(dirname "$0")/.." diff --git a/src/config/params.h b/src/config/params.h index f5435be..bcaa29b 100644 --- a/src/config/params.h +++ b/src/config/params.h @@ -20,7 +20,7 @@ // ... or FX params while editing (hold FOOTSW 1) -- see `params::fx` // FOOTSW 1 : tap = engage/bypass | HOLD = edit FX (knobs -> FX, soft-takeover) // FOOTSW 2 : mode action (Granular = freeze, Generative = re-seed) -// (hold BOTH footswitches 2s -> reboot to DFU for flashing) +// (DFU for flashing: MIDI CC 119 >= 64, or the Seed's BOOT+RESET buttons) // ============================================================================= #pragma once diff --git a/src/main.cpp b/src/main.cpp index c0b684d..b3b9351 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ // TOGGLE 3 : FX (UP=off MIDDLE=delay DOWN=reverb) // FOOTSW 1 : tap = engage/bypass | HOLD = edit FX (knobs -> FX, soft-takeover) // FOOTSW 2 : mode action (freeze / re-seed) -// Hold BOTH footswitches 2s -> reboot to DFU for flashing. +// Enter DFU for flashing over MIDI (CC 119 >= 64) or via the Seed's BOOT+RESET buttons. // ============================================================================= #include "daisy_seed.h" #include "hothouse.h" @@ -287,7 +287,7 @@ int main() { // (Motion IMU is tier-2 / deferred -- see io/imu.h.) g_sensors.Init(hw); // re-inits ADC to add analog input on A0/D15 - // Footswitch LEDs (pins 22/23 are free outside the DFU flash gesture). + // Footswitch LEDs. led1.Init(hw.seed.GetPin(Hothouse::LED_1), false); led2.Init(hw.seed.GetPin(Hothouse::LED_2), false); @@ -318,7 +318,6 @@ int main() { led2.Update(); hw.DelayMs(1); // poll USB MIDI often so the RX FIFO never backs up (dropped notes) - hw.CheckResetToBootloader(); } return 0; }