The Self-Playing Guitar, or sometimes the Air Guitar, is a project I programmed and partially built with two other students at the Dos Pueblos Engineering Academy when I was in high school.
The project is essentially an electric guitar fixed on a table with an array of pistons that play the guitar. They are doing what guitarists call a "hammer-on", when a player strikes his finger on the fret hard enough that he doesn't have to pluck the string.
An Arduino controls a motor which turns a lead screw which translates the piston carriage up and down the fretboard. It also controls an array of solenoids which actuate and retract the "piston fingers".
A Raspberry Pi controls the Arduino, telling it where to move to play this song or that one. It also runs the GUI.
The guitar has a library of music in MIDI format that it knows how to play. It picks out the guitar part of the song, uses a pathfinding algorithm to figure out how to play it efficiently, and plays the other parts using a synthesizer. This pathfinding algorithm was written by one of my very talented teammates, and I wrote a routine that used some music theory to simplify parts of a song when the guitar was unable to find a way to play it.
The GUI is written using the Python GUI framework Kivy, and it was mostly written by yours truly.
I also designed a few mechanical parts in SolidWorks as the need arose: a new, lighter piston carriage made out of acrylic and thinner sheet metal rather than big blocks of aluminum. A few acrylic plates for protective enclosures, screwed into the 8020 frame. And I manufactured the parts on our laser cutter, lathe, or mill.
We all had a hand in the fairly-clean electrical setup of the project. It took several revisions, and it was on this project that I cut my soldering teeth.
Here's a mini video tour of the guitar playing a couple songs, sans-synth:
Please send comments to blogger-jack@pearson.onl.