Fix button-to-MIDI latency: remove blocking serial, reduce debounce, faster loop
Latency sources fixed: - debounce 50ms -> 5ms (switch_stub.cpp:15) - Removed [MIDI OUT] Serial.printf from send_cc() (midi_transport.cpp:93-98) - Removed [APP] Switch pressed/released prints from update() (app_task.cpp:39,43) - Removed [APP] Switch -> CC print from process_switch_event() (app_task.cpp:140-143) - loop() delay 10ms -> 1ms (main.cpp:390) Serial output at 115200 baud was taking 2-5ms per printf call in the critical button-to-MIDI path, adding 7-15ms+ total latency per button press. All removed from hot path.
This commit is contained in:
@@ -36,11 +36,9 @@ void AppTask::update() {
|
||||
bool is_pressed = switch_driver->is_pressed(i);
|
||||
|
||||
if (is_pressed && !last_switch_state[i]) {
|
||||
Serial.printf("[APP] Switch %d pressed\n", i);
|
||||
process_switch_event(i, true);
|
||||
last_switch_state[i] = true;
|
||||
} else if (!is_pressed && last_switch_state[i]) {
|
||||
Serial.printf("[APP] Switch %d released\n", i);
|
||||
process_switch_event(i, false);
|
||||
last_switch_state[i] = false;
|
||||
}
|
||||
@@ -136,10 +134,6 @@ void AppTask::process_switch_event(uint8_t switch_id, bool pressed) {
|
||||
if (pressed) {
|
||||
midi_transport->send_cc(channel, cc_num, value);
|
||||
}
|
||||
|
||||
Serial.printf("[APP] Switch %d -> Ch%d CC%d Val%d (%s)\n",
|
||||
switch_id, channel, cc_num, value,
|
||||
pressed ? "PRESS" : "RELEASE");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -387,5 +387,5 @@ void loop() {
|
||||
handle_serial_command(cmd);
|
||||
}
|
||||
|
||||
delay(10);
|
||||
delay(1);
|
||||
}
|
||||
|
||||
@@ -94,7 +94,6 @@ void UsbMidiTransport::send_cc(uint8_t channel, uint8_t cc, uint8_t value) {
|
||||
if (!initialized) return;
|
||||
uint8_t packet[4] = {0x0B, (uint8_t)(0xB0 | (channel - 1)), cc, value};
|
||||
usb_midi.writePacket(packet);
|
||||
Serial.printf("[MIDI OUT] Ch:%d CC:%d:%d\n", channel, cc, value);
|
||||
}
|
||||
|
||||
bool UsbMidiTransport::is_connected() {
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ DefaultSwitchStub::DefaultSwitchStub() : initialized(false) {
|
||||
switch_states[i].current_state = false;
|
||||
switch_states[i].previous_state = false;
|
||||
switch_states[i].last_change_time = 0;
|
||||
switch_states[i].debounce_time = 50;
|
||||
switch_states[i].debounce_time = 5;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user