Beat 0 (first beat after START) full white, subsequent beats dimmer — marks bar downbeat

This commit is contained in:
ash
2026-07-03 07:27:06 +00:00
parent eda2a959dc
commit 354f18efe7
+10 -2
View File
@@ -29,6 +29,7 @@ void midi_task(void* parameter) {
// Beat timing fixes for precise beat alignment - sync to real MIDI time, not hardcoded tempo // 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 = UINT32_MAX;
uint32_t flash_start = 0; uint32_t flash_start = 0;
uint8_t flash_peak = 255;
while (true) { while (true) {
midi_transport.update(); midi_transport.update();
@@ -45,7 +46,14 @@ void midi_task(void* parameter) {
if (current_beat != last_beat) { if (current_beat != last_beat) {
last_beat = current_beat; last_beat = current_beat;
flash_start = now; flash_start = now;
mux.set_led_color(6, 255, 255, 255); // 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.show(); mux.show();
} }
@@ -58,7 +66,7 @@ void midi_task(void* parameter) {
flash_start = 0; flash_start = 0;
} else { } else {
float b = 1.0f - (float)elapsed / 80.0f; float b = 1.0f - (float)elapsed / 80.0f;
uint8_t v = (uint8_t)(255 * b * b); uint8_t v = (uint8_t)((float)flash_peak * b * b);
mux.set_led_color(6, v, v, v); mux.set_led_color(6, v, v, v);
mux.show(); mux.show();
} }