MIDI controller using Adafruit Feather M0 (arduino compatible), 128x64 oled lcd and six SPST momentary foot switches. Build to send PC and CC MIDI messages to a Line6 HX Stomp. Commands on single foot swtich press, two-foot swtich press and long foot swtich press.
Build for my personal use, shared to help others.
Physical layout
------------------------
| Btn4 Btn5 Btn6 |
| |
| Screen |
| |
| Btn1 Btn2 Btn3 |
------------------------
Page 1 - Utility controls
btn | single press | long press
-------------------------------------
Btn1 | Snapshot 1 | Stomp mode
-------------------------------------
Btn2 | Snapshot 2 | Scroll mode
-------------------------------------
Btn3 | Snapshot 3 | Snapshot mode
-------------------------------------
Btn4 | FS4 |
-------------------------------------
Btn5 | FS5 |
-------------------------------------
Btn6 | Tap Tempo* | Tuner
*delay must be set in note length, not in ms for this to work
Btn1+Btn2: Page Up
Btn2+Btn3: Page Down
Page 2 - Looper controls
btn | single press | long press
-------------------------------------
Btn1 | Record |
-------------------------------------
Btn2 | Play |
-------------------------------------
Btn3 | Stop | Page Down*
-------------------------------------
Btn4 | Over dub |
-------------------------------------
Btn5 | Undo/Redo |
-------------------------------------
Btn6 | Play once |
*use this to avoid firing Record or Play commands
Btn1+Btn2: Page Up
Btn2+Btn3: Page Down
I'm using Bounce2 library with BOUNCE_WITH_PROMPT_DETECTION option to achieve fast command firing. With button.fell event being the fastest option but it sends two command when using long press and two button commands, to avoid this set command code in button.rose detection of readButtons()
function.
More details here: https://vulcanofx.blogspot.com/2019/04/vulcanofx-mc6-midi-controller-for-hx.html