Arcade Button MIDI Keyboard




About: Musician, Educator, Music Tech Nerd!

This is a version 2.0 of one of my first forays into Arduino and DIY MIDI programming. I've developed my skills in prototyping and design so I thought it would be a good demonstration of process and progression. With a more informed design process I recycled the buttons from my first attempt and set off to build 2.0!

Step 1: Materials

My 1st version used an Arduino Mega because of the many intputs it has but I like the small size and HID MIDI capabilities that the Pro Micro has when using the Midi_controller.h library. So I decided to use two 16-channel multiplexers to satisfy the input requirement for 2-octaves of range.

Here is a list of parts I used:

Large Arcade Buttons x15

Small Arcade Buttons x10

Pro Micro x2

16-channel Multiplexer x2

Neopixel ring

10k Potentiometer x6

Hookup wire

Soldering tools

1/8'' MDF

Step 2: Design and Cutting

I have included an .svg file for inquiring minds if that is useful, but I encourage everyone to excersize creativity and experimentation in the design process. Maybe using acrylic instead of mdf would look awesome!

I used a drill and bore bit in the 1st version so I was looking to get a more precise product using design software and a laser cutter this time.

Step 3: Solder and Wire

This is the most time consuming part. I find certain parts of soldering therapeutic so get some tea, put on a smooth jam and know that this step is a marathon and not a sprint!

I tried to salvage as much wire as possible from the 1st version and taking note as to where I was going to place the Arduino and mux in order to try and eliminate some of the wire mass that would have to squeeze into the box after it was done.

I tend to embrace the chaos of a good diy tangle of wires more than some so follow your own ambitions when sorting out wires.

As far as a walkthrough for connections, wrote the code first and then let that dictate where the wires would go...

I built the keyboard from the lowest to the highest note with the 1st 16 notes going to mux1 and the remaining notes going to mux2 there might be a slight increase in latency with the mux setup but the 16mhz processor zips through it fast enough so that I can't notice.

I tried diving into midi multiplexing before any tutorials and hit a wall, so I recommend doing a few basic tutorials to get a baseline understanding if things seem out of reach.

I follow these simple troubleshooting steps:
1. Make sure everything is grounded
2. Check for shorts
3. Pots get 5v
4. Double check that everything is grounded

Step 4: Too Many Wires...

I underestimated the depth of the box and was having difficulty making the top sit nicely with looking like it was about to burst out "Akira Style" so I talked through it with some friends in the studio and came up with a plan to put it on display at an angle. I did some rapid prototyping with acrylic scraps and ended up with a nice solution. It sort of showcases the birds nest out the back like the maze of patch cables in 60s Moog synthesizers. Finished, right?

Step 5: Neopixel!

I used Neopixels in a previous project using MIDI and had found that MIDI needs a dedicated board to do its job so I wired up another Pro Micro using the "RAW" input for 5v power running from the 1st board. I didn't program anything fancy, just found a program from the strandtest sample sketch from the Adafruit library.

Step 6: Code!

To upload:
1. Make sure you download the Midi_Controller.h library
2. Select "Arduino Leonardo" from board type
3. Select borad from the Port menu
4. Compile and upload

After uploading test with a midi monitoring application. If everything seems to be working as planned it's time to make some music!

Step 7: Jam Out!

I use Ableton Live with my projects because of it's flexibility. If you use Garage Band it will still work but the knobs will have fixed functions depending on what you program the MIDICC numbers as in the sketch.

Any questions? Leave them in the comments!

Happy Making!

Arduino Contest 2019

Participated in the
Arduino Contest 2019



    • Growing Beyond Earth Maker Contest

      Growing Beyond Earth Maker Contest
    • Fandom Contest

      Fandom Contest
    • 1 Hour Challenge

      1 Hour Challenge

    7 Discussions


    5 weeks ago

    Thanks for posting this. I looked for a schematic for the wiring in your downloads but didn't find one. Did I miss something? Thanks again, Aaron

    4 replies

    Reply 5 weeks ago

    Check "Step 3" for a wiring diagram and Fritzing file. I hope it helps!


    Reply 4 weeks ago

    Thanks, I got the image and the Fritzing file. Looks like what I need. I'll work my way thru it and see how it goes. Thanks again, Aaron


    Reply 5 weeks ago

    I don't have one written. I'll work on it and let you know when it is posted.


    Reply 5 weeks ago

    Hi, Thanks for the quick reply. I'd like to build your device but don't know how to wire it. I appreciate your help. Aaron


    5 weeks ago

    cool. it'd be great to see a demo on adafruit's show and tell.


    7 weeks ago

    This is so cool! Thanks for sharing your documentation too!