Tom Hannu is a Guitar Hero bot.
I was sitting around playing Guitar Hero one day when I decided that I needed to do at least one neat project this summer.
So I set out to write a bot to play Guitar Hero. I named it Tom Hannu, as well as using that name to post any of the videos of Tom playing, in the hopes that somebody would figure out that it's an anagram. To my disappointment, nobody did :(
The bot is divided up into two basic parts: a hardware portion that is physically wired up to the guitar controller, and software to learn songs, manage note charts, and play back note charts.
Some demo videos
Hangar 18
Carry On Wayward Son
YYZ
The hardware:
The hardware portion uses a Parallax BASIC Stamp 1 Project Board. It's 4 MHz, 16 bytes of memory, and has 8 I/O pins. It turned out to be perfect for this project.
The basic hardware setup looks like this:
All the hardware does is basically replace the board with the touch sensors that the buttons were once hooked up to. It uses relays to open and close the circuits, receiving commands from the laptop via the serial interface. It's also replacing the board that controlled the strumming as well. I'd like to add support from controlling the whammy bar as well as activating star power in a future version, but that will require using a platform with more available I/O pins since all 8 are used as it is.
The software:
The software is actually made up of three separate programs.
Toms Eyes
The first is the visual recognition software. Using a movie of a song in practice mode, it analyzes the movie frame by frame and creates a note chart for the song. This piece is called Toms Eyes.
Click here for high res version
Toms Mind
The second piece lets you visually inspect and modify note chart files. You can add, remove, or adjust any notes that the image recognition may have missed or miscalculated the proper position for. It also displays stats about the note chart, such as move title, chart title, note count, current note, and the time scale for the song. This is Toms Mind.
Click here for high res version
Toms Fingers
The third piece is just a simple piece that lets you send any button on the controller to the Xbox 360 via software, as well as plays back a given note chart over the serial port. It also allows you to increase or delay the timing as the song is playing, if the song isn't started on time. It's not usually needed, however, because the timing window on Guitar Hero seems to be pretty forgiving. It's fairly basic, and not really worth any further mention. These are Toms Fingers. The source code for Toms Fingers will not be available.
The source code:
Both pieces of software are available as Xcode projects, and are built using a number of Mac OS X specific frameworks. If you're looking to run this on Windows or Linux you're pretty much out of luck. Never the less, the source is still available if you're curious about how it works. I'm warning you now that a lot of it is quite hacky.
Download Toms Eyes
Download Toms Mind
Back