Clearly there's no magic here -- this scheme isn't going to let you play
third-order recordings  on a cube or something as irregular as The Morning
Line.  As Fons has pointed out on the Linux audio list, decoder design for
irregular arrays is still a bit of a black art.  Even if there were a
definition of optimal we could all agree upon, I wouldn't claim that AllRAD
produces optimal decoders.  An interesting example to study is the
trirectangle, as we do know how to make optimal decoders for that, so any
deviation shows the compromises in the AllRAD approach.  I can post some
performance graphs if anyone would like to see them.

It does offer a deterministic solution for some speaker configurations that
are difficult to handle with conventional techniques, specifically
partial-coverage rigs, like a dome, which seem to be a fairy common
configuration, and it produces useable decoders quickly.

The AllRAD decoder we did for the 24-speaker dome at Bing Concert Hall
needed no manual tuning and the improvement over the previous (hand-tuned!)
decoder I'd designed was immediately obvious to everyone.  Bing is a fairly
reverberant hall, so perhaps some artifacts were masked, but we also did
some careful full-sphere and upper-hemisphere decoder comparisons in
CCRMA's listening room, which is pretty dead, with quite favorable results.

One nice feature is that it gives you a easy-to-understand way to control
the reproduction of sources that are from directions where you don't have
adequate coverage.  This is essentially the same problem as doing something
reasonable to play material with overhead sources, say an airplane flyover,
on a horizontal array.

Frankly, I was skeptical too, as it takes just a bit of math to see that
VBAP interpolation is not correct for Ambisonics. However, once you start
designing decoders for irregular arrays, you have to trade off uniform
energy (loudness) for correct angular direction. Numerical optimization
schemes let you make those trade offs explicitly by adjusting the weights
in the objective function, but my experience is that it gets unwieldy once
you have more than a 100 or so variables; for reference, a 3rd-order
decoder for a 24-speaker array has 384 variables per frequency band.  One
approach we mention in our LAC2012 paper is to optimize each order
successively, freezing lower orders as you go, except for an overall gain.
We found that that tends to create decoders that have a lower average rE
than optimizing all orders simultaneously, but it makes the process quicker
and more tractable.

In contrast, AllRAD starts with uniform energy distribution and tries to
preserve that by using a much larger number of virtual loudspeakers than
real ones, so that the signals for each triangle of speakers are derived
from 10  to 20 virtual speakers.

I did take a detailed look at rE in third-order AllRAD decoders.  Over
regions with adequate loudspeaker coverage, maximum angular errors tend to
be a bit larger than the decoders produced by my optimizer when angular
accuracy is favored (~5-7 vs 1 degree), but I get good-sounding decoders
for large arrays in a few seconds vs a few hours.  I'd like to think that
these decoders would be a good starting point for the optimizer, but
haven't experimented with that yet.

I also spent some time trying understand why variations in magnitude and
direction of rE are not symmetric despite symmetric speaker arrays, and
finally realized that it is because the triangulation of the convex hull is
not necessarily symmetric.

One aspect of the manual tuning that Dave and Fons allude to is what to do
when there are large gaps in coverage of the speaker array, such as the
bottom of a dome, or a missing speaker from the 5th-order 12-speaker ring
Fons mentions.  Conventional advice is don't use arrays like that for
ambisonic playback, but often that is not an option, as placement of
loudspeakers is typically constrained by architecture, rigging, aesthetics,
time, budget, especially in temporary arrays, such as those CCRMA installs
at Bing or in their courtyard.

The solution Zotter proposes is to insert imaginary loudspeakers into the
array to fill large gaps.  There are a couple of things one can do with the
signals intended for those imaginary speakers: decorrelate and mix into the
other speakers or simply discard.  My toolbox currently does the latter so
it can produce presets for AmbDec, but it would not be difficult to
implement the former with a different decoding engine.

When used with a dome, the effect is that as a signal is panned down in
elevation, it sticks at the equator and then fades out. Adjusting the
placement of the imaginary speaker controls how quickly it fades, close to
the center gives quick fades, farther down slower ones.

Finally, lots of people seem to have thought about or tried hybrid
ambi/vbap schemes (even me -- the other day I stumbled across a long
forgotten email to Eric Benjamin where I described such a scheme).   Zotter
and colleagues at IEM get credit for publishing a succinct description of
what they did and the results of their analysis.

If you don't want to download and install a couple thousand lines of MATLAB
code, spend me some speaker coordinates in a CSV file and I'll send you
some decoders to try out.  My only request is that they be for real arrays
you have access to (vs. pathological examples), so you can listen and
report back on what you hear.

Aaron Heller (hel...@ai.sri.com)
Menlo Park, CA  US
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<https://mail.music.vt.edu/mailman/private/sursound/attachments/20130423/2df0a9dd/attachment.html>
_______________________________________________
Sursound mailing list
Sursound@music.vt.edu
https://mail.music.vt.edu/mailman/listinfo/sursound

Reply via email to