diff --git a/src/main.cpp b/src/main.cpp index ccbbe43..3e83f94 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -130,7 +130,8 @@ void handle_serial_command(const String& cmd) { Serial.println(" gpiotest - raw GPIO pin diagnostic"); Serial.println(" rawled - bit-bang WS2812 (no library)"); 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"); } else if (cmd == "anim") { Serial.println("[CMD] Running animation..."); @@ -272,6 +273,44 @@ void handle_serial_command(const String& cmd) { controller.process_midi_event(event); 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") { Serial.println("[CMD] Current pad mapping:"); for (int i = 0; i < 10; i++) {