Shared by 2fishy on Instructables:
Raspberry Pi LED Light Schroeder Piano
LED (Light Emitting Diode) and LDR (Light Dependant Resistor, or photoresitor) arrays are used to play musical notes using the Raspberry Pi Pygame MIDI sequencer. There are 15 paris of LED & LDR (12 for a full octave of notes, 1 to go up and octave, 1 to go down and octave, and 1 for menu). When the light between LED and LDR is broken, music is played through the Pygame MIDI sequencer. When the light between the Octave Up or Down LED/LDR is broken, all the other notes are shifted up or down an octave. The Pygame MIDI supports over 75 musical instruments and 128 notes per instrument (10 octaves). The menu key can be used to switch instruments. The Raspberry Pi, breadboard, and speaker are within a 20 inch x 30 inch wooden piano that looks like a miniature … // Read more: original article.