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
This commit is contained in:
+1
-1
@@ -36,6 +36,7 @@ void midi_task(void* parameter) {
|
|||||||
while (true) {
|
while (true) {
|
||||||
midi_transport.update();
|
midi_transport.update();
|
||||||
ble_midi_transport.update();
|
ble_midi_transport.update();
|
||||||
|
controller.update();
|
||||||
vTaskDelay(1);
|
vTaskDelay(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -390,7 +391,6 @@ void setup() {
|
|||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
led_driver.update();
|
led_driver.update();
|
||||||
controller.update();
|
|
||||||
|
|
||||||
if (Serial.available()) {
|
if (Serial.available()) {
|
||||||
String cmd = Serial.readStringUntil('\n');
|
String cmd = Serial.readStringUntil('\n');
|
||||||
|
|||||||
Reference in New Issue
Block a user