Building a MIDI-Controlled Light Show via Arduino, Part One

2017 UPDATE: I just realized I never finished this old article… I’ll be working on it during the first week of 2017 and should have something new soon! Sign up for updates and you’ll know when it’s done…

Professional stage lighting is big, heavy, expensive, and complicated.

Then again, professional album creation used to be that way too- you’d pay session players, spend $1,000 an hour on studio time, and even more on artwork and CD replication. With that in mind, I wanted to figure out how to create effect lighting (think flashy colors, not flood lights) on the super-cheap for my Coffee Bunker set and on-stage performances.

What I Wanted To Accomplish

I pride myself on a lightweight, easy-to-travel setup. There are only two of us on stage and we rely on a convention’s in-house A/V crew. I try to keep our load-in to less than half an hour and setup/sound check to an hour at most. Keeping my ship this light and maneuverable was the #1 priority.

RGB LED StripWhat I needed was some way to control LED strip lighting from my on-stage controls (which are all MIDI-based). In theory, I should be able to hit a foot switch in the middle of a song and have the LED’s flash with the thunderclaps from “Let It Rain“, or pulse in various colors to the exact tempo we’re playing, or glow bright red when the ship is under attack. That sort of thing.

My Way or The Proper Way

Effect lighting is usually controlled by a system called DMX. If you’re familiar with MIDI, it’s kinda like that… only specifically for stage instruments (lights, lasers, fog machines, etc.) It’s an industry standard, but basic lighting controllers start at over a hundred bucks and they’re usually 2- or 3-U rack-mount hardware. I fly to gigs. The last thing I want is a big rack unit to put in the “gentle” clutches of the TSA.

Arduino Uno R3

Enter the Arduino. In a nutshell, it’s a tiny computer running on a very basic programming language. You hook things up to the available pins and the little CPU either senses voltage coming in or controls voltage going out. That’s it.

And it’s about $25, shipped.

Sparkfun MIDI Shield

Add onto that a pre-made MIDI interface like the MIDI Shield from SparkFun for another $25 and you’ve got yourself a computer that can talk to your music setup. Sure, you’ll need to know a little bit about soldering and programming, but this is the stuff they give 8th graders to teach them about electronics. You’re as capable as an 8th grader, right?

So the basic hardware build is something like this:

  1. Solder the parts of the MIDI Shield (buttons, jacks, knobs, stackable headers) onto the board.
  2. Shove the MIDI shield’s headers into the corresponding pins on the Arduino
  3. Connect my on-stage gear’s MIDI Out to the Arduino’s new MIDI In

Why Not DMX?

If you’re familiar with all this stuff, you may be wondering why I didn’t just get the DMX shield so I could use the industry standard.

DMX lighting instruments themselves tend to be heavy and bulky, not something you can literally roll up on a spool. They’re much brighter, but I don’t need front-of-house lighting, just some on-stage accents. Also, that still wouldn’t solve the problem of getting my Mainstage MIDI setup talking to the Arduino. Rather than deal with two shields and expensive lighting hardware, I’d rather control the lights directly from the Arduino and keep things small.

The MIDI shield has a couple of LED’s built right into the board, so you can start testing right away (GladOS would be proud). Eventually this could lead to all kinds of programmable effects, like animatronic robots playing bass for me. I’ll get into the soldering details in Part Two, but this is enough for today’s write-up. Back to making music!

  • eSage

    Nice! This parallels what I’m working on for our stage work. My problem is that my little 16-channel DMX system has been grossly overloaded with the newer tech. For example, rail lights that provide a wash to the stage backdrop take a minimum of 8 channels to do anything worthwhile. So a little DMX adapter linked to my laptop computer and voila, 512 operational channels that I can link to any background music or sound effect. (I’m staying with DMX control rather than MIDI as that’s what the current systems uses.)

    • Yeah, that’s my philosophy: Use the hell out of what you already own. I need MIDI control because I’m using Mainstage to do all my signaling. So the same software that trigger sound effects will also trigger light/animatronic effects using the same language and CHEAP, abundantly available cables.

      If I need to move to DMX, it means I can afford a professional to do it. 😉

    • Yeah, that’s my philosophy: Use the hell out of what you already own. I need MIDI control because I’m using Mainstage to do all my signaling. So the same software that trigger sound effects will also trigger light/animatronic effects using the same language and CHEAP, abundantly available cables.

      If I need to move to DMX, it means I can afford a professional to do it. 😉

  • Netolu Shadowlin

    I love the ambition and goal of this project. I’ve worked with both DMX and MIDI, and your goal of ‘light and inexpensive’ is certainly easier on MIDI. Since you aren’t trying to light the house, the limitations of MIDI shouldn’t be a problem.

    • Right… and one of the big concerns is not having to haul any more hardware than necessary. DMX control would be awesome, but I’d need a MIDI-to-DMX converter if I wanted to control this stuff from my MainStage setup. The Arduino will do the job and stay tiny. And use very little power!

  • Netolu Shadowlin

    I love the ambition and goal of this project. I’ve worked with both DMX and MIDI, and your goal of ‘light and inexpensive’ is certainly easier on MIDI. Since you aren’t trying to light the house, the limitations of MIDI shouldn’t be a problem.

    • Right… and one of the big concerns is not having to haul any more hardware than necessary. DMX control would be awesome, but I’d need a MIDI-to-DMX converter if I wanted to control this stuff from my MainStage setup. The Arduino will do the job and stay tiny. And use very little power!

  • Fizz Otter

    You could also just use a bunch of our PlasmaTrims and control all of them via USB HID control from a little script that listens for MIDI events and skip all of the hardware. But after all, it’s fun to build stuff! 🙂

    • That it is, and this is also laying the groundwork for animatronic robots on stage with me as well. I don’t think PlasmaTrims are set up for that!

  • Fizz Otter

    You could also just use a bunch of our PlasmaTrims and control all of them via USB HID control from a little script that listens for MIDI events and skip all of the hardware. But after all, it’s fun to build stuff! 🙂

  • WolfSkunk RedWolf

    Not only that, a relay set will get you the more powerful lights controlled by the Arduino.

    • Well that’s the end goal… anything from flashpots to animatronic robots to Sharpies could be controlled this way without having to alter my programming too much.

The Democratically Elected Best of Matthew Ebel Join the Robot Army, get a FREE album!

* indicates required

Enlist Today!