Sheet Music to MIDI Converter

Learning to read sheet music is a challenge for new musicians, so a group of Cornell students decided to make a robot do it instead. For their final project, they built a robotic sheet music reader (link warning: this page seems to automatically start a .mov file download when loaded).

As an input, the robot takes a piano roll. This is a long strip of paper with music printed on it, which can easily be fed through the reader. A rotational servo keeps the strip feeding at a constant speed, and passes it through the reader.

The reader is based on a Melexis MLX75306 linear optical array. This IC is a 142 x 1 array of photodiodes, which is designed for fuel quality sensing in cars. In this project, it’s been repurposed as a camera to read the music as it passes by. An array of LEDs illuminates the piano roll, providing a more accurate reading.

The components are connected to an Atmel ATmega1284P, which does all the required control and processing. It creates a MIDI output of the piano roll, which can be connected to any hardware or software synthesizer.

Digitizing player piano rolls

What do you do with 100 player piano rolls but no player piano? You come up with a way to digitize the information for MIDI playback. The rolls have 90 columns worth of holes, 88 for the keys and two more for pedals. Voids in the paper cause a note or pedal to be played, so an optical sensor can be used to transform the analog data into digital information. Simple enough, you’ll just need 90 sensors. But this brings up quite an alignment issue. The solution is to use fiber optic cable to position the IR light source in a hand-made 0.2″ spaced jig. At least the spacing meshes nicely with standard 0.1″ protoboard, which is what was used for mounting the sensors.

[Thanks Mike]