Stereo Monitoring of HOA:
Filter:
atk-sc3/Guides (extension) | Libraries > Ambisonic Toolkit > Guides & Tutorials

Stereo Monitoring of HOA
ExtensionExtension

Higher Order Ambisonic (HOA) stereo decoding examples
 

The original architects of the Ambisonic framework designed the system to be hierarchical in terms of workflow and distribution. In other words when creating a work encoded as an Ambisonic soundfield, the creator is making a work for multiple target monitoring arrays, which are to be determined at a later date.

This is one of the most convenient aspects of the Ambisonic technique.

When we are making a work for HOA, we are also making a work for two channel stereo. We do have some different choices as to what kind of stereo that will be. The page reviews two for now.

HOA source, FOA toolset

The FOA toolset includes the classic tools we need to synthesize signals for stereo loudspeaker playback.

To use these, we'll need to exchange Ambisonic formats. We'll choose to use the idiom illustrated here. (We can also use the other)

Virtual stereo microphones

Synthesizing first order stereo microphones is a matrix operation, and is therefore quick and inexpensive. We also have many virtual microphone array choices.

You'll want to review:

This example assumes a signal in the ATK's default HOA form, HOA3. We'll view the task as:

  1. format exchange HOA3 to FOA
  2. decode FOA to stereo

We'll use FoaDecoderMatrix: *newStereo for step 2:

NOTE: The use of FoaProximity requires signal pre-conditioning. See the WARNING here.

Ambisonic UHJ stereo

Ambisonic UHJ is the Ambisonic framework's native choice for stereo mastering and monitoring.

As a kernel operation, synthesis takes more time and a delay is introduced. This delay time depends on the size of the kernel and the blockSize of the Server in use.1

You'll want to review:

As we're assuming a signal in the ATK's default HOA form, HOA3, we'll view the task as:

  1. format exchange HOA3 to FOA
  2. decode FOA to UHJ stereo

We'll use FoaDecoderKernel: *newUHJ for step 2:

After we're done, we should free the decoder kernel:

NOTE: The use of FoaProximity requires signal pre-conditioning. See the WARNING here.

[1] - See this link to review calculation of the delay introduced.