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\
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 »
181 comments
1-40 of 181next »
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?
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?
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 17, 2012. 6:30 PMvidhun says:
where we will get that sliding potentiometer?,also it is super
Feb 19, 2012. 5:35 PMElectrokitty says:
http://www.sparkfun.com/products/9119
Jan 28, 2012. 5:44 AMboye4600 says:
I build this midi controller 4 knobs on Analog input A0, A1, A2, A3.

But im a little bit newbie and i don't understand the code.
Is there any one who can explain me how to map the certain knob to a midi message.

For example if i want A0 input to control volume which is CC 0x07 and A3 to control pan on CC 0x0A?

Boye.
Feb 2, 2012. 12:40 PMboye4600 says:
Thank you for the quick reply :]
Dec 27, 2011. 6:21 PMweber473 says:
I am going to do this project and I am really looking forward to it. but I have a question before I go buying parts.
I have read all the comments on this and heard a lot about the "tweeny"
What advantages and what disadvantages would using the tweeny over the arduino have.

thanks!

James
Nov 26, 2011. 5:27 AMSuperEvenSteven says:
Thanks for the guide Fraganator,

I have built the device according to your instructions, it looks and operates identically to yours, but have run into a small cross-platform issue. While it works flawlessly in Windows I find that there is lag on several buttons in Mac OS X 10.7. Specifically buttons 5,7,8,9,10. Everything else runs well in Mac OS X. In Windows 7 every button is perfect.

Could you kindly help as I run my dj software on my macbook?

Note : I installed the latest version of the Mac FTDI 2.2.16 driver and manually checked it had loaded successfully "kextstat | grep FTDI".

Note 2: I uploaded your latest MIDI Controller sketch also.

Regards,

Superevensteven.
Nov 29, 2011. 2:31 AMSuperEvenSteven says:
Nevermind, I forgot to wire a ground to the digital inputs! doh!!!

I'm still surprised that the device worked on Windows with just the digital inputs (internal pull up resistors) ????

I've ordered a midi to usb convertor cable so I can use the innards to translate the serial midi messages via the Tx as native midi.

Cable cost me $7 on ebay.

Here is the original article : http://shiftmore.blogspot.com/2010/01/quick-and-dirty-arduino-midi-over-usb.html

As the author puts it, it's a quick and dirty way, but it works.
Dec 15, 2011. 4:30 AMSuperEvenSteven says:
Yeah working perfect thanks! I took it two steps further and pimped it out using the usb-midi cable's own led's so I have a power led and tx led for free :) no extra pins required lol

I desoldered the two lights from the main convertor circuit board and just added some extension wiring so I could pop it through the top of the dj midi controller case. Looks sick! :D

I also modded your arduino sketch so it recognizes simultaneous button presses. I'm a Java developer with some very minor C/C++ experience and I found your code very well written. I modified a few things but it's no criticism of your coding style rather just to help me better understand it all and add in the combo button detection. Hopefully I've written it clear enough so you can modify it to suit yourself if need be.

Many thanks again as it's an absolutely wicked piece of hardware, in some respects I find it superior to my NI Kontrol X1 usb midi controller. The guys at my work absolutely shat themselves when I brought it in. I left it on my desk and it attracted so many curious people lol. My denon cdj turntable is gathering dust now.

Here's a video explaining how this all looks/works : http://youtu.be/aXHyxQLN9kk
Here's my arduino sketch with the combo buttons : http://www.mediafire.com/?7a01rbsy7c040jb

Regards,

SuperEvenSteven
Dec 14, 2011. 2:23 AMapefive says:
Congratulations! :)
Dec 1, 2011. 8:56 AMdshlass1 says:
Are the buttons velocity sensitive?
for example, if you press the buttons lightly, it will produce a quieter sound than when you press it in hard
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
atmega32u4_MED.jpg
Nov 17, 2011. 5:32 PMssiddy says:
Can this be modified to add more pots? both faders and knobs??? It seems from the wiring that all the pins are used up on the board, but is there a way around this?
Dec 9, 2011. 2:38 PMmyonus says:
Hello,

This is a great source of information helping for my own project im working on. One thing im adding is a series of midi joysicks. As you know the limitations of the Arduino also limits how many knobs, sliders, and switches. If customization are the most important, and cost of parts is irrelivent (as in my case) I am designing my case to house a 10 port USB hub that supplies it own 12v to each USB device so as not to overload motherboard resources. If this can work, potentially I could expand your idea 10X over a single USB port on my tower. Having this will ultimately give me a individual controller similar to yours for each of the 8 - 1/4" TRS analog inputs on my soundcard. And the fancy would be the mini joystick at the top of each channel to use for 5.1 surround sound automation in recording software like Sony Vegas and Sonar. I have also considered to replace the Arduino with a $5 USB gamepad that may take a bit of tweeking to perfect; still I should potentially get 16 channels of midi for each USB device. 10 USB ports X 16 channels midi = 160 channels of midi recognized by the software.

Is my thinking logical or am I way off the rocker with this one????
Nov 23, 2011. 5:46 AMash_DJ says:
Hi Fraganator,

Really good Instructable, quite informative and descriptive. I plan to go down the Arduino route but will use Hiduino so that it transmits MIDI over USB, rather than needing an external soft or hard converter. Once I've flashed Hiduino, do you think I'll be able to use your sketch still?

Also, does your sketch automatically transmit any change as a CC message, or will I need to code each output individually? Also, I plan to use a lot more buttons and pots than you have, will the sketch need to be adjusted?

Thanks,

Ashley
Nov 3, 2011. 12:52 AMGreenfielt says:
Hi there,

I'm using an Arduino Mega 2650, as a test i've connected pin 13 as the only button on the board. Before starting the Serial_Midi_Converter program all LEDs are off on the board. But after i started the program the TX LED stays on.

This means there is constantly data transferred? Does someone has an solution for this?

Thanks
Nov 13, 2011. 11:00 AMGreenfielt says:
It works like a charm! Thanks for helping me out...! It almost made me crazy haha!
Nov 9, 2011. 11:29 PMapefive says:
(removed by author or community request)
Nov 8, 2011. 1:03 PMrecordmasta001 says:
Also, can the pots and sliders be any values?
Nov 9, 2011. 6:57 AMrecordmasta001 says:
Yes, Ok thanks, I have a load of 100ks lying about and didntwant to buy new ones, although chep, it seems a waste!

Thanks
Nov 8, 2011. 12:49 PMrecordmasta001 says:
Instead of the two sliders, could you use a crossfader? A crossfader basicy uses two slider built in, could this work with the program though?
1-40 of 181next »

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!
26
Followers
1
Author:fraganator