Play Guitar Hero 2 on the Drums

Egyokeo.com Home



Check it out here in this video, I'll get into the details below...

direct link: http://www.youtube.com/watch?v=AR_fdzNrVP8

The Components

Since I injured my middle left finger playing Guitar Hero 2 way too much when it came out, I've been dying to get back to playing it. But my finger hasn't healed. I was holding the neck too tightly on the X-plorer guitar controller and it hurts to bend it anymore. I've never had an injury playing the drums, so I thought "wouldn't it be great to be able to play Guitar Hero on the drums?" So I thought about how that might be accomplished... researched, implemented, borrowed, and here I outline the finished product.

Here's the whole chain of what's going on:
  1. Me banging on my drumKat MIDI drum pads
  2. drumKat MIDI Out to MIDI/USB adapter to PC
  3. PC running my own custom MIDI Hero software
  4. MIDI Hero calls into XIM which sends input to the Xbox 360 console
1: Me banging on my drumKat MIDI drum pads

I needed to solve the basic problem: decide which pads should simulate the 5 fret buttons in the game. Also, how am I going to play 3-note chords with only two hands?

The answers... The drumKat has 10 pads total (plus it is expandable to up to 9 additional drum triggers). The way the pads are laid out, there are 6 lower pads and 4 upper pads. I found a reasonable mapping of the 6 lower pads to the 5 fret buttons. The middle/yellow fret button got two pads assigned to it, which allowed me to have some freedom in my sticking patterns. Then I mapped the 4 possible combinations of "adjacent 2-note chords" to each of the 4 remaining upper pads. Now I can play any 3-note chord with 2 sticks, except for the G-Y-O chord, which I've never seen in any Guitar Hero song, so it's not really needed. Not all 4-note chords are possible with this approach either, but again, they are rare. And given that I can have additional pads as trigger inputs, I could get creative with extra chord pads if I ever wanted to.

I actually do use one of my 9 trigger inputs for a bass drum pedal to deploy Star Power. I also use a variable-depth hi-hat pedal for the Whammy Bar and that has its own input on the drumKat.

Here's a graphical layout of the pads/frets: (click to enlarge)



2: drumKat MIDI Out to MIDI/USB adapter to PC

My drumKat has MIDI Out. Some PC sound cards have a way to accept MIDI In. But it was just simplest to go buy the Turtle Beach MIDI/USB adapter. Works perfectly and easily.

3: PC running my own custom MIDI Hero software

I needed a PC in the mix so that I could write the MIDI Hero software to do some special things to make playing Guitar Hero possible on drums: 4: MIDI Hero calls into XIM which sends input to the Xbox 360 console

What is XIM? XIM is what makes this all possible! It stands for Xbox Input Machine. This was going to be the most challenging part of my project to get this all working. So I went looking online to see if anybody had done anything remotely like what I needed, which was to be able to have a USB device that simulates Xbox 360 controller input to the Xbox 360 console itself. Then I found OBsIV. He had already done the "hard part" while working on one of his own projects to allow him to play Halo 2 and Halo 3 with Wii Remote and Nunchuk. All I needed to do was ask and hope that he'd share the technology he designed and implemented. As luck would have it, he was planning on releasing a package for people just like me, to make their own XIMs!

I really can't thank OBsIV enough for doing this. Check out this amazing technology here.

Calibration

From my experiments using various controllers with Guitar Hero 2 on the Calibration screen in the game, I noticed that when you calibrate "by ear" (i.e. you strum when you hear the "beep", not when you see the "blink"), that even a wired controller had 70ms lag. Add the 35ms lag from the XFPS component of XIM, plus my MIDI Hero 40ms buffer, and you've got 145ms delay from the time you hit a drum pad to the time that the console recognizes that you hit a note! This is a long time! But as long as it's consistent, always 145ms on every note hit, you just calibrate Guitar Hero to be 145ms and then every note you hit matches precisely with what you hear. Take a listen to the drum pad hits vs. the sound of the music track in the video above. I'm playing right in time with the music. The drawback is that this feature in Guitar Hero 2 was designed to solve HDTV lag, not controller lag. What this means is the notes you see are shifted too far into the future. It takes a little getting used to, and sight-reading a new song becomes a bit more challenging, but for proper feel, it's more important to play in time with what you hear, not what you see. I hope Guitar Hero 3 and Rock Band will fix this by having the two types of lag calibration. But I doubt they will.

MIDI Hero Features

In addition to reading MIDI input from a MIDI instrument and passing it off to XIM and eventually to the Xbox 360 console in real-time, I added some some fun features: Record and Playback.

In the video above you can (barely) see the small monitor under the TV running the MIDI Hero software. It's recording every note I hit. I was going to try and overlay the playback of the recorded Misirlou transcription in my video, but I'm not that good at using Movie Maker so I gave up.

One benefit that this feature allowed me was acquiring the Co-op achievements! I know nobody within 250 miles of where I live that's any good at this game. Also I have a problem with achievements that require you to be God-like at the game, and have a friend that is also God-like to have to physically come over to your house to beat the achievements. Guitar Hero 3 has remedied that by offering online Co-op, so that'll be awesome. But in the meantime, I got all my multi-player achievements by "playing with myself!" I recorded one part in practice mode, then played it back from MIDI Hero while I played the other on the X-plorer guitar controller live. Call it a cheat if you want, but I did play both parts. Just not at the same time. It's the next best thing to cloning.

Another useful feature is that you can analyze your mistakes. When I was going for the 500k achievement on X-Stream, I always screwed up the tri-chord section. I thought for sure I was hitting those perfectly. Nope, looking at the recorded transcription window in MIDI Hero showed that my timing was inconsistent. A few more minutes of practice and I had them nailed. Also, the transcription files are in a tab-delimited format, so you can easily open them up in Excel and go crazy with your analysis down to the millisecond if you wanted.

Here's a screenshot of MIDI Hero with part of my Misirlou recorded transcription showing in the window: (click to enlarge)



Other MIDI Instruments

With this setup, it'd be possible to use any MIDI instrument to play Guitar Hero 2! You could use a MIDI keyboard, or imagine this: playing the game on a real guitar! For each different class of instrument, MIDI Hero would have to be tuned to work with it. For example, with a piano or keyboard, you would not want the auto-hold feature since it's comfortable and natural to hold notes by holding down keys. With a MIDI-outfitted guitar, there might need to be some more sophisticated filters to handle string note sustain, recognize whammy, etc. But the potential is there!