NewsWorksSoftwareTextBioContact
background image

How to decoder ambisonics

December 30, 2005

The quest for decoding ambisonics continues…

I mailed Natasha Barrett to ask what she is doing she is the leading expert at ambisonics in Norway. At some stage she will be doing a 3 day workshop on ambisonics at NoTAM. I’ve signed up for it.

Natasha recommends the encoding/decoding VSTs by Dave Malham and Ambrose Field as well as the Panorama and Emigrator plug-ins. Due to channel routing issues they should be used in MaxMSP Bidule or simular. I know that Alessandro Fogar used Emigrator for Soundframes. Natasha herself tends to use Vspace and Ambidec under LINUX. I have Agnula running at my PC but haven’t had the time to really start figuring out how to use Linux so far. I suppose this is another good reason for get going at it…

So far I’ve always tried to use B-format in fairly non-standard speaker setups. I suppose I should mount some standard speaker rigs in order to test ambisonics in more well established setups as well where it hopefully is easier to get it to excell. But the problems of the vst plugins mentioned above still reimain that the number of loudspeakers are limited (8 and 12 respectively) and they only work for certain standardized setups. I also want to be able to decode for less symmetric setups with up to at least 18 speakers.

I’ve also posted some questions to the Sursound list and got some useful replies back:

In general the coefficients of the decoding matrix are calculated thus:

P(a e) = zerobase * W
        + firstbase * ( cos(a) * cos(e) * X + sin(a) *cos(e) * Y + sin(e) * Z )

In the case of “matching” 1st order coefficients as given by Furse the following base is used:

  • zerobase: sqrt(2)/n
  • firstbase: 2/n

where n is the number of loudspeakers. For 1st order controlled opposite the base is:

  • zerobase: sqrt(2)/n
  • firstbase: 1/n

In both of the above the base is inverse proportional to the number of speakers. This will keep overall volume consistent but in the digital domain the volume of each channel will get lower as more channels are added. The disadvantage of this is that the unused headroom will increase as more speakers are used and reduce the signal to noise ratio. It would be better to keep the signals hot and instead turn down volume at the amplifier. That way the best possible fidelity is maintained.

According to jasch Dave Malham did empiric experimentation in Zurich a while ago with a 8 speaker setup and ended up with a fixed base:

  • zerobase = 0.823242
  • firstbase = 1.0

The ratio of this base is somewhere between “matched” and “controlled opposites”. I asked if there are any strict criteria concerning what values to use for zerobase/firstbase or if I have to experiment with various values from one setup to the next in order to find the best one for the setup at hand. Dave Malham replied:

There are ways of optimising for particular layouts some of which are very
powerful like Bruce’s (Bruce Wiggins) but I would only ever use these as a starting point
in practical room since local acoustics will almost certainly cause
deviations from the theoretically.

Surfing the net I’ve had the impression that more advanced decoders also would implement shelf filters so that the base would differ for low and high frequencies. Again according to Dave Malham you would “only really use these for small rigs where you only need to have a small sweet spot”. How small is “small”? Should I consider a gallery space of 8×8 meters “small”?

I’ve also had the impression that more advanced decoders would take into account 90 degrees phase offsets of some of the B-format components probably implemented using a hilbert filter. Once more according to Dave there are no 90 degrees phase offsets in B format only in UHJ so I
don’t need to worry about this. Good! Some CPU cycles saved…

 

…consider this an open thread.