This software was written by Matt Wright to be used in the "Eye On CNMAT" concert seies April 18-20, 1997. The sound spatialization model implemented by this software was designed by Edmund Campion.
There's detailed documentation of the setup for the concert, which I'll summarize here.
The concert used a quardaphonic (4 speaker) sound system. Some of the sound sources had "static" spatialization, meaning that their relative volume through the 4 speakers was constant throughout the concert (and determined by settings on the mixing board). Other sound sources had dynamic spatialization, meaning that their relative volume through the 4 speakers (and hence their apparent location in the room) changed in real-time over the course of the concert.
The actual mixing of 8 sound sources to 4 output channels was done with rack-mount hardware from Level Control Systems (LCS). Control information for this mixing (i.e., the volume control) came from LCS Cue Control software version 2.46 b4 running on a Macintosh, connected via MIDI to the rack-mount hardware.
LCS Cue Control provides an abstraction called "SpaceMaps." We create a SpaceMap by describing the location of our speakers to the software. This defines a 2 dimensional space representing the room as viewed from above. LCS can then place any sound source at any given point in this 2 dimensional space, by controlling the relative level of that sound source in the appropriate speakers. Thus, rather than having to explicitly control the volume of each sound source in each of the speakers, the custom Max software operates on a higher level, controlling the X and Y coordinates of each sound source in the room.
LCS has a MIDI implementation where the first 24 MIDI controllers map to the X position, Y position, and overall volume of the 8 sound sources to be spatialized. (See Appendix C of their manual.) So the output from my Max patches is in the form of these MIDI continuous controllers.
We connected Max to LCS Cue Control on the same Macintosh via OMS's "IAC" bus.
The inputs to the Max patches are 8 MIDI continuous controllers for the 8 parameters of the spatialization model, controlled by a J.L. Cooper Fadermaster box. These inputs will be described below.
The basic model of the spatialization software is that there are 6 sound sources rotating around a rectangle. The maximum size of the rectangle is the entire room, i.e., the square defined by the location of the 4 speakers. The rectangle's size and position in the room are characterized by 4 variables:
When the height is at its maximum, the Y offset is meaningless; likewise when the width is maximum the X offset is meaningless.
The speed of rotation is another variable, and can be positive (counterclockwise) or negative (clockwise). The max patch has a table that maps the slider range 0-127 into rotation speeds.
The 6 sound sources are arranged around the outside of the rectangle according to a "spread" factor. When the spread is 0, all 6 sound sources are at the same point somewhere around the rectangle. When the spread is at its maximum, the 6 sound sources are maximally far from each other around the rectangle. The spread can have any value between these two extremes.
The spread is "around" sound source number 3, meaning that the position of sound source 3 doesn't change when the spread factor changes. For smaller spreads, sound sources 1 and 2 move clockwise towards 3, and sources 4, 5, and 6 move counterclockwise towards 3. This was an arbitrary decision.
In order to reset the angular positions of the sound sources to a known position, there's a parameter that explicitly sets the position of sound source #3, and resets all the other positions as a function of 3's position and the spread factor. Circular motion based on the speed factor then continues from the given location.
The last parameter is master volume, the overall gain of all 6 sound sources.
There are 8 control parameters to the sound spatialization control processes:
These 8 variables are what Matt controlled from the Fadermaster at the center of the audience.
Here are some example settings of these parameters.
At the start of the concert we played a CD of Bill Frisell, rotating slowly around the room:
The initial spatialization settings for Campion's piece put all the sound at the front of the room:
The "maximum" spatialization effect used in Campion's piece at moments of extreme loudness and noisyness was to spin all the sound around the room quickly:
Start with some amount of motion around a rectangle, and set the X and Y offsets to the position of the desired point. Gradually fade the height and width to zero and all the sound source will converge on that point.
If you're inside the CNMAT domain, you can click here for a Stuffit archive with all the Max patches for this software, plus the OMS setup and the data files for the LCS software for the concert.