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