you move your hand in the beam.
That’s it. Swap MIDI-OX for a soft-synth, or plug
the MIDI jack into a hardware synthesizer, and
Now we’ll expand on the theremin idea and create
a 6-beam laser harp.
1. Build the frame. I made a wooden base to hold
the lasers, rangefinders, and circuitry. Two metal
tubes at either end support a top tube, which has
6 holes drilled through its underside to expose the
photosensors. Space the lasers at least 4" apart,
or else cross-talk between the range sensors can
throw off their readings.
the MIDI note numbers 60, 62, 64, 65, 67, and 69
to the beams, but you can change this by editing
the notearray structure. The controller messages
from the range sensors are sent as note 74. With
my synthesizer, this changes the filter sweep and
creates a funky, retro synth sound.
You can also try MAKE_HARP1_VEL.PDE, a modified
version of the code that maps your hand position to
MIDI velocity, to mimic how hard you would strike a
key on a keyboard.
2. Wire the other lasers and photosensor/detector/
rangefinder loops in parallel with the first ones; see
the schematic online. For neatness on the detector
board, I used 8-pin headers for the photosensor and
Also check that the variable regulator can handle
the current drawn by the lasers: multiply the lasers’
amperage by 6, and confirm that it’s below the voltage regulator’s rated max current. To make sure, you
can also measure the current that comes into the
regulator (Figure H).
3. Instead of messing with alligator clips, I made
connector plugs for the laser pointers. I cut a slot in
the back of each with a Dremel tool, made a wood
plug to fit into the barrel, and thumbtacked a wire
to each end (Figure I). Insert the plug, pass the
wires through the slot, and screw on the back. The
case contact in back will be ground. To keep the
lasers switched on if the screws slip, wrap the barrels with electrical tape.
You’re not limited to just playing notes. Ableton Live
software allows you to MIDI-trigger drum loops,
sequences, and other musical events. It’s not free,
but you can download a demo version at ableton.com.
If you want to go crazy and add more beams,
you’ll need to expand the digital and analog inputs
of the Arduino using a multiplexer. There are a
couple of neat, off-the-shelf ways to do this. I’ll mention two here, and you can find more at the Arduino
Playground ( arduino.cc/playground).
One approach is to use an analog multiplexer
like the R4 AIN MIDIbox module, which is based
on the 4051 chip (kit available from AVI Showtech,
avishowtech.com). This will support 32 inputs, for
32 harp strings.
With some clever programming, you should be
able to bypass the detector board and read the
laser harp through the analog multiplexer. To do
this, connect the photocell array’s outputs to the
multiplexer’s inputs, feed the multiplexed output
to the Arduino, and detect which beams are broken
in your software.
You can also use a digital multiplexer like the R5
DIN Module, another MIDIbox kit from AVI Showtech, which is based on the 74HC165 chip. With
these, you can chain modules together to support
an unlimited number of inputs.
If you want to tackle a full-sized scanning laser
harp (Figure J), visit my website, stephenhobley.com.
4. Connect the detector outputs from the op-amps
to Arduino pins 2–7 and connect the range sensor
outputs to the Arduino’s analog input pins 0– 5.
Adjust the potentiometer until all 6 LEDs come on. For project code, schematics, and further
You should now be able to turn them off individually development resources, visit makezine.com/
by breaking the 6 beams. If ambient light becomes 15/laserharp.
a problem, cut rings of narrow PVC pipe, paint them
black, and attach one around each detector. If the Acknowledgment: This project is a testament to the
lasers just miss the photosensor holes, glue on collaborative power of the internet. I could not have
tumbled rocks as diffusers. done it without the help of many people who were
good enough to answer the questions I posted on a
variety of forums. I’d like to take this opportunity to
pass on my gratitude!
5. Upload the program MAKE_HARP1_CTRL.PDE to
the Arduino, and start playing. The software assigns