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 ads by
Signing UpStep 1: What You'll Need
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












































Visit Our Store »
Go Pro Today »




I would very very much appreciate it
Thank you in advance
Main difference between the Leonardo and Uno are the way it handles Serial. But to troubleshoot it we'd have to know more about the setup. is it exactly as in the tutorial?
// Rows are ordered from bottom to top (same as the MIDI Fighter's button layout).
sorry to bother but can someone explain me why we skip a ropw of buttons, because, im doing an arduino midi but i only have 6 buttons, so i change the size in the arrays but, when the reading of digital imputs come i found this:
#ifdef MIDI_FIGHTER
if (i >= SKIP_ROW * 4)
{
digitalOffset = i + 4;
}
else
{
#endif
so, i am using the "midi fighter" even if it doesnt do all the things it should because of the 6 buttons only, but how should i change this logic to make sense with my program-?? can someone help me, i really thank you all for the help.
First off al many thanks for this great tutorial.
I am about to make my order for all of the components, and want to make a 16 arcade button controller.
Wil this buttons send midi note massages. So like C3 ? And could this easily be changed to other notes?
Best regards.
Tim
I have a problem to setup this awesomeness machine controller on a mac that work perfectly on my PC but for some reason on my mac book i missed something only the RX flashing any idea?
i need it for mixing live ;)
It is interesting HACK for Arduino This is a native MIDI firmware for atmega8u2 on Arduino Uno. My question is whether it is possible through this HACK code to work without Serial to MIDI convertor?
PS:Let me be excused for my bad english.
Best Regards from Bulgaria
First of, thank you for publishing : ) it looks awesome.
I have a question referring to the number of buttons.
I intend to build a button matrix of around 20 buttons (5 * 4. I am a beginner but have colleagues that would aid me. The question is, will the script work with a button matrix at all?
I will be usind the DRFduino Uno v3.
I hope you can help : )
I've been reading some questions, but no one have asked about this.
What's about latency? I want to build one, but i would like to know if the latency is very big or simply as any midi device.
Thanks you and greetings from Spain.
Congratulations!!!
Hope you had a nice honeymoon :)
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!
In terms of the sketch, it should run fine on the Uno without any modification. The conditions only come into effect when compiling for the Mega or Teensy.
They both work fine :)
(in regards to both the origional question, and your answer)
And, on Serial MIDI Converter, the TX doesn't flash green. What's happening
Do you have any idea?
No you dont need to change the code in any way!!
Thats whats so awesome about his code, it is fluid.. meaning you can have as many or as little as you feel you want!! with in reason :)
As for the midi problem, do you have midi yoke installed??
If not, look up "MIDI Yoke" on google, download and install
That is most likely your problem!!!
Get back to me if it works or not!!
Cheers, hope it helps!!!
:)
I have an arduino uno and whenever i connect the 5V it shorts out and turns off
Any suggestions?
(I am an amateur so be gentile)
Thanks
same thing happened to me at one point!! to fix that check this:
1) every wire is connected. So signal, GND and 5V
if something isnt connected by those three things it shorts out!!
2)Make sure you dont touch the 5V and GND wires
It shouldnt damage your arduino but that is a very common cause to the problem for beginners!! Im one as well so i know from experience :)
Hope this helps!!!
In order to find the short, follow the 5V wire that connects to the Arduino back into your circuit. Make sure it is not connected to any ground wires. The 4.7KOhm resistor on one of the buttons is a bit tricky and is where'd I'd check first. Make sure the 5V wire goes into one side of the button, and the resistor connected to ground / signal wire are connected to the other side of the button.
The other place to check is the pots. Double check the wiring there and make sure 5V and ground aren't accidentally soldered together. How many pins do your sliding pots have? If they're the same sliding pots as I've used, they'll have 3 pins. The datasheet (http://www.sparkfun.com/datasheets/Components/General/TW-700133.pdf) indicates there's 4 pins, so yours may have 4. If that's the case, two of these pins are internally connected (pin 2). If one pin 2 is connected to ground, while the other pin 2 is connected to 5V, it'll short out.
Hope that helps!
http://www.ebay.com/itm/5-x-B10K-10K-OHM-Linear-Taper-Rotary-Potentiometers-10KB-POT-USA-SELLER-/221166204177?pt=LH_DefaultDomain_0&hash=item337e887511
Also, what could I type besides "slider potentiometer" into ebay to find the most results. "slider potentiometer" does not seem to bring out a lot of results.
Lastly, would 22 AWG "stranded" wire suffice?
I've never worked with anything besides wood, so I'm really in the dark with all this electrical stuff...I don't even know what ground, amps, etc. mean. But I like to DJ, so this seems like a great project.
1. I have potentiometer's that are 500K. Will these work?
2. I am purchasing my slliding potentiometers from ebay and there are a range of "K" values. Does it really matter what the "K" is?
1. They should, but I'd recommend using 10K pots. The datasheet for the ATmega mentions 10k as the upper limit for analog inputs to ensure an accurate reading is performed. Also make sure they are linear, and not logarithmic or "audio".
2. The K simply means thousand. So a 500K pot means it has a range of zero to 500,000 ohms. As I mentioned above, try go for linear 10K pots.
and do you have to use any other software programs or is it just plug and play?
For the Arduino board, you do need an extra bit of software (a serial to MIDI converter), along software for a virtual MIDI port. If you use a Teensy board, it can be set to act as a true USB-MIDI device, so no extra software is necessary.
I have just one question: will it work with Arduino Nano w/ATmega328?
Thank you very much and best regards.