< Back to IRCAM Forum

Panoramix HOA encoding

Hi Thibaut,

I have a doubt on how HOA encoding takes place in Panoramix. When a multichannel input is routed via sends to a HOA bus for decoding, is the HOA encoding then taking place “behind the scene” when one selects a HOA bus a receiver? Maybe taking over the settings of the decoder?

I realise that there is usually very little to control in the encoding stage, except for the XYZ (or AED) source positioning (which is done in the channels… section), and maybe norm and format. Can these be reached OSC?

Could you clarify this for me?

For comparison I see that the spat5.spat~ may perform both encoding and decoding (with a few settings possible for encoding). In the spat5.spat~ helpfile encoding and decoding has been separated. Why is that? Could it not be performed in one go with just spat5.spat~?

Best Hans Peter

Hello again,

I have a doubt on how HOA encoding takes place in Panoramix. When a multichannel input is routed via sends to a HOA bus for decoding, is the HOA encoding then taking place “behind the scene” when one selects a HOA bus a receiver? Maybe taking over the settings of the decoder?

Exactly : when a track is connected to an HOA bus, internally the signals are encoded into HOA, with the corresponding settings (normalization).

If you look at an HOA Bus, the upper half corresponds to the encoded stream (which could also be exported via the “Routing…” button – the button just under “focus”)
The bottom half corresponds to the speaker-decoded stream, with various settings for HOA decoding.

I realise that there is usually very little to control in the encoding stage, except for the XYZ (or AED) source positioning (which is done in the channels… section), and maybe norm and format.

Position of the source(s) and HOA normalization/format is all we need to perform the encoding.

Can these be reached OSC?

Everything is accessible via OSC. The best is to have a look at the “status” window to discover the corresponding OSC syntax. Is there any particular message you’re looking for ?

Could you clarify this for me?
For comparison I see that the spat5.spat~ may perform both encoding and decoding (with a few settings possible for encoding). In the spat5.spat~ helpfile encoding and decoding has been separated. Why is that? Could it not be performed in one go with just spat5.spat~?

At the moment, spat5.spat~ only performs the encoding stage. Theoretically it could also perform the decoding, but this is not yet implemented; therefore you need to use a separated spat5.hoa.decoder~ object. This really does not have much impact on your workflow (well, two objects instead of one, but not a big deal?), and it is 1) a little more pedagogical, and 2) it allows you to easily access/export the encoded stream.
So “merging” the encoding and decoding stages “in one go” would not add any real benefit.

I hope this clarifies.
Best,
T.

1 Like

Exactly : when a track is connected to an HOA bus, internally the signals are encoded into HOA, with the corresponding settings (normalization).

Very good. Therefore you may send the same track to several different decoders and be sure all busses gets what they require. Great!

If you look at an HOA Bus, the upper half corresponds to the encoded stream (which could also be exported via the “Routing…” button – the button just under “focus”)
The bottom half corresponds to the speaker-decoded stream, with various settings for HOA decoding.

Yes, I see that now. Makes good sense. I also see that fx sending lower order track to higher order bus will just truncate channels to the lower order track. Good!

Position of the source(s) and HOA normalization/format is all we need to perform the encoding. Everything is accessible via OSC. The best is to have a look at the “status” window to discover the corresponding OSC syntax. Is there any particular message you’re looking for ?

Ok, found it. Yes, I was actually thinking about the following situation: often my incoming HOA streams are encoded elsewhere and received in Panoramix with either ACN or FuMa sorting. How do I make sure both are decoded correctly if both are sending to the same HOA bus? Will the HOA bus accept both and eventually resort/renorm one of them? Or should the two HOA streams rather go to each their own bus?

I was considering if I had to do format conversion in Panoramix and was looking for corresponding OSCs. I found them

/bformat/1/sorting “FMH”
/bformat/1/norm “FuMa”,
bformat/1/convention “classic”

But I may after all not need to control these from outside if the HOA decoder is happy for either sorting.

At the moment, spat5.spat~ only performs the encoding stage. Theoretically it could also perform the decoding, but this is not yet implemented; therefore you need to use a separated spat5.hoa.decoder~ object. This really does not have much impact on your workflow (well, two objects instead of one, but not a big deal?), and it is 1) a little more pedagogical, and 2) it allows you to easily access/export the encoded stream. So “merging” the encoding and decoding stages “in one go” would not add any real benefit.

I agree. Looking to the HOA tab of spat5.spat~ helpfile clarifies your point quite well. Actually a third argument could be that this two-step process allows many HOA tranforms to easily be inserted in the chain that a closed of one-step process would not. Thank you for the clarification :slight_smile:

Kindly Hans Peter

Happy to hear that you have figured out everything.

How do I make sure both are decoded correctly if both are sending to the same HOA bus? Will the HOA bus accept both and eventually resort/renorm one of them? Or should the two HOA streams rather go to each their own bus?

I was considering if I had to do format conversion in Panoramix and was looking for corresponding OSCs. I found them

/bformat/1/sorting “FMH”
/bformat/1/norm “FuMa”,
bformat/1/convention “classic”

Yes: these are exactly the settings you need to tune to make sure your incoming HOA streams are properly handled. (and yes, the HOA decoder will take these settings into account!)

Best,
T.