We just talked to the two guys responsible for the Guitar Hero Office Christmas Light Extravaganza and asked them to elaborate on the process of creating such a bad ass light show. The two guys, Kyle and Colin Bryson, have been equipment from National Instruments to make automated light shows already, and just took it to another level with the Frets on Fire (the PC Guitar Hero) integration. Check out the full interview and bonus video (playing Through the Fire and Flames, the hardest GH3 song) after the jump.
Giz: How did you come up with this idea?
For several years, Kyle has done an automated Christmas light display using hardware that he has worked on at National Instruments. When he started playing Guitar Hero this fall, it sort of just seemed like a natural fit...couple that with the fact that Guitar Hero is more popular than ever right now, and it seemed like the perfect idea and timing.
Giz: How long did the whole thing take you guys?
Probably about 30 hours...most of which was spent the weekend before it's debut modding the Frets on Fire program extensively. The basic cubicle light design had been done years past, so I was tasked with wiring and setting most of that while Kyle investigated the ins and outs of programming with Python, a language neither of us had used before this project.
Giz: Can you explain the process? How did each piece hook up?
First, I'll hit the hardware side: Kyle's Dell Athlon 64 x2 XPS (running XP SP2) was hooked up to 2 NI 9172 USB CompactDAQ (Data Acquisition) chassis, one in the front corner and one in the back. Each of these chassis held 4 NI 9481 quad-channel relay modules, resulting in 16 channels per chassis and a total 32 independently controllable channels. The 32 strings of lights hung around the cube were wired individually (by me) into the relays. Using hardware timed generation, all 32 channels were updated every millisecond. Add on the USB XBOX 360 Guitar Hero 2 controller, and the system was ready for some code.
Alright, on to the software side of things: The Frets on Fire game was written entirely in Python but the API for controlling the cDAQ modules was written in C. Thus, a colleague (thanks Joe!) used SWIG(Simplified Wrapper and Interface Generator, seen here) to make the API available from the game code. Once this was available, Kyle and I teamed up to "pair program" the modded code (Kyle at the keyboard, and me behind him questioning things and generating ideas). Since we had very little knowledge of the language or the game's structure, the biggest challenge was understanding the game's composition, learning how all of the variables we needed were captured, and deciding exactly how to insert our light-controlling code. Oh...and keeping it from crashing...
Giz: What was the hardest part (besides actually playing Fire and Flames on expert)?
Well...besides the fact that autoplay could not handle Fire and Flames on expert (it's just too hard!) I guess we'd have to go with maintaining overall stability. That, and finding a way to counteract the delays our code imposed so that the lights were actually in sync with the sound.
Giz: Are you guys going to do a fireworks version for NYE?
You know, if a box from Gizmodo arrived with the right equipment, it would be tough to ignore.
Giz: And anything else you guys feel like the world should know (like which one of you is the better player)
Well, neither of us are superstars, but I think I have a slight edge in the competition. Also, I am actually a full-time student at Texas A&M and don't work at National Instruments...but maybe someday soon! Thanks for your interest and time, and we hope everyone enjoyed the display!
Thanks Colin and Kyle!