Add padtest command - tests each pad individually with 3s delay
This commit is contained in:
+40
-1
@@ -130,7 +130,8 @@ void handle_serial_command(const String& cmd) {
|
|||||||
Serial.println(" gpiotest - raw GPIO pin diagnostic");
|
Serial.println(" gpiotest - raw GPIO pin diagnostic");
|
||||||
Serial.println(" rawled - bit-bang WS2812 (no library)");
|
Serial.println(" rawled - bit-bang WS2812 (no library)");
|
||||||
Serial.println(" anim - re-run startup animation from loop");
|
Serial.println(" anim - re-run startup animation from loop");
|
||||||
Serial.println(" miditest - simulate MIDI IN for common Launchpad layouts");
|
Serial.println(" miditest - simulate MIDI IN for common Launchpad layouts (fast)");
|
||||||
|
Serial.println(" padtest - test each pad individually (3s per pad, slow)");
|
||||||
Serial.println(" mapping - show current pad->note mapping");
|
Serial.println(" mapping - show current pad->note mapping");
|
||||||
} else if (cmd == "anim") {
|
} else if (cmd == "anim") {
|
||||||
Serial.println("[CMD] Running animation...");
|
Serial.println("[CMD] Running animation...");
|
||||||
@@ -272,6 +273,44 @@ void handle_serial_command(const String& cmd) {
|
|||||||
controller.process_midi_event(event);
|
controller.process_midi_event(event);
|
||||||
|
|
||||||
Serial.println("[CMD] MIDI test complete");
|
Serial.println("[CMD] MIDI test complete");
|
||||||
|
} else if (cmd == "padtest") {
|
||||||
|
Serial.println("[CMD] Testing each pad individually (3s each)...");
|
||||||
|
|
||||||
|
// Test Launchpad X mapping (notes 36-45, ch1)
|
||||||
|
Serial.println("[CMD] Layout: Launchpad X (notes 36-45, ch1)");
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
Serial.printf("[CMD] Pad %d: note=%d ch=1\n", i, 36+i);
|
||||||
|
MidiEvent event;
|
||||||
|
event.type = MidiEvent::NOTE_ON;
|
||||||
|
event.channel = 1;
|
||||||
|
event.data1 = 36 + i;
|
||||||
|
event.data2 = 64;
|
||||||
|
controller.process_midi_event(event);
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||||
|
event.type = MidiEvent::NOTE_OFF;
|
||||||
|
event.data2 = 0;
|
||||||
|
controller.process_midi_event(event);
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(500));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test Launchpad Mini mapping (notes 0-9, ch1)
|
||||||
|
Serial.println("[CMD] Layout: Launchpad Mini (notes 0-9, ch1)");
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
Serial.printf("[CMD] Pad %d: note=%d ch=1\n", i, i);
|
||||||
|
MidiEvent event;
|
||||||
|
event.type = MidiEvent::NOTE_ON;
|
||||||
|
event.channel = 1;
|
||||||
|
event.data1 = i;
|
||||||
|
event.data2 = 64;
|
||||||
|
controller.process_midi_event(event);
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(3000));
|
||||||
|
event.type = MidiEvent::NOTE_OFF;
|
||||||
|
event.data2 = 0;
|
||||||
|
controller.process_midi_event(event);
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(500));
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("[CMD] Pad test complete");
|
||||||
} else if (cmd == "mapping") {
|
} else if (cmd == "mapping") {
|
||||||
Serial.println("[CMD] Current pad mapping:");
|
Serial.println("[CMD] Current pad mapping:");
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user