< Back to IRCAM Forum

Re-encode multichannel recordings to HOA

What would be a good strategy to re-encode multichannel recordings to ambisonics B-format, and then to binaural?

The use-cases are:

  1. decode Eigenmike recordings
  2. re-encode recordings of the direct-to-speaker output of spat (from 4th order HOA decoding) to be listened to in a different LSP setup or binaurally

For 1. I have found the mh-acoustics plugins, but would like to know how this can work in spat/panoramix.
For 2., which seems to be the common practice, I wonder if recording directly to B-format could be advantageous.

I’m looking for pointers and solutions in spat, panoramix, and possibly Reaper for offline processing. Thanks!

While writing this question, the web site proposed related questions, which indeed give some helpful pointers:

  • for HOA to binaural transcoding this answer recommends:

    #3 using HOA encoding and HOA-to-binaural transcoding i.e. [spat5.hoa.encoder~]+[spat5.hoa.binaural~] or [spat5.spat~ @initwith “/panning/type hoa”]+[spat5.hoa.binaural~]

  • for offline en/de/re/transcoding, this post mentions the command line versions of the spat5 externals, so the above could possibly be done like this:
    Packages/spat5/media/tools/spat5.hoa.binaural~ -i infile -o outfile -p settingsfile
    
    I just wonder which settings would need to be put in the preset file, and which could be left as default.

Regarding the reencoding of LSP output to HOA (4th order), could an approach using virtual microphones work?

Hi Diemo,

  1. Regarding Eigenmike recordings : they first need to be encoded to HOA.
    This can be done using MH-acoustics tools.
    Or using [spat5.hoa.em32~] or [spat5.hoa.em64~] (depending on which EM flavour you recorded).
    [spat5.hoa.em32~] and [spat5.hoa.em64~] are available as objects in Max (for real-time use) or as command-line executables (for offline use).

For command line executable, the “-p” option can be a preset file (txt file containing OSC commands), or list of comma-separated OSC commands. Example:
./spat5.hoa.em32~ -i input.wav -o output.wav -p “/order 4, /norm N3D, /mode method3, /compensation 1”

The comma-separated OSC messages are similar to OSC messages you can send in Max.
Their default values are the same as the corresponding [spat5.hoa.em32~] Max object
(and that you can observe in the “status” window).

I just wonder which settings would need to be put in the preset file, and which could be left as default.

Just as in Max. For the sake of clarity, I would recommend to explicitly specify /order and /norm. Others can be left as default.

Once your EM32 or EM64 content is encoded into HOA, then [spat5.hoa.binaural~] can be used for binauralization (converting HOA to binaural, with various methods available – the default method, namely magLS, being our recommandation).
[spat5.hoa.binaural~] is also available in Max and command line.

Hope this helps.
(More later regarding LSP re-encoding)

T.

  1. As for re-encoding : assuming you have a multichannel bounce for a given loudspeaker setup A, you can easily transcode it to another loudspeaker setup B. This is just a matter of panning the signals in the proper directions, i.e., the directions of loudspeakers A become the source directions in a panner (e.g., spat5.pan~) which feeds loudspeaker setup B.

The panner (spat5.pan~) may use whichever algorithm (VBAP, HOA, etc.) is suitable for loudspeaker configuration B.
NB: not sure if spat5.pan~ is currently available as offline tool in the official distribution…

This transcoding stage can be achieved with a “Multi” track in Panoramix.

Cheers,
T.