From eb5d66d29b0edb896cc8ff51512243e5defd59db Mon Sep 17 00:00:00 2001 From: Ashley Strahle Date: Fri, 3 Jul 2026 07:40:53 +0000 Subject: [PATCH] Clean baseline: skip tick-0 flash, first flash at tick 24 (first beat boundary) --- src/main.cpp | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 22a0b26..ef86a48 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,9 +27,8 @@ void midi_task(void* parameter) { Serial.println("[TASK] MIDI task started on core 0"); // Beat timing fixes for precise beat alignment - sync to real MIDI time, not hardcoded tempo - uint32_t last_beat = UINT32_MAX; + uint32_t last_beat = 0; uint32_t flash_start = 0; - uint8_t flash_peak = 255; while (true) { midi_transport.update(); @@ -42,18 +41,10 @@ void midi_task(void* parameter) { uint32_t current_beat = tick / 24; // Check if we've crossed a beat boundary. - // last_beat starts as UINT32_MAX so tick 0 (START) always triggers if (current_beat != last_beat) { last_beat = current_beat; flash_start = now; - // First beat after each START is beat 1 (downbeat) — full white - // Loopy Pro sends START at bar boundaries so this is always beat 1 - if (current_beat == 0) { - flash_peak = 255; - } else { - flash_peak = 64; - } - mux.set_led_color(6, flash_peak, flash_peak, flash_peak); + mux.set_led_color(6, 255, 255, 255); mux.show(); } @@ -66,7 +57,7 @@ void midi_task(void* parameter) { flash_start = 0; } else { float b = 1.0f - (float)elapsed / 80.0f; - uint8_t v = (uint8_t)((float)flash_peak * b * b); + uint8_t v = (uint8_t)(255 * b * b); mux.set_led_color(6, v, v, v); mux.show(); }