object has to be updated. Object define loudspeakers performs all needed calculations to form a data set that describes the loudspeaker setup, see Fig. 4. It is initialized by specifying the directions of the loudspeakers. It chooses loudspeaker pairs or triplets and calculates an inverse matrix L-1k for all of selected triplets. It outputs the matrices and the loudspeaker numbers of each triplet to all vbap objects. It performs these calculations when it receives a bang message. It can read the loudspeaker configuration as a list and read the loudspeaker triplets as a list. The latter list is used if the user wants to select the triangles by hand. Normally this is not needed. n tion. In 2-D setups the number of panning directions is 7 and in 3-D setups the number is 17, the layouts of directions are presented in Figs. 6 and 7. In these figures the variable 7 presents the largest angle between actual panning direction and the partial panning directions. II Figure 6: Panning directions used in 2-D spreading. The spreading parameter is equal to 7 value used in MDAP. In addition, when the value of the spreading parameter exceeds 70, the gain factors of all loudspeakers are faded in. When the parameter has value 100, the gain factors of all loudspeakers have nearly the same values. Figure 4: The loudspeaker configuration is specified in define loudspeakers object. The first parameter is the dimensionality of the loudspeaker setup, which can be 2 or 3. If the dimensionality is 2, the following entries are the azimuth angles of the loudspeakers. If the dimensionality is 3, following number pairs are (azimuth, elevation) coordinates of the loudspeakers. The loudspeaker directions are presented in order of the loudspeaker channel numbers. The vbap object calculates gain factors depending on specified panning direction and on received loudspeaker setup information, see Fig. 5. It takes as input the loudspeaker setup data from object define_loudspeakers, panning angle as azimuth and elevation parameters, and a parameter that controls spread of the virtual source. When the vbap object receives a bang, it performs calculations of VBAP and MDAP and outputs the gain factors for all loudspeaker channels. Panning direction azi ele Vc I I - I spreading of the virtual source Figure 7: Panning directions used in 3-D spreading. The matrix- object performs the panning process of audio signals. It receives audio signals from MSP object(s) and gain factors from vbap object(s), see Fig. 8. It outputs each audio signal to each loudspeaker channel gained with corresponding gain factor. In Fig. 8 the object Is_ delays is used to delay the loudspeaker signals to compensate different loudspeaker distances. Object dac performs the digital-to-analog conversion. The parameters are the number of inputs, the number of outputs, type of cross fading and the length of cross fade as amount of samples. The cross fade type can be smooth (linear cross fading) or fast (no cross fading). The only MSP object in VBAP implementation is matrixn, it also is the only object that demands significant computational facilities. However, the implementation is computationally efficient. Over 30 virtual sources can be synthesized and panned using one 300 MHz G3 Macintosh at 44100 Hz sample rate. The vbap implementation in MAX/MSP is available at http://www.acoustics.hut.fi/vville/. Related demonstrations also are available at the web server. 3. USING VBAP Before the run time directions of the loudspeakers are measured and entered to object define_loudspeakers. The loudspeakers should be in equal distance from the best listening position. If they are not, the loudspeaker signals should be delayed to compensate the propagation time differences. The level generated by each loudspeaker to the best listening position should be equal. / | l I l el I | l i actual spreading azi ele actual panning direction Figure 5: Object vbap calculates the gain factors of the loudspeakers and sends them to matrixz object. If the specified virtual source direction is outside of the panning directions possible with the current loudspeaker setup, vbap object finds the nearmost triangle and it applies the sound to it. The panning angle to which the sound was actually panned is an outcome of the object. The value of the spread parameter can vary between 0 and 100. When the value is 0, conventional amplitude panning is used. When the value is greater, MDAP is applied. Gain factors are calculated to a number of directions around the desired panning direc
Top of page Top of page