Introduction: DIY Arduino Based MIDI Foot Controller

Picture of DIY Arduino Based MIDI Foot Controller

I've been wanting to try a guitar looper for a while, but I don't like the idea of expending money on a looper specific pedal when I can use a computer for that and since I've been learning arduino for fun made perfect sense to make a an arduino based controller.

After some experiments and search on the web I found a similar project, https://rideonbeat.wordpress.com/2014/08/18/contr... and that pointed me in the right direction, this lib https://github.com/rkistner/arcore that provides basic MIDI device functionality for arduino.

so far this project has been lot of fun, and now I have more ideas I want to try when I have the time.

Step 1: Build Process

Picture of Build Process

I wish I had taken pictures of the building process, but I didn't, sorry.

Parts

  • Arduino Leonardo
  • prototype board
  • pin headers
  • 10k resistors
  • push buttons (normal open)
  • wires
  • enclosure

Tools

  • Soldering Iron
  • wire cutters
  • hand saw
  • multimeter

Description

I tried using some metal push buttons but they were expensive, not very reliable (the ones I got anyways) and very noisy. so I decided to try microswitches. these worked just fine. on the next version I'll probably try using arcade switchesm but YMMV.

Start by deciding how many switches you need in your foot controller. find or build a case that will be able to hold everything.

layout how you want your buttons to be and drill the holes for them

then connect the switches to the arduino. you can go many ways about this, what I did was to create a shield with a protoboard and some pin headers.

remember to ground each of the input pins with a 10k resistor.

Step 2: Program the Arduino

Picture of Program the Arduino
  1. Install the Arduino IDE (download it from https://www.arduino.cc/ ) install https://www.arduino.cc/ into your computer
  2. clone this repo https://github.com/mcniac/midi-controller you can fork it if you plan to change the code to suit your needs
  3. select artcore on the board selection

  4. change the scketch to suit your needs

  5. compile and upload the scketch to your arduino (I used Leonardo)

Troubleshooting

I found out the hard way that some bad soldering can create some weird bugs, this MIDI monitor software is really helpful to understand what was happening ( http://www.snoize.com/MIDIMonitor/ )

Now it's time to connect the foot controller to your computer, launch your DAW and configure it to use the controller. you should see it as a usb midi device. I tried it on OSX and Linux and didn't need any special driver

IMPORTANT: if you are going to change the code do not try to use Serial to log messages into the console, that won't work since the serial is being used to create the usb midi device.

Whats next

I'm planning on creating another foot controller with many more switches, and if I figure it out how to create the chasis, an expresion pedal.

and also another, lets say "desk" controller with faders and some buttons to control the DAW on live situations.

Comments

esoler (author)2016-01-29

maybe you didn't install arcore correctly (follow the instructions on their README) and / or didn't selected the right board on the IDE?

let me know if I can help any further. also bear in mind that arcore works with Arduino Leonardo mostly, I'm not really sure works with any other.

CarraN (author)2016-01-29

Hi!

sketch debug says:

sketch_jan29a.ino: In function 'void controlChange(byte, byte, byte)':
sketch_jan29a:60: error: 'MIDIEvent' was not declared in this scope
sketch_jan29a:60: error: expected `;' before 'event'
sketch_jan29a:61: error: 'MIDIUSB' was not declared in this scope
sketch_jan29a:61: error: 'event' was not declared in this scope
sketch_jan29a.ino: In function 'void loop()':
sketch_jan29a:99: error: 'MIDIUSB' was not declared in this scope

what's wrong?!!

cheers

esoler (author)2016-01-19

Update: I changed the sketch on GH so it uses one of the buttons to alternate between 3 banks, so this controller can send 9 different controls instead 4.

I'm planning to implement some sort of bank display. probably three leds or a proper display.