3 Simple Ways to
Share What You Make

With Instructables you can share what you make with the world — and tap into an ever-growing community of creative experts.

PhotosPhotos

Share one or more photos of a project, recipe, or whatever you've made, quickly and easily.

Step by StepStep-By-Step

Share your step-by-step photos with text instructions of what you made so others can do it too!

VideoVideo

Share your how-to video. You'll need your embed code from a video site such as YouTube.

Arcade Button MIDI Controller

Arcade Button MIDI Controller
Having a hardware interface to your favourite music / DJ / VJ software can really open up doors in your creativity. The most widespread form of hardware control to your PC for such applications is a MIDI based controller.

A MIDI controller can send and receive MIDI messages to your PC, allowing direct control of your software. Not only that, but the controls can generally be mapped to anything your like. So what might be a volume fader for one person can be an effect filter for another.

This article will describe how to build and program a custom arcade button MIDI controller, while trying to keep the price below $100. It is aimed at electronics and programming novices.


 
Remove these adsRemove these ads by Signing Up
 

Step 1What You'll Need

What You\
«
  • components.jpg
  • tools.jpg
Below is a list of components used to create the MIDI controller. The cost for this project is based on the components needed for the MIDI controller. Other tools such as a soldering iron or a power drill, or common components such as solder and wire aren't included in the final cost. Tools which I did have to purchase are marking with italics , and their price is shown. All prices are in AUD except where indicated.

Required Components
1 x DFRduino (cheaper Arduino clone) $28.80
1 x USB cable (A to B connector, like that on a printer) $3.95
1 x Plastic enclosure $15.75
12 x Sanwa 24mm arcade buttons $26.28 (USD)
4 x 10k linear potentiometer $4.88
4 x Pot knobs $3.80
2 x 10k linear sliding potentiometer $7.54
2 x Slider knobs $2.04
5 x 10mm M3 nylon threaded spacers $2.00 (I got a bag of 25 for $9.95)
4 x 16mm countersunk M3 screws $1.00
3 x 4mm M2 self tapping screws $0.75
1 x 4.7 kΩ resistor $0.10
4 x stick on rubber feet $2.00

Total $98.89

All of the above can be found at most online electronics stores (I use the excellent Little Bird Electronics ), except for the Sanwa arcade buttons which can be found at arcade replacement parts stores, or from DJ TechTools . It pays to purchase one or two spare buttons and perhaps a spare potentiometer in the event that the part is faulty or you accidentally make it faulty.

Required Tools
Soldering iron
Solder
Wire stripper
Small gauge stranded wire (22 AWG), preferably in three or more different colours
About 1m of 2.5mm heat shrink
Power drill or drill press
Drill bits (2mm, 3mm, 7mm, and 11mm)
Spade bit (24mm) $12.49
Countersinking bit
10mm hexagonal wrench or spanner
Needle-nose pliers
Small riffler files $15 for pack of 10
Regular file
Phillips-head screwdriver 
« Previous StepDownload PDFView All StepsNext Step »
210 comments
1-40 of 210next »
May 22, 2012. 2:55 AMchaoszerom says:
I'm planning on making a midi controller such as this one, and since I'm in Aus, Little Bird is a good place for components. However, you mentioned something about the datasheet being incorrect about the lengths for the slide potentiometers. Is that still right, or? The datasheet says that the slide length is 60mm, and the total is ~88mm.
May 22, 2012. 3:27 AMchaoszerom says:
The link on the instructable is actually dead, so here's a current one: http://littlebirdelectronics.com/products/slide-potentiometer-10k

I'd say they're the same, but I could be wrong
May 25, 2012. 9:00 PMchaoszerom says:
Thanks for that! I've ordered all my parts, and should get them in a week or two
Nov 20, 2011. 12:42 PMapefive says:
will it works with Atmega32u4 Breakout Board w/ Arduino Leonardo bootloader ...using the teensy configuration?

thanks!
Nov 20, 2011. 12:43 PMapefive says:
here it is
May 8, 2012. 5:03 AMapefive says:
ciao!

i uploaded correctly your sketch on the Atmega32u4 Breakout Board and set it as midi device. (it seems it works).
this board is identical to the teensy, only that the pins are in different positions.

this is my project using 16 pushbutton and 9 potentiometer 1MΩ.
what you think about? will i have to change somethings on your sketch?

thanks!!

May 8, 2012. 5:05 AMapefive says:
EDIT 16 pushbuttons and 9 potentiometers 1 mega ohm.
May 13, 2012. 1:25 AMapefive says:
hi, thanks for you reply!

i changed 129 and 131 lines, and:

#elif defined(TEENSY_2)
#define DIGITAL_PIN_ORDER 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
#elif defined(TEENSY_2)
#define ANALOGUE_PIN_ORDER 0, 1, 2, 3, 4, 5, 6, 7, 8

i have i strange issue too: when i upload your code (both on Atmega32u4 Breakout Board and on teensy 2) the boards send midi message without any pin connected and any activity (only usb connected). (they send chan16 ; controller 20 / 21. this sending is intermittent.)

thanks
Apr 14, 2012. 5:48 PMith3be4r says:
Hey!
Thanks a lot for this instructable, I'm just having 1 issue.

I have an Arduino Uno and I've connected/wired everything correctly. I uploaded the Jan 2012 version of the code, which was fine, but whenever I run the device the TX and RX serials aren't operating. I have not altered any of the parts or changed any of the code, i'm just not getting any serial reads from my arduino. Do you have any idea why this would be? I've tried a bunch of Arduino's official troubleshooting guides and nothings working.

Thanks for any help,
Cheers.
Apr 14, 2012. 6:19 PMith3be4r says:
UPDATE:
Whenever I press a button or use the faders/knobs the TX Serial light comes on the Arduino and in the Midi Serial Converter the RX Serial light lights up. I thought this might have been a solution but when I go to map the controller to Ableton Live it doesn't respond to any of my input.
Apr 13, 2012. 3:53 AMakshay30 says:
Hi, I want to make electronic drum set using your technique, & it should be velocity sensitive.

http://www.youtube.com/watch?v=WJrO9VYEoGQ

I did research on the net found the pressure sensitive sensors. i.e. piezo sensor

I bought arduino and followed your instructions.

It's working now
but piezo sensor not working like pressure sensor.
Its working, only when i connect ground and any input (like button switch)
What is the solution for pressure sensitive piezo ?
Should I need to change in the programming or not?

Basically I want to make midi controller for computer
I want to use FPC VST in FL studio for my midi drums.

and other problem, there is only 12 digital inputs in arduino board
I want more. I need minimum 16 digital input.
Is there any way to convert analog input into digital?


Apr 14, 2012. 5:44 PMSnarkity says:
There is an example file included with the Arduino IDE called "Knock" that gets a value from a piezo. http://arduino.cc/en/Tutorial/Knock It is attached to an analog input rather than a digital. To get the value to a usable MIDI value, you'll have to scale it down with something like "piezoValue = map(piezoValue, 0, 1023, 0, 127);"
Apr 9, 2012. 4:04 PMliteoner says:
Hi, nice job. What program did you use? I'm planning to make a similiar stuff with Teensy.
Apr 9, 2012. 8:27 AMAssAulterPT says:
Hi, i'm using only 12 buttons. Do I need to change the code or can i still use the same?

And, on Serial MIDI Converter, the TX doesn't flash green. What's happening
Do you have any idea?
Apr 4, 2012. 12:48 PMcaducotavio says:
Greetings!
I'm a newbie, so please, be patient.
I've been trying to make my midi controller work, but I've come across two question: the first is about the incoming and outcoming ports to be used when under mac os 10.7?

About the sketch, I noticed there are conditions written specifically the arduino mega and others; mine, is uno. Do I have to change anything in order for the sketch to work correctly with my equipment?

Thanks in advance!
Feb 27, 2012. 10:08 AMweber473 says:
Hi Fraganator!

I have my controller completely built just need to wire it up and program it. before I jump to the programming portion I had one more question!

A few weeks ago I found a tutorial on how to add instant gratification (multiple buttons pressed together creates a different effect than just one button). I apparently forgot to bookmark that tutorial :/
It came from the midifighter being able to have a certain effect if 1,2,3,4...etc buttons are pressed instead of the one individual button. But I do not believe it used the midifighter section of your program.

Do you know how to add this programming? Or does anyone by chance know where that tut. is?

Thanks again for your help!

James
Mar 8, 2012. 3:51 PMFreebirdRising says:
I'm fairly certain that the MIDI Fighter combos are a mapping trick done through clever use of modifiers in Traktor, rather than creating a 5th midi note that triggers when multiple buttons are pressed.
Mar 27, 2012. 4:00 AMxanxor says:
I can confirm this.
Look at the instant gratification layout .tsi and you can figure it out how to map the same type of deal yo your own controller.
Mar 20, 2012. 8:58 AMm3D!C says:
i want to add lights next to the button just how the midi fighter lights up.would i wire it to the button or somewhere else?
Mar 27, 2012. 3:19 AMxanxor says:
Wire it after the switch.
Mar 10, 2012. 12:14 AMhgarg2 says:
hi there!i want to know that can i upload any kind of beat in this controller??
and i just got little bit of confused from ur programming section info. can u plz upload a video of it or explain it briefly. im electronics student but the things u said i get confused on it. plz help.
Mar 11, 2012. 9:08 PMmickartcan says:
Hi , first thank a lot for this great tutorial .
I have just one question i'm total a newbie on electronic sorry.
the resistor is a 4.7 kohm but what watt i need ?
thank you
Mar 11, 2012. 9:59 PMmickartcan says:
thank you i almost put a 1/2 pfiuuuu ;)
Dec 31, 2011. 5:30 PMweber473 says:
So if I went with the teensy all i would really have to do is wire it all up, plug it in and then no programming is needed other than in the dj software to map the buttons and pots to what i want them to do?

So exactly what number of buttons and pots could be used?

I also noticed they have a Teensy ++ http://www.pjrc.com/store/teensypp.html
which would just allow for more buttons and pots?

How hard or would it even be possible to put in some sort of jog wheel/ scratch wheel into this set up? Meaning is it possible to do with the teensy?

thanks for your prompt reply!
Feb 9, 2012. 8:11 AMFreebirdRising says:
I'm also interested in using the Teensy++ for the additional ports... But even that is not good enough. :P How complex is it to add shift registers/multiplexors - code wise? Would it fundamentally change the design, or is it something that could be swapped in, or plugged in without having to totally rewrite the code?

Thanks for the great instructable! :)
Feb 19, 2012. 11:31 PMFreebirdRising says:
Thank you for getting back to me. :)

I just learned about the Arduino Mega and Mega 2560... Would it be easier to use one of them over the Teensy++? Does your code already support it?
Feb 22, 2012. 11:37 AMFreebirdRising says:
Thanks. :)

In case you haven't seen it before: http://www.instructables.com/id/A-Framework-For-Making-Affordable-Stylish-Modula/

This instructable is another interesting one; I thought maybe you might be interested in looking at the code.

I'm really interested in having encoders... 8 of them! gah - I'm trying to make this so multi-purpose, I'm not sure I'm going overboard, but I've already got encoders ($30 worth!) given to me free, so I might as well work them in, right? :P

Anyway, I didn't know if seeing that code might help you out with your rewrite.

Cheers, and thanks again!
Jan 22, 2012. 6:29 PMweber473 says:
Not a problem. I did a lot of research since my question and basically figured out all of what you said minus the jog wheel. I actually went ahead and ordered all the parts to make a replica of the one you built. Having a custome built case from a coworker that has access to a 3d printer :)
I went ahead with the teensy 2.0 and will be putting it all together here in the next couple of weeks. I would be very interested to see what you come up with the jog wheel though. If you do figure that out it would be very highly appreciated if you contacted me about it. just let me know the best way you would like to contact me.
Ill let you know how my custom case and final product turns out. Thanks again for the replies and great work you have done here!
Feb 20, 2012. 5:55 AMbobthebanay says:
i would like to use this thing to create my own controller. programing wise, what programing language is needed fo creating the script?
1-40 of 210next »

Pro

Get More Out of Instructables

Already have an Account?

close

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.

Upgrade to Pro today!
29
Followers
1
Author:fraganator