I promise you I didn't use this during online matches.

My uncle got me an Arduino Uno a long, long time ago. I wasn't familiar with microcontrollers at all, so I wasn't really sure what to do with it. I bought some coloured LEDs to play with the Arduino a bit. I happened to own the same LED colours as the Guitar Hero controller buttons and I came up with the idea for a bot.

On my computer I wrote a program where you could place Guitar Hero coloured notes per measure up to 32nds. Next was to enter the song's BPM and hit generate. This would create an array which you could then paste into your Arduino code. It looked something like this:

uint8_t generated_array[length] =
{
  0x01, 5, 0x01, 5, 0x03, 5, 0x03, ...
};

The way this is interpreted is that hex values indicate which notes must be pressed. Just look at it as 5-bit values where each bit represents one colour. By doing some simple bit masking you can make it represent stuff like chords where you hold down more than one note. The decimal number indicates the delay in microseconds before hitting the next note.

This of course means that you're pretty limited to the ATmega328's dynamic memory, which relatively speaking isn't much. Depending on the song the bot cannot play on forever. Not only that, but Arduino's crystal isn't very accurate and after a while it goes out of sync.

You may be ugly, but you're still my baby.


Back