From fec2ea1db2901005dfe89ccf4f7ad8bba90c4fc7 Mon Sep 17 00:00:00 2001 From: Ashley Strahle Date: Wed, 1 Jul 2026 06:51:48 +0000 Subject: [PATCH] Move all MIDI processing to Core 0 Move controller.update() inside midi_task on Core 0 to eliminate TinyUSB cross-core race condition. Previously: - Core 1 (loop()): usb_midi.writePacket() in controller.update() - Core 0 (midi_task): usb_midi.available()/readPacket() This race condition causes crashes on button press. Now: - Core 0 (midi_task): midi_transport.update() + controller.update() - Core 1 (loop()): led_driver.update() + serial commands only --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 6818fb9..6f2a6dc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -36,6 +36,7 @@ void midi_task(void* parameter) { while (true) { midi_transport.update(); ble_midi_transport.update(); + controller.update(); vTaskDelay(1); } } @@ -390,7 +391,6 @@ void setup() { void loop() { led_driver.update(); - controller.update(); if (Serial.available()) { String cmd = Serial.readStringUntil('\n');