Introduction: Arduino Midi Foot Controller for Ableton Live

I'm a geek. I know it. I like DIY'ing things. I bought a 3d printer (which is sitting in my office not working right now)... and like building drones. I usually bite off more than I can chew and often have to go to others for help. This time around, it was to build a custom Midi foot controller to use with Ableton Live for our click/loop tracks.

I'm a worship leader for a church and we use Ableton Live to play our click tracks and backing tracks in our in ear monitors. As a guitar player I need a midi pedal to send midi commands to the software to play and stop a particular track.

I have a Keith MacMillen Softstep... but its really complicated to program, and the buttons are rubber. I never knew if the thing was ever pressed or not. I wanted the "click" of a regular guitar pedal. And I don't need something that complicated. There are some other pedals you can purchase... but their footprint wasn't correct for my pedal board. And I didn't want to spend another $300-$400.So for around $70 I built my own.

Using a similar method, one could also use a different library and use a foot pedal as a keyboard input device (to scroll a page, fire a video... whatever).

Step 1: Physical Construction

Picture of Physical Construction

This is the beautiful part-- you can make it to fit whatever you want. You could buy a custom enclosure, or just an electrical box from the hardware store. Its up to you.

I used luan plywood and spent quite a bit of time in the woodshop to make this hoss. No doubt someone with better DIY skills, yeah verily a CNC machine, could make a real marvel.

Attached to this project is my google sketchup file.

Step 2: Electronics


You need momentary SPST switches. I got the "silent" ones so it doesn't sound like a firecracker going off in the middle of the worship service. Something like this:


I used an arduino teensy that I bought from sparkfun. It offers a couple of important things:

• It has USB connectivity

•It's powered via USB

•It supports a native MIDI control without need for some intermediary software.

•It has a ton of digital pins

LCD Display

I bought it HERE from sparkfun. I wanted a serial rather than parallel connection so I didn't have to chew up lots of extra pins. (pins= possible switches or leds, or connectors)


I suppose if I were really thorough I'd have some sort of fancy connection diagram. Basically,I hooked pin 1 up to the serial LCD pin. And then the switches have all the connections from there. You could in theory have 24 or so physical buttons/switches. Or if you were really good with programming could figure out a way to use multiple banks. But that's too complicated for me.

Step 3: CODE


This was the hard part.

Disclaimer:{ I AM NOT A PROGRAMMER;()} { I AM A GUITAR PLAYER. } take that into consideration when you see the code.

I first got it working with the MIDI buttons sketch. Then got the serial LCD sketch to work. As I'm not a programmer, I had to learn to combine the two together. The arduino code is attached to the project. Tweak the pins assignments to whatever you end up using.


Beardini1 (author)2017-09-14


Could you please send schematic in PDF for connections switches to Arduino board? I'm not an electronics. I'm planning build this project for Guitar Rig. Regards.

pinta_vodki (author)2017-09-01

Great! Planning to do a similar project soon!

Just so that people know, there's a great Arduino MIDI controller library that makes it very easy to program one:

exabrial made it! (author)2017-07-17

Hey guys, I made a two button version. Total cost was $23

I posted my code here

scottavey (author)exabrial2017-07-17

well done!! I'm curious what you use the two switches for? What's your application?

exabrial (author)scottavey2017-07-17

Currently in Ableton Live, I Have one mapped to "stop" and the other mapped to "loop release"

exabrial (author)exabrial2017-07-17

sorry, code is here:

MarinaS53 (author)2017-03-08

which kind of wires should I use in this project?

JeremyH133 (author)2017-02-24

Did you use normally open (NO) or normally closed (NC) momentary switches?

MiguelM222 (author)2017-01-14

Hello can you send me the code ?

djgroove (author)2016-12-12

Hi, could you upload wiring sketch ? fritzing file ? Thanks

JenyaM (author)2016-11-19

One more question 'bout the second version. how did You organized so many in\out for buttons & LEDs? Used some kind of multiplexer?


JenyaM (author)2016-11-04

great thing especially for worship service purpose.
can You say is there any special commands for ableton live in midi (or somewhere)
1) to fire prev/next scene,
2) to choose pre/next scene
3) to fire chosen scene
4) to fire/stop particular track in chosen scene

Thank You!

scottavey (author)JenyaM2016-11-04

yes all those should be able to be fired via a midi message.

JenyaM (author)JenyaM2016-11-04

upd: wanna constrict smh like

Keith McMillen 12 step, but lil bit cheaper and tweaked for my purposes

CarraN (author)2016-07-08

cool project!

But why to send midi notes instead of program/control changes?

Gyu MinH (author)2016-04-15

I wonder that it can control another midi device. (Ada mp-1 or TC g-major)

mindegap (author)2016-04-08

hi, can you put the electronic scheme, please?

nrobinson (author)2015-10-19

Great job! I'd be fascinated to talk to you about this. I made a simpler version

but didn't know how to multiplex to add more buttons. Will look at the teensy baord, but would be good to get some tips?

RonaldoLenzi (author)2015-02-05

Hi, excellent projetc, but did not understand how you connected the buttons and the teensy. Could illustrate? thanks

syntesys (author)2014-10-04

Hi. I want to construct it. Can I have a detail of button wiring? Do you use a resistor or not? Thank you.

scottavey (author)syntesys2014-12-03

No resistors. I think there are pulldown resistors on the teensy for each of the channels.

mahf1230 (author)2014-10-03

can i use an arduino uno? or mini? or nano?

syntesys (author)mahf12302014-10-04

You can use Arduino uno with hiduino firmware and some modifies in the sketch.

About This Instructable




Add instructable to: