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

Step 10Future Enhancements

I hope you've enjoyed creating your own MIDI controller (and my first Instructable)! Please post any suggestions or features you'd like to see in future revisions of the MIDI controller.

There are a number of things I'd like to add and change in future MIDI controllers.

1. Create a simple software/hardware architecture to allow for easily expandable I/O. This would be through the use of additional microcontrollers or dedicated I/O chips.

2. Utilise the LUFA library to make the controller a true USB MIDI controller, and not rely on extra PC software.

3. Update the Arduino sketch to support 14-bit MIDI messages

4. Build a CNC machine for cutting out holes in the enclosure (you may have noticed some of the button holes I made are a bit wonky).
« Previous StepDownload PDFView All StepsNext Step »
7 comments
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????
Aug 28, 2011. 9:57 AMjmixon says:
hi, sweet setup!! gonna build it now and see if i cant get it to work. gonna use my old laptop trackpad for the two sliders since its all i's gots at the moment. lol.

ive been pointed at this library
http://www.arduino.cc/playground/Main/MIDILibrary

and specifically the CALLBACK feature, which my limited understanding tells me is simply a fancy do while type command.

it SHOULD work just fine with the lufa library which i will test should the arduino midi library not work right, as i have used the lufa successfully with a one button one pot setup.
May 6, 2011. 1:54 PMantonmorvolhert says:
By combining the schematics from this library's documentation:
http://ruinwesen.com/mididuino

And this tutorial:
http://shiftmore.blogspot.com/2010/01/quick-and-dirty-arduino-midi-over-usb.html

You can have a functional usb midi device without the use of any kind of software.

The only downside to this setup is that you would need to open the box every time you need to program it but after completing the code this is no longer an issue.
Jun 21, 2011. 11:54 PMpgiuliani says:
How it would be if you upload the Sketch for this method? If you dont have an Arduino Uno you can send me an Email with the edited Sketch and i will try it for you! =)

Email: giulio_94@hotmail.com
Jun 21, 2011. 11:50 PMpgiuliani says:
Hi ho! I again =)
I have a Arduino UNO R2..
I uploaded the Midifirmware of http://hunt.net.nz/users/darran/ on my Arduino!

The upload was successful and my Windows was showing it as "Arduino MIDI" =)

But i have a Problem. When i want to use it on Traktor, and i use the "Learn" Method for a Potentiometer, it switches on all channels when i turn it! :D So i can't choose my Potentiometer...

I think i have to change the Midi messages (The order or something)... Can you say me how??

DESCRIPTION:

Byte Description
0 Command: E.g. 0x90 Note On, 0x80 Note Off.
1 Channel: 1 to 16
2 MIDI data byte 2. Depends on Command, for 0x80 and 0x90 this is the Pitch values 1-127
3 MIDI data byte 3. Depends on Command, for 0x80 and 0x90 this is the Velocity values 1-127

ACTUAL:

Serial.print(channel, BYTE);
Serial.print(pitch, BYTE);
Serial.print(velocity, BYTE);

NICE TUTORIAL!! =D
Jun 22, 2011. 1:40 AMpgiuliani says:
I have found a solution!

Serial.print(channel, BYTE);
Serial.print(1,BYTE);
Serial.print(pitch, BYTE);
Serial.print(velocity, BYTE);
Mar 20, 2012. 3:45 PMmakaha85 says:
Can you please tell me in detail what i have to change?
I don't find this part in the code.
Feb 26, 2011. 12:44 AMtrainables says:
How to adapt this for use in non-MIDI applications, like as an arcade controller for MAME or as a custom controller for Blender or DAZ 3D (maybe in conjunction with AutoHotkey)?
Feb 26, 2011. 4:34 PMtrainables says:
I might have found the answer. May have to build this project to find out.

http://forum.ableton.com/viewtopic.php?f=1&t=115621&p=1002676#p1002676
Feb 28, 2011. 3:55 AMmrasmus says:
It's important to note that LUFA is for AVR's with hardware USB support -- the main chip on the Arduino does not have this capability (which is why a secondary chip, an FTDI (or more recently, a smaller AVR *running* LUFA) is necessary for the USB Serial communications). I suspect you knew this, but I figured it'd be nice to be clear about it. If you were to want to run as a USB device on a non-HW-USB AVR, you'd need to use a software implementation like V-USB. I'm not too familiar with that project, but it might be possible to use the lower-end AVR's to this effect using it... might be worth exploring.

This is basically the exact same as a half-finished panel I've been working on for a bit, based around an AT90USBKey I've had sitting on my desk for a bit, and running (you guessed it!) LUFA so that it can act as a "true" USB MIDI device.

Great Instructable, gave me a few little ideas to improve on my design.

Oh, and as far as converting the project to run as a controller for MAME, etc., it may be worth looking into the excellent Dual Strike PCB for arcade controllers -- IIRC, it uses the same chip as the Arduino, has open code to peak through, and does a V-USB-style software USB stack (it may actually be V-USB, I don't know) for USB HID-class controlling for PC and PS3 support. Have one in my arcade stick, 'cause I got lazy and just wanted something that worked.

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