Multiplexing with 64 LED light sensor inputs

Hey, so I'm pretty new to Arduino, and this is my first forum post. A long time ago I was shown a YouTube video of this guy who had made a "laser harp" where if you broke the stream of a laser with your hand, it would register that and make a sound. I want to supersize this project, making essentially a table (imagine a hollow coffee table with lasers running through it) of 64 lasers and sensors. (It came to that happy number because, since I am a pianist, I decided to make the "strings" 3/4 inch apart, and the table 4' long) I didn't know exactly where to post this, so I decided to break it up into a few different topics. The first and most pressing concern for me is this: How am I going to use 64 inputs, and what hardware do I need to do that? I want to use the method described here: http://playground.arduino.cc//Learning/LEDSensor to make light sensors, so I need to do that for 64 LEDs. How do I go about this? What hardware do I need? Boards, breadboxes? Thanks, James D.

An LED makes a poor light sensor and takes a long time to read. If you want to have sensors that are responsive you should use something designed for light sensing. Something like a photodiode or phototransistor.

In another thread you've indicated that you intend to use 650nm red laser diodes for the strings. That means you need a photodetector that will respond well at 650nm. It should have a narrow field of view so that it doesn't pick up too much room lighting or light scattered from other strings. I suggest this: http://uk.farnell.com/vishay/bpw17n/phototransistor-t3-4/dp/1045523.

You'll need to read all 64 strings often enough so that there is no appreciable delay. Maybe every 20ms would be often enough. That gives you about 300us to read each string. So you have enough time to use either analog or digital reads to read the phototransistors. With a laser shining directly on a narrow-angle phototransistor, you should get a nice clean digital signal when you break the beam, all you need to do is experiment to find a suitable value of pullup resistor. So I would read them as digital inputs.

To read all 64 inputs, you can use eight 74HC151 or CD4051 8-input multiplexers connected to 8 digital inputs (the CD4051 also allows you to read them through analog inputs) and 3 digital outputs.

dc42: To read all 64 inputs, you can use eight 74HC151 or CD4051 8-input multiplexers connected to 8 digital inputs (the CD4051 also allows you to read them through analog inputs) and 3 digital outputs.

He doesn't say which Arduino he's using, but a Uno has only 6 analog inputs! Instead he could use four 74HC4067 16-input multiplexers connected to 4 digital inputs (also readable as analog inputs) and 4 digial outputs.