The main idea of this project is quite simple. It is to modify a Guitar Hero controller so that it can not only play on its own, but also play perfectly.
Here is the First Song I did: "When You were Young" by The Killers
I am also working on Through The Fire and The Flames by Dragonforce and will upload it when finished.
UPDATE: I was unable (really just unwilling to put in the amount of time needed) to make it play perfectly. I was able to get it up to 98.549% a mere 1.451% away from perfection.
I may eventually fix it to be made perfect but for now only missing 54 of the 3722 notes is good enough for me.
So with out further ado here is the video of it getting 98%
Throughout this instructable you will see numbers written in each step. These numbers correspond to the pictures above the step(1 being the first etc.).
I got my first Arduino (Mega-2560) a few months ago. I love it. I've done a few really small projects with it, mainly with LEDs, but I have not done a big project yet. So I started thinking. My first idea was to create a system that would sync our Christmas lights to music like so many people have done. So I started doing research. I found out that this would be fairly easy to, all I would need to do is get some Relays and wire them up to the lights and use a serial connection from my computer to my Arduino to tell it when to turn on and off the lights. This was exactly what I was looking to do, except we don't really have a lot of outside Christmas lights nor do we have very many people in our neighborhood that would even see them. Also, being new to electric circuits, I didn't want to deal with AC as it can be very dangerous if you don't know what you are doing. So I decided against doing Christmas lights synced to music.
Throughout all the research I did on lights synced to music, I found out about a program called Vixen. Vixen is a program that many DIYers use to control their lights. It's got a really simple interface, it can output in serial commands, and it is really easy to get the timing on things really precise, even down to a couple of milliseconds. Since I had just ruled out doing Christmas Lights, I started to think about some way I could incorporate this awesome program into another project. I tried to think of something that I use a lot that I could automate with this. The first thing that came to mind was Guitar Hero. Ever since guitar hero came out I have been a huge fan. I have most of the games and 4 or 5 of the guitars. I love playing the game and have gotten really good, but there are still a few songs, like Through The Fire and The Flames by Dragonforce, that I cannot beat. So my goal was to build something that could beat that song on expert, but not only beat it buy play it perfectly. No, I didn't create this project to get the highest score on the leader boards, because that would be cheating and I could care less about a high score.
The way I went about this is different than many people who have done the same type project. First, many of the projects I have seen use motors/solenoids to physically push the buttons, but this is not the best method for a few reasons:
1. The motors/solenoids are not instant. They take time to push and release the buttons. 2. Motors/solenoids can be expensive. My method addresses these issues by using Solid State Relays (SSRs), which have switching times of about 1ms and are relatively cheep (about $1 per relay).
A second way mine is different is that mine is "programmed" instead of using light sensors attached to the screen like many projects I have seen use. While yes you must program each song you wish to play and programming the songs take a while, it seems to be more accurate with the notes and does not have to be calibrated.
How it Works:
The way this project works is kind-of complex, but once you understand it, it is quite simple. First you create an "audio note chart" of the song you wish to play. Next this "audio note chart" is converted by the application Vixen to serial commands. These serial commands are sent to the Arduino board. The Arduino board the turns on some SSRs which make the controller think that buttons are being pressed, thus "playing" the guitar.
Like with many projects, this project can be split into 2 different parts: Hardware and Software.