“What’s got 6 eyes, 6 fingers, 6 brains and plays Guitar Hero III? If you answered ‘The Beast’, you’re close. It’s actually the Guitar Hero ‘bot’ that I’ve been building around 6 Arduino cores (Boarduinos actually). It uses 6 photodiodes mounted on a LEGO rig to ‘see’ the notes on the screen and drives a wireless XBOX 360 controller through a series of 6 Reed relays in real time. So how does it perform? Right now, with some quick and dirty code to decode and play the notes, it’s tuned to play Medium-difficulty songs with a hit ratio between 80% and 90%. The bot also controls ‘Star Power’ by itself when it’s charged enough. I have high hopes that with some more work, it will be able to handle Expert-level songs with good results. I’ll post a demo video of the bot playing GH 3 later this week. ”
Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !
Cool idea using the photodiodes.
I can see using the reed relays if you’re using a 360 pad that doesn’t use common ground, but its pretty trivial now to find a 360 pad that does use a common ground (GameStop branded MadCatz ‘mini’ pads, the MadCatz arcade stick, and others) so that using the relays aren’t neccessary. If you can’t find a common ground pad, using analog switch ICs like the 4066’s (I use 74HCT4066N’s for this purpose all of the time) or the MAX4611 would have the same effect with less delay and less power consumption.
Since we’re talking 6 probably analog inputs, 6 digital outputs (assuming the strum bar is digital), you should totally be able to do this with a single (bo)Arduino. Just my opinion; feel free to flame if there’s something I’m not taking into account.
No flaming necessary 😉
Thanks for the tip about the 74HCT4066N. I’ll check it out.
The Reed relays, even if they’re less efficient and slower than the analog switch ICs, are still way faster than any human player could ever hope to be and that’s all I really needed for this project 🙂 It was a straight forward way of driving the wireless controller, without having to worry about voltages / current levels. I had a version of this project using a single Arduino initially and it didn’t perform as well as I thought it would, which is why I went with dedicated CPUs for each note instead. I’m still experimenting with this and there’s much tuning to be done. I think that once I have worked out a better way to process notes at a very high rate, I’ll investigate using a single microcontroller to do it all.
Sweet! Any chance of directions being released so other people can do this?
I wish I knew how to make one of these things.
I am interested in learning to use photodiodes to do this as I think this is a very elegant solution but I am uncertain where to begin. Currently I have been working on a bot to play from the computer but I think playing real time is very cool. If you are interested in helping to school a newbie please let me know!