The Lumozel is a proof-of-concept musical instrument, based on a model of optical sensing. The basic idea is that the device looks at areas of space and uses obstacles present to determine which notes to play. In this manner, virtual 'strings' can be played with the hands, and the information can be interpreted as musical pitches. In actual use, the player hovers their hands above a chassis; notes are triggered by interrupting laser beams with the hands.
I've always liked alternative methods of creating music, especially electronic equipment-based instruments. The main motivation for the project was to fulfill the requirements of my high school's Senior Project, an arduous task requiring a time commitment of more than 50 hours, a live presentation to a large audience, and full documentation. Additionally, the project served as a great way to learn the Processing software environment and play with lasers.
The hardware design is intended to be modular to a certain extent, in order to allow for easy expansion/modification. Thus, the basic unit of interaction is a 'beam', which is really two things: an infrared rangefinder and a laser/photodiode pair. The rangefinder provides reasonably accurate distance measurements from the end of the chassis to the hand of the player, and the laser/photodiode pair allows for very accurate (in the time domain) detection. Thus, the rangefinder, having a rather diffuse cone of detection, begins to acquire a distance before the beam is broken, increasing the accuracy. In my build, I used two beams. The rangefinders and photodiodes are polled by an Arduino microcontroller running Firmata, a firmware that allows the software environment Processing (running on a computer) to directly query the sensors. Were I to redesign this, I would instead write custom firmware on the Arduino, as the latency across a USB-serial connection proved to be irritating. Additionally, the serial drivers necessary for communication between a computer and an Arduino running Firmata are difficult to deal with. The Processing sketch allows the user to configure each beam as desired, with many options that define the way in which the beam data is converted to MIDI note data.