The Walcott visualization integrates a set of rewired christmas lights into the Bemix system. A custom XMMS plugin running on Cocoa Table calculates five 0-255 values based on Fourier transform of the music playing in the lounge. These numbers are wrapped into a 4E Network packet and sent to the serial port to a PIC microcontroller. The PIC parses the packet using BemixOS technology and sets the brightness of each color of light using PWM.
The visualization uses a PIC 18F1220 to decode a 4E Network packet containing six 0-255 values. The packet should look something like:
\ H v (ignored) (ignored) (channel 1) (channel 2) (channel 3) (channel 4) (channel 5) (channel 6) \ E
These values become the duty cycles of six software PWMs running in the main loop of the firmware. The latest version of the firmware is available at svn://bemix.mit.edu/var/svn/repos/visualization/pic.
The PWM outputs are fed into TIP110 power darlingtons through 1K base resistor. The power transistors are connected to a set of modified christmas lights in a common emitter configuration. Each TIP110 drives a string of lights in parallel from the +5V rail of a computer power supply.
The XMMS plugin converts an array of 255 frequency bands into five values that are sent out the serial port. The 255 frequency bands provided by the media player are immediately reduced to a working set of five frequency ranges, A, by taking the maximum value present in each range. A set of relative intensities are calculated from A by normalizing each element to the minimum and maximum of a ten second window trailing the sample. The absolute intensities, A, and the relative intensities, R, are scaled and summed to get the vector X. The relative is needed to keep the lights active during quiet songs. The vector X is multiplied by the matrix M to give the final output. The purpose of M is to allow each light to depend on multiple frequency bands.