Regarding the 220a project side of this project, the idea was to use ChucK to sonify 3D sounds at will. In order to achieve this objective, Kapil and I spend some ours measuring the speaker position on the Listening Room and developing a model that could map sounds on a 3D space. To achieve that, we developed a class (Map16chan) that can be use by our programs or by ohters to place sounds in space.
The second step was the usage of OSC messages to control the position of the sounds in space. In my case, the OSC messges are sent from a C++ program (that also displays those objects in space using OpenGL). This messages are received by a chuckl program, associated to a sound. Finally that sound is placed in space.
The idea is really simple. We assume that all the speakers are in the surface of a sphere, so each of them can be placed in 3d using 3 coords (cartesian or polar), but with the restriction that r is constant or, equivalently, that sqrt(x^2+y^2+z^2) is constant. Then, using projections onto those vectors, a sound can be placed on the surface of that sphere. To give the sensation of distance from the center, the distance from the source of sound to the hearing point controls the radius of the sphere. Therefore, distant sources will be placed in the surface of a larger sphere and close soudns will be placed on a smaller sphere (ie, the speaker will have a larger gain).
The Map16chan receives any UGen as input and connect it to 16 Speaker objects. Each Speaker object is connected to the corresponding channel of the DAC through a Gain object. Why the Gain object if is possible to control the gain of the channel itself? The reason is that there will be multiple sources of sound (multiple hikers simultaneously), and each of them is in a different location in space, so they need independant control over tha gains of the actual speakers. The Gains between the sound and the DAC allow to have multiple independant sources of sound in different points in the 3D space.
The code is available through svn:
svn co svn+ssh://ccrma-gate.stanford.edu/user/j/jorgeh/svn-reps/courses/256/project/220project
These are the vectors used to place the speakers on space (all values in inches).
The sound is generated using trains of impulses passed through a reverb and a delay. Different parameters of the sound are controlled by properties of the hiker. For example, beside controlling the altitude of the sound, the Z coordinate also controls the period of the impulse train. Therefore, different lanscapes will produce different "soundscapes". The color and size of the hikers controls the mix of the reverb and the delay time.
Due to lack of time, I couldn't make more sounds for the different hikers, but the idea is to use more instruments.