Rhythmn Player – Arduino Based Rhythm Automatic Game Player

This is the code behind an arduino based Rhythm game (Rock Band, Guitar Hero, etc) automatic player. The project consisted of 3 sub-projects:

Rhythm Player Midi – This project is designed to read the midi files from the disk and create an intermediary file displays the notes and the delay between each note. The code was never completed to a ‘releasable’ stage, but was completed enough just to work for our project. Changes will need to be made to get it to read different games formats correctly. This was a fun project that had me learning the ins and outs of how MIDI files actually work.

Rhythm Player Client – This code reads the intermediate file that was created by the Rhythm Player Midi project and sends the notes to the arduino to be played. Again, some tweaking will be required to get it to work in different modes.

Rhythm Player Arduino – The arduino code that listens to the notes via the serial port and sends the notes to the modified guitars.

All projects were simply hacked to get it to work under different situations. (Single Player, Co-op, multiple player, etc.) If people are actually interested, I’ll take time to make it ‘release’ worthy. (Add drop down selection to change to the different modes, etc.) My real goal was to combine the first two into a single project that would read the midi file and send the notes to the arduino without the intermediate step. I might still do this someday.

The guitar hardware changes involved using opto-couplers to separate the Arduino circuit from the guitar controllers. We simply soldered wires to the points that connected the buttons and by triggering a note on the arduino it basically tapped a button.

Code can be found on the github page.

About Matthew Jones

Writer, Programmer, Astronomer, Dreamer, Wisher, Fighter. Always striving to be better than I was.
This entry was posted in Electronics, Software and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *