An Arduino-based MIDI foot controller: a grid of buttons with LEDs that sends Program Change messages to drive amplifiers, multi-effects units or audio software. Presets are organized into banks that can be switched on the fly.
- N buttons + N LEDs (default
SIZE = 3: pins 2–4 for buttons, 5–7 for LEDs). - Two operating modes:
- Choose Bank — the LEDs blink; pressing a button selects the bank.
- Play — each button sends the Program Change configured for the active bank.
- Long press (~1 s) in Play mode to go back to bank selection.
- Easily customizable command matrix
commands[bank][rig].
- An Arduino board (e.g. Uno / Nano).
SIZEmomentary push buttons andSIZELEDs (with their resistors).- A 5-pin MIDI (DIN) output or a USB-MIDI interface, at 31250 baud.
| Component | Arduino pins |
|---|---|
| Buttons | 2 … 2 + SIZE - 1 |
| LEDs | 2 + SIZE … 2 + 2*SIZE - 1 |
Pins 0 and 1 are reserved for the serial line (MIDI TX/RX).
- FortySevenEffects/arduino_midi_library
(
MIDI_CREATE_DEFAULT_INSTANCE).
With the Arduino IDE: open MIDIBoard.ino, select your board and port, then
click Upload. From the command line with
arduino-cli:
arduino-cli compile --fqbn arduino:avr:uno .
arduino-cli upload --fqbn arduino:avr:uno -p COM3 .Edit the following in MIDIBoard.ino:
SIZE— number of buttons/LEDs.buttonDefaultStates[]— resting state of each button (LOW/HIGH).commands[][]— Program Change values sent for each bank/button.PERIOD/PERC— period and duty cycle of the Choose Bank blink.
Released under the GNU GPL v3 — see LICENSE.