The binaural spatializer (single source, 32 kHz sampling rate) runs in realtime on an SGI Indigo workstation. Source position can be controlled using a MIDI (Musical Instrument Digital Interface) controller that has a set of sliders which are assigned to control azimuth, elevation, and distance (gain). A constant amount of reverberation can be mixed into the final output using an external reverberator as shown in figure 10.
The spatializer was evaluated using headphones (AKG-K240, which are diffuse-field equalized [23, 18]). The input sound, usually music or sound effects, was taken from one channel of a compact disc player. The spatializer worked quite well for lateral and rear directions for all listeners. As expected, some listeners had problems with front-back reversals. Elevation control off the medial plane was also good, though this varied considerably among listeners. All listeners experienced poor externalization of frontal sounds. At zero degrees elevation, as the source was panned across the front, the perception was always of the source moving through the head between the ears, or sometimes over the top of the head. Externalization was far better at lateral and rear azimuths. Adding reverberation did improve the realism of the distance control, but did not fix the problem of frontal externalization. Clearly a problem of using non-individualized HRTFs with headphones is the difficulty of externalizing frontal sources.
In order to increase the number of sources, or to add integral reverberation, the performance of the spatializer would need to be improved. Several things could be done:
Many of these strategies are discussed in . To obtain the best price to performance ratio, commercial spatializers attempt to be as efficient as possible, and usually run on dedicated DSPs. Consequently, the filters are modeled as efficiently as possible and the algorithms are hand-coded. In addition, there are usually serious memory constraints which prevent having a large database of HRTFs, and thus parameterization and interpolation of HRTFs is an important issue. Lack of memory is not a problem in our implementation.