At the heart of this project is the computer. The computer is connected to
a variety of other devices. Live video is input, microphones are connected,
and our custom laser/receptor sets are also connected. The computer
processes all of this data via our custom software, outputting live video
and processed and/or prerecorded sound.
The software used for this project was created by Luke Dubois and Karl Ward
using the Max/MSP
programming environment on the Macintosh
platform. The software currently runs on an Apple G4 desktop computer.
The software can be best understood by analyzing the different subsystems
within the body of software we've constructed for this project.
- Gathering sound from the performance -
The software continually receives sound from the microphones on the
performers. It stores the sound in a five second sound buffer, which
we'll call the analysis buffer. When the analysis buffer is full
(i.e. when five seconds have elapsed), the buffer is analyzed for the
loudest point in the five seconds of sound. The loudest point (based on
RMS amplitude, not absolute amplitude) is determined, and the software
extracts that loudest sound and stores it in one of six sound buffers.
The six storage buffers are arranged in a last-in-first-out (LIFO) data
structure, so when all six buffers are full, the oldest buffer is
overwritten. Also, the analysis buffer is cleared after the analysis is
done, to make way for the next five seconds of sound.
- Placing sounds into rhythmic patterns -
Once the loudest sounds from the successive five second analysis buffers
have been stored in the storage buffers, the software places them into
rhythmic patterns. The rhythmic patterns can be determined in a number of
ways. First, rhythmic patterns can be pre-programmed by supplying the
software with a text file containing instructions for which sounds to play
on which beats of the pattern. Also, the computer can create a pattern at
random. For instance, the computer can pick two random numbers (one for
the buffer number and the other for the beat number), and then assign that
buffer to that beat. Also, we have created an algorithm which, during the
analysis stage, calculates the beat on which loudest sound occurred, and
then places the sound on that beat. This allows the dancers direct
control over the rhythmic pattern itself.
- Gathering data from the laser/receptor hardware -
Please read the section on our custom
laser/receptor sets before reading this description.
The receptors are connected to Douglas Repetto's customized Peavey MIDI
slider box. From that box they are connected via USB to the computer,
which receives their data using MIDI. Our software sees a stream of
numbers coming from each receptor. These numbers correspond to the amount
of light hitting the photocell inside each receptor; high numbers (like
100) mean more light, low numbers (like 0) mean less (or no) light. The
software is written to detect when the value for a receptor falls below a
certain threshold. Whenever that happens, it indicates that something has
passed between the laser and the receptor, thus breaking the beam of light
cast across the stage by the laser. When the value for a receptor returns
to a state above the threshold value, it indicates that the laser is
hitting the receptor, which means that whatever was blocking the laser is
no longer doing so.
- Using data from the laser/receptor hardware -
The state of the laser/receptor sets, determined as stated above, is used
in a variety of ways. The simplest way to use the laser/receptor sets is
to "attach" each receptor to a sound file, which is played whenever the
laser beam is broken. Or, breaking the beam can be used to unmute an
already playing sound, so that the sound is only heard when the beam is
broken. Also, rather than just use the state of a beam to trigger events,
the frequency of changes in the beam's state can be used to affect
parameters of the sound, music, or video. For example, when many beams
are being broken more than two times in a given period of time, this could
trigger compositional changes in the video, such as a shift between live
video and prerecorded video.
- Generating and converging multiple tempos -
One section of the piece required the convergence of multiple distinct
tempos. This section introduces three distinct tempos, which at first
have no correlation. The software calculates the average tempo from these
three tempos, and then slowly increments each toward that average.
Eventually, these tempos are adjusted enough that they all converge to the
average tempo.