This project uses a Freeduino (Arduino clone) microcontroller
The basic idea here is to create some laser patterns that are in sync with music (or any audio) input.
The patterns, called Lissajous Figures, are generated using a laser and 2 motors with mirrors attached to them. (The laser source can be a cheap laser pointer.) The laser bounces off one mirror, then on to the the next before being projected on a flat surface. The Arduino board controls the speed and direction of rotation of the motors, and by varying these, various patterns can be created.
Syncing with Audio
To make the lasers dance with the music, the rotation of the motors needs to match the music somehow. Here it is done by analyzing the frequency content of the audio stream and converting that into motor speed/direction information. To split the audio into frequency components, we use the Discrete Fourier Transform. We use Python to do this job, and send the motor speed/direction information via the serial interface to the Arduino, which updates the motors.
The source for both the Arduino and the Python code can be found here.