Ben J Scott (.com)
Home -> Guitar Zero 360 -> How It Works

Guitar Zero - How it Works

The Guitar Zero hack is spliced between the fret buttons and strum buttons and the guitar controller's own internal circuit board.

This means that every time a button is pressed, Guitar Zero has to actively pass it on to the Guitar. (the delay is a negligible ~5 microseconds - micro not milli) In addition to passing the button presses on, Guitar Zero listens to them, watching for button combinations that signal that it should enter RECORD mode, PLAYBACK mode, etc.

Internally, Guitar Zero uses a timer that triggers an interrupt every 1/100th of a second. Everything is measured in 1/100th of a second intervals - this is how Guitar Zero knows if you've been holding down RYBO for 2 seconds for example - it counts 200 intervals.

In RECORD mode, whenever you press a button, press strum, release a button, etc, Guitar Zero counts how many intervals pass and records events that look like this (from All Nightmare Long):

G 19
GD 20
G 4
- 8
Y 24
YD 17
- 9
B 24
BD 18
- 6
O 20
OD 19
O 84

When it plays this back Guitar Zero will hold Green for 19 intervals, Green + Downstrum for 20 intervals, then release Downstrum and hold just green for 4 intervals, then nothing for 8 intervals, and so on.

Guitar Zero lets you record at half-speed (or any other speed) and play back at full speed. To do this is simply adjusts the interval before playback - for a song recorded at half-speed, for example, the interval is set to 1/200th of a second during playback. For a song recorded at 60% speed, it is set to 3/500ths of a second. So it still holds that first green for 19 intervals, but the intervals are half as long.

Electrically triggering these button presses is actually fairly complicated. Internally, the guitar uses a sort of signal system. Whereas a typical button press is detected by a microcontroller like this:

The Guitar Hero controller uses a system like this, presumably to reduce the number of I/O pins:

So one I/O pin can detect multiple signals. If it sees signal 7 on wire #3, you're pressing down red, if it sees signal 6 you're pressing yellow, if it sees both, you're pressing red and yellow. I spent some time trying to decode these signals, but never had any luck, so I gave up and decided to use optocouplers to simulate the button presses.

You can read about optocouplers on Wikipedia.

So there you have it. When not recording, Guitar Zero simply passes all button presses through by simulating those button presses with optocouplers. When recording it does the same thing - but stores the button presses and the intervals between them. When playing back it doesn't pass through button presses at all - it just simulates them.

Below is the circuit board layout for Guitar Zero.


©2009 Ben Scott.