A guitar which outputs sheet musicm tablature, and MIDI note information as you play it. Implemented on a Cypress PSoC embedded system.
This project was for 6.UAP, MIT’s version of a senior capstone project. The goal was to modify a guitar such that it outputs sheet music of notes as you play them, and also output MIDI information such that the guitar could act as a synthesizer controller. Such a thing exists, but at the time of this project they are prohibitively expensive. The idea came from the realization that a guitar fingerboard is laid out in a way that resembles a standard keyboard matrix:
A keyboard matrix can be thought of as a grid of horizontal and vertical wires. At each intersection of the wire is a button, which when pressed shorts the row and the column. In this configuration a microcontroller “scans” through columns, briefly applying a voltage to each one while simultaneously sensing voltages on the rows. If a button is pressed, a row and column are shorted and the microcontroller can infer which key is pressed based on the combination of row/column. A guitar can be thought of in a similar way, where the rows and columns are the metal frets and the metal wires. In this implementation, a conductive metal pick is used which is connected to logic “high”. Every time a string is picked, that string goes to logic high and if a note is fretted, that fret also goes high. This information can be combined to uniquely determine note information. It works for producing tablature without detecting note duration because standard guitar tablature doesn’t convey note duration. In addition, even if a guitar is strummed the pick is only ever contacting one string at a time, so there is no ambiguity in which string is being pressed.
There were a few “gotchas” in this project. For example, when a note is bring fretted the string is contacting multiple frets at once, so multiple frets would return logic high. In addition, if multiple strings are fretted on the same fret and one of the strings is picked, the strings are shorted through the fret and there is ambiguity as to which string has been picked. Features in the code were used to overcome these cases.
In addition, while guitar tablature doesn’t require note duration information, MIDI output does. This feature was added by the addition of a voltage sensing coil on each string (similar to those used on the self-tuning guitar, see above) and simple threshold detection to define a note “off” event.
See here for PSoC design files (PSoC creator software needed)