custom controller n00b questions

custom controller n00b questions

Let’s say I wanted to build something like midifidler’s MidiFighter, only without the status LEDs. 16 high-end buttons, in a grid, each of which sends a note-on message or something.

Where do I start? Where do I get the buttons? Will I just need to know how to solder (which I sort of do), or is there some board etching or other magical-to-a-pure-software-guy process I’d need to understand?

And in general, am I signing up for a whole lot of hassle when I should really just be throwing down a few benjis on a VCI-100 and/or an APC40, and not worrying so much about ultrafast triggers ala Ean’s ubiquitous YouTube vid?

“Be honest, and don’t spare my feelings…do you have any more of those crispy crab cakes?” -Bullworth

There are many different ways to build your own controller. You can start from scratch or modify an existing controller (or a joystick, gamepad, mouse). Also the work will depend on what controller you choose to build. Some need only soldering and some need more than that, but the hard part is making the casing that holds everything firmly together.

Big controllers tend to cost more to build than to buy one, but building one is a lot of fun and you can customize it to your needs.

For components look on the net for big electronics sites.

The basics of a “box of buttons” controller is simple enough, and any Arduino compatible CPU will be pretty much all you need. Go visit:

http://www.arduino.cc/

Reading buttons and sending MIDI messages is simple - Connect a switch to each of the Digital inputs of your Arduino, and connect a 5-pin MIDI DIN connector to a UART-controlled pin (labeled “TX” on my $12 Boarduino). Connect the MIDI out port to a MIDI in on your soundcard and point Traktor or Ableton at that and you’re good to go.

Put it together on a Breadboard first while you are learning. Start with a single switch and an LED to light when the switch is on. Progress from lighting an LED to initalisin a UART serial port and sending a 3-byte message out of that. (plenty of examples out there).

The software can be written using Processing. Just get the Arduino software suite for easy programming tools - and by that I mean not just an editor and a compiler but something that will “program” your chip by talking to the bootloader. It’s all covered in the Arduino tutorials.

Once all that works, you get to look into reading analog controls like POTs, reading more buttons than you have Digital pins by using “Shift Register” chips and stuff like that.

Do it! It’s surprisingly easy (provided you can program a little - nothing more complex than looping and using variables).

not trying to hijack the thread, it is related :smiley:

im new to all this too and would love to build something like the midifighter as well. looking at this link, http://arduino.cc/en/Main/ArduinoBoardDuemilanove, is it really as simple as that board, 16 buttons and a midi connecter? how would you go about writing a program for it?

many thanks!

A couple of my friends are software dudes who’ve picked up the Arduino recently, so I’ll pick their brains a bit. Thanks for the motivation, too. I can just imagine the satisfaction that must come from rocking a crowd using homebuilt tools…

I should probably be reading Arduino doc for this next question, but maybe you know and some other peeps here will be interested:

Is it possible, and (if so) how much more complicated would it be, to build the controller so it outputs MIDI over class-compliant USB?

I’m totally new to the whole thing, what are the advantages/disadvantages Arduino vs Midibox? I just saw a midibox project and really liked the modularity it had…

Personally I think the Hale Micro UMC32 is your best bet. It is what I used to build exactly what you’re talking about, a grid of buttons with no LEDs.

http://www.halemicro.com/Products/Products.html

I built this guy:

and it was totally easy, especially if you have any soldering experience. The great thing about the UMC32 is that it is truly plug and play. No programming necessary at all.

The Arduino setup communicates with the host over USB through the notorious FTDI chip (a.k.a. the $6 USB tax), a chip that accepts serial data (like a modem does) and pipes it over the USB to the PC on the other side. So you can’t directly talk to the USB interface or the host, you’ve got an intermediary chip and driver set doing that for you. It greatly simplifies the world of the Arduino programming, but it means you can’t make AudioMIDI Class Compliant devices using Arduino.

To do that you need to start with a USB enabled AVR chip, like the AT90USBxxx series or the ATmegaXXU series and work outside of the safe and well designed Arduino “playground” and in the world of actual to-the-metal programming using the WinAVR compiler and libraries. It’s not that much more difficult (once you’ve scanned the 200-page specs for the chips and the documentation for the libraries!) and it’s extremely satisfying seeing how everything works under the hood.

To help you out implementing the USB protocols at the low level, there’s a really handy open source project called “LUFA”, the Lightweight USB Framework for AVRs that handles the messaging and setup, produces class compliant startups and gives you a basic cooperative multitasking framework so you can run several endpoints at once (like it could be a MIDI device, a HID input, a Streaming Camera and a USB storage device all at the same time).

http://www.fourwalledcubicle.com/LUFA.php

It takes about a week of evenings to get the software working.

Nice work on that controller, and after reading the UMC32 manual I’m leaning slightly in that direction.

I like the idea of programming weird custom behavior into a controller too, but maybe most of what I’d want to do in that realm is possible using tools that run entirely on the host (like Bome’s MIDI Translator).

Great detail, thanks.

The AVR route sounds like it may require somewhat more can-do attitude and general manliness than I’m looking to bring to the table right away, but I’m glad to know it’s out there.

Switching back to Arduino for a moment:

Assuming I want to build an Arduino-based controller that outputs MIDI over a DIN connector, and I have some other MIDI controller that
a) is recognized by my host as AudioMIDI Class Compliant over USB, and
b) has a DIN-style MIDI IN port on it

Can I just plug and rock in that situation?
Is the VCI-100 suitable as that sort of intermediary?

I think I remember reading the APC40 has no MIDI IN on the back, so that makes baby jeebus cry a little.

DJTT’s has some thing up its sleves for you …

A little bunny?

so when should I expect the non-disclosure and non-compete agreements to hit @gmail? cuz I know you of all people aren’t tempting me not to do a DIY project on the grounds that people who know what they’re doing are about to build what I want… :smiley:

Same question. Anybody have experience with both?

I am currently leaning toward MidiBox because it seems like using Arduino would take 5 times as much time due to extra programming and wiring etc.?

Comparision of core modules for midi projects might be a pretty good idea for an article imo… or at least a seperate topic.

Oh yeah… and what is this supposed to mean? :stuck_out_tongue:

A while ago on one of the blog posts (I think…) there was talk of a kit version of the MidiFighter. Not sure whether that’s related at all, but considering the source of the most recent innuendo…

The halemicro is nice, and it’s the way i would go, but if you want another option check out the BU0836X from BU0836X joystick interface : Leo Bodnar Electronics. It’s HID, but it’s fairly simple to convert HID to midi. And a lot of software is starting to support HID.
And it supports rotary encoders!!!

I fully recommend rolling up ya sleves and trying it for your self. However there is something on the way which should make both the person who wants to try a little practical work, and the modder with big ideas happy

It means DJTT rocks :sunglasses: