While a foot pedal can be useful while playing, it's not usually used for more than one thing in a song, unless maybe you're playing organ bass lines. So, a simple, inexpensive MIDI foot pedal that nonetheless can be used in a lot of different ways can solve a lot of problems. If your DAW or sound module can map control changes to different channels and/or message types, you can use this pedal to send momentary or toggled CC values, and note patterns with 4, 8, or 16 steps. The MCU can also be removed and reprogrammed to send different messages if desired (see the github page for info).
The MidiFoot uses the V-USB code to emulate a low-speed USB device. While V-USB has been around for a bit, it has the advantage of providing a way to get USB running on very cheap AVRs with just a few extra individual components. The MidiFoot was developed by Geek Funk Labs, and is available fully assembled or as a kit from the Tindie store, but you can also obtain or produce all the components yourself:
code: https://github.com/albedozero/midifoot
PCB design files: https://oshpark.com/shared_projects/GyvghF6b
3D model for housing: https://www.thingiverse.com/thing:5266245
Assembly instructions: https://geekfunklabs.com/download/midifoot-assembly-instructions/
The table below shows the sequence of values sent on CC#64, channel 15 with each press and release of the button. The odd-looking pattern of values allows easily setting up the different functions described above by mapping ranges of values to specific notes/control changes/etc.
value | sustain on (>=64) | sustain off (<64) | toggle on (70-85) | toggle off (100-115) |
---|---|---|---|---|
70 | x |
|
x |
|
0 |
|
x |
|
|
100 | x |
|
|
x |
30 |
|
x |
|
|
85 | x |
|
x |
|
15 |
|
x |
|
|
115 | x |
|
|
x |
45 |
|
x |
|
|
75 | x |
|
x |
|
5 |
|
x |
|
|
105 | x |
|
|
x |
35 |
|
x |
|
|
80 | x |
|
x |
|
10 |
|
x |
|
|
110 | x |
|
|
x |
40 |
|
x |
|
|