Ambisonic Format Exchange:
Filter:
atk-sc3/Guides (extension) | Libraries > Ambisonic Toolkit > Guides & Tutorials

Ambisonic Format Exchange
ExtensionExtension

Ambisonic format exchange examples
 

To manage workflows within the ATK, and facilitate the integration of third party toolsets and exchange of Ambisonic signals, it is critical to understand Ambisonic encoding formats.

On this page we'll present a few examples of exchanging between signal sets, beginning with the two equivalent forms described earlier.

What we'll see is that the chosen practical implementation depends upon how we imagine the format exchange. Exchange can be seen as decoding to one signal set from another, or encoding from one to the other. How we view this exchange informs what tools we will choose to use.

For successful exchange, we need to match Ambisonic:

FOA source, HOA target

An FOA signal set can be directly exchanged to become an HOA set. Here we'll review FOA and HOA1.

Two different, but equivalent forms are expressed here. In choosing which form to use, the idiom is to be clear as to what we view the primary signal set to be.

NOTE: The question to ask: Are we working in FOA or HOA1?

decode FOA to HOA1

FOA and HOA1 are both first order signal sets, so we know this aspect is already matched.

We can check the others:

Or, lump ordering and normalisation into the format keyword:

Viewed as decoding FOA to HOA1, we'll use the FOA toolset to target HOA1.

The tools for the task are:

The steps are:

  1. reset FOA reference radius from inf to 1.5 meters
  2. decode FOA to HOA1

encode HOA1 from FOA

Viewed as encoding HOA1 from FOA, we'll use the HOA toolset.

Framed in this way, the tools for the task are:

The steps are:

  1. encode HOA1 from FOA
  2. reset HOA1 reference radius from inf to 1.5 meters

NOTE: A more verbose equivalent can be found here.

HOA source, FOA target

A common workflow task is to return an FOA deliverable from a higher order signal set.

As part of this exchange, we'll truncate the harmonics of the HOA set, which is lowpass filtering in the spatial domain. Doing so reduces the spatial sampling rate and is equivalant applying the Nyquist anti-aliasing filters required in time domain downsampling.

From the beginning, the Ambisonic framework has been designed to be hierarchical in terms of spatial resolution and distribution. That is to say, spatial downsampling is part of the underlying theory and architecture.

Let's see how to express moving from the ATK's default higher order set, HOA3, and the ATK's default first order set.

NOTE: The question to ask: Are we working in FOA or HOA3?

decode HOA3 to FOA

Viewed as decoding HOA3 to FOA, we'll use the HOA3 toolset to target FOA.

The tools for the task are:

And the steps:

  1. truncate HOA3 to HOA1
  2. reset HOA1 reference radius from 1.5 to 10.0 meters1
  3. decode HOA1 to FOA

NOTE: A more verbose equivalent can be found here.

encode FOA from HOA3

Viewed as encoding FOA from HOA3, we'll use the FOA toolset to target HOA3.

The tools for the task are:

And the steps:

  1. truncate HOA3 to HOA1
  2. encode FOA from HOA1
  3. reset FOA reference radius from 1.5 to inf2
NOTE: The use of FoaProximity requires signal pre-conditioning. See the WARNING here.

SC-HOA

Given a matched order, when we review the encoding format of the SC-HOA library, we see that the only aspect requiring exchange is the reference radius.

The tool for the task is:

decode HOA7 to SC-HOA5

We will decode to the SC-HOA library signal set if we'd like to use the tools found there.

Let's consider an HOA7 signal. At the time of this writing, the highest Ambisonic order supported by the SC-HOA library is fifth order, so for successful exchange, an HOA7 signal will requiare spatial downsampling.

If you haven't already, see the discussion on truncation, above.

The steps are:

  1. truncate HOA7 to HOA5
  2. reset HOA5 reference radius from 1.5 to 1.07 meters

Here's an example:

encode HOA5 from SC-HOA5

Encoding from the SC-HOA library signal set is even more simple.

All we need to do is:

  1. reset SC-HOA5 reference radius from 1.07 to 1.5 meters

AmbiX

In the modern age of Ambisonics, AmbiX is the encoding format most commonly found.

To successfully exchange Ambisonic signals we'll need to match Ambisonic order, along with:

decode HOA3 to AmbiX3

If we're planning to use an AmbiX toolset for further processing, we'll need to decode to AmbiX.

Let's consider an HOA3 signal, with is the ATK's default for HOA:

The tools for the task are:

The steps are:

  1. reset HOA3 reference radius from 1.5 to 10.0 meters4
  2. decode HOA3 to AmbiX3
NOTE: You'll see we're able to omit the order argument, as HOA3 is the ATK's default order for HOA encoding.

Here's an example:

encode HOA3 from Ambix3

If given an Ambix encoded signal, we'll need to encode from AmbiX to HOA.

Let's consider a third order AmbiX signal, which corresponds with the ATK's default HOA order:

The tools for the task are:

The steps are:

  1. encode AmbiX3 to HOA3
  2. reset HOA3 reference radius from 10.0 to 1.5 meters5
NOTE: As with decoding HOA3 to AmbiX3, you'll see we're able to omit the order argument.

Here's an example:

[1] - HoaNFProx is theoretically the correct tool to use to reset the reference radius to inf. In the above illustrated algorithm we've substituted 10.0, instead. This is often regarded as "near enough", and can help avoid overflow.
NOTE: See the WARNING here.

If we do wish to use HoaNFProx: *ar, the HOA1 signal should be pre-conditioned with a highpass filter to prevent overflow and excessive bass boost.

Here's an example:

[2] - If we wish to avoid using HPF to precondition the FOA formatted signal, we can use FoaNFC to precondition instead. FoaNFC followed by FoaProximity is equivalent to the use of HoaNFProx: *ar in the HOA toolset.

Here's an example:

[3] - Because of the use of AmbiX encoded soundfield microphones, we can assume the reference radius in use matches that of classic Ambisonics, i.e., inf.
[5] - We could use HoaNFDist to set the reference radius to inf. However, if we're planning to go back and forth between the ATK and other AmbiX toolsets, using HoaNFCtrl is a better choice.