< Back to IRCAM Forum

Problem decoding "omnidirectional" b-format file

Hi Thibaut,

I’ve run into a strange issue when trying to decode an omnidirectional b-format file (i.e. one that only contains audio on the W channel). My goal is to use this as a quick and dirty way to play a sound equally from every direction in the dome.

When I try and decode such a signal using [spat5.hoa.decoder~ @order 3 @dimension 3D @outputs 37 @mc 1], the signal is only the same for all channel with the same elevation, but the documentation says that the hoa.decoder~ only uses az/el and that the user is responsible for compensating for the delay (e.g. using spat5.align~), so that would mean it should be the same for all channels, no?

I can verify that this method works as expected when I use the ICST externals in Max or VST in Reaper. I’m also able to playback real b-format files (with actual spatialization) using this decoder setup, so perhaps I’m just missing some nuance of setting up Spat properly?

Thanks for your help!
-eric


----------begin_max5_patcher----------
5562.3oc68z+iaiic+7j+JXMtCH6gwN7aI09CcKtcK5ATb3P28PKPl.CYKYa
sqrjqj7jLYwk+1uGIkjkrkzHaYO1Yy.jX6gjh78Me7IR99s2b2nYwexOcD5e
E8dzc28au4t6zEoJ3t7+9tQqc+z7P2TcyFMOd8Z+nrQ2apKy+SY5x+w+u+1O
9m+4e7GP+O+3O82+u+4eBMFMONJMyMJCE5+neX5CQO5l7TPzRjWfp749onEI
wqQgve5G4mbOpnA9vS3lE.Oew3DFD4OOdajdvn4EtIwOEfEcKmVqErJf273v
3DCJhmfuuxGjIXzGxaYfmFMhm8KiswEi5h3nrzfO6qph.sNu3YamMKzTXdIQ
aWGDE5mkVsP0SG4tV2vQ+GIAtgE86F2r4q.DcZh+7LCnw3NJPRXwTeQk1puX
hJPHLFwayJFjBXI08QeuotYYIAy1l4u6Wo4LwbtXATOU0GZRUNU4tJs4tQ9e
RQTSABpFpyV4u1zzI5eNsoNw7r+i2be9.Uin22tOL3Q+ofDSVRb3zEKK6z2r
6K8mvvzSI0H+OBbyCDT2f9K+4e5mm5+I20a.l3greK6QMwUwsy6nE7N8WNZV
Gk9rrNcO4mrOeZQfReIofHQJHqta1To35z00t+hgbaeeYQAQlhjkEk3+XPwy
KJK0MAvmL.Y1lXDU+jjOZW2D64mDsMPCJ6yo0DakHd5F24lGVwSJpthzszHV
SzTHKgT8kM1YGMB3lKCim+q9dUHQ2MJdieTPTUE8ZU64uvcaX1zZJpzIMV+h
bPrwJaTO8tQKSB7hiT.QMVgp3hg68HhPaLQTEYzsHxcSCOLHiAzkVpDLLlsM
clahhSkajgVpXEGGVupxmKzeQVd0aBhh1iJlEuo8JSBVtpimcVLT45t5acMo
S2FYpcJHTjMUYWpd6bCCyUIq28exMJXsaleVfgEPwkU5G4BH5pz4fQgvZ3qo
lGanFOPHet+GC7xVoGnpBCPyC1THDMpjK6ErzOMqdYYtKSqWRZ1SFhdkh1NK
WIdZlOXNAvh5M.TOfI2RWE+wz7FVHnUk.raF3pJ0UsuUq7NmQttwNv.KZQPR
ZFhhluxEXOgoH2De0byf46LeuGhbi7Pp1YlkV2rk9nfEnmh2hVG+nut1zM9t
+JX9AdZXRVupiVSyM2u4mOt4n22PMuJPz7T0MOccqSY28z1sY9my4Ziabh9K
Gw9Sc29b.8bJ75r+tmJeu1NjozqYruko1Ohgq4o3qLMe8eV9KyT9mhpw545A
cxR2fnuTkKBNZVxh20h2S+P0FYXWYOsI2N+n0vrEAEpQAKiTRFJkcznEgwtY
pen7kcTM99GcSVWS71hJ3NXhiDaYyYDkbtS0BXV5hjbKrv1lxDTGNoSEAZcA
zD.yx.SRFaj6KdqLFAxhyLNdTUNTY2NG6JUTs6iFyp3pJvDitqvpFFnwIgzV
Rs3BriMl4bHNA8hWcSA0HU5NoBcRQHUEwqV.ldX+pw48L7pogQ.c5QW8DHLb
2Z4ToVuV3vM9tnMNQ3cpkyGjVN.Xa8iWztp1NVcXbzxRA5ZR8umWUlt1CsFz
UzNHV0Z4dsHPqEO1B2dah8T9HtGosVS.xeRVyfWavVgVWac41nfrxIj4WdKI
0VLQ84XA7wc8r.OvJmm+WPRj8wZDoM8Z1n9n80grpTKqRn38WQRCxpjCjUMN
p1CAU24YAOV3L78M8upiK3brqQrp1zz4ZiahCKcymTs13DOiIKV0RShA2KfI
uJpDeMX+vhe90ufHxyEemzNeW1KFOkaoY7VxIhmmweFoSc4KZbT3Sn+WTPZU
mOihyTnPtWmoeM31YY3gt19cRcrTrWBwvkkNu524MhemcXt.bTzaM.mHbmVK
Z01.04TmTf3PLFEzgfoWSIbEcEm8Upq31u5K9k2W7uRcEm8pq3mCKIf0S2k9
MZc0a65MmncUYq1Uo8QXjP0Q3l47BaWUszi0w.K.TTawpZtOTSmmkD9dRM6p
a.+miUjmcMdsaXH30zxUYSWl3+T2Tybat0opahAc4oENEIp4SzbvwrD0rws4
3EdBSTq2TQRWKiM06f0LTiAZMZ+mp1nHbnjJ17tu2EQ4Mfc6aic2Gp9ntAOv
ZyT8ScfwZMTBxt9QdGXGOX5L8pZpiE6lURx.PUpIXZ65GZo8ywwqmlN20nYB
OqEkSXDIrrPrCupTsh62AJQNTZt4IeBcm4GVGf44yZRzSAogWqCmMx54lMpv
tFce7aQLffFxqYHGChQXIL4iiZXroV.kQUFggcbbfATHEBsvVc1ZqJ1ByWV4
g0E2opc0UXzD+SfqMm488rnF3.fSC52bUohlcMMCSKNfCMOF.p8Do1eFanHM
WnPSPCRN3ZkcHHokk8BR2D59z9bJ8NAHoXU+GLS7NkCvlB3.E3oihkoEVD41
EFKTtav4TaGrkEiaSJMXXYSvTtizR3fkR0Cb+AVUz+aDXh.Yo6alVwo3mi4Z
l6XXwSTImY6HUxMbPJRCB.yfHnbJEDfkrN5eXNDjrrSyMGn+ojMggwVBvSLI
HdxwPOCqaCyH1NTagskzghs0TUE40FycHTLlR6XzDvnIJGgbaOptsgwhJ.yR
XfG6fsoRBioFJhvRXyj.S2B9eWHFGFJMsvdG0S4HLAFQgDyEThCzUbIPckS.
NgxNJL5VRKh1sPaIL.TAUZg4zNogLXnz8eA6erdnZf8O1ZB0QIexvDLAFIlQ
ZvhCXu5SBQKkz1HQgQhlS+JvL3uo6iSbE4kMgXwsHf7OX.wRliUVVfbGHvXo
zL5hWQFoCD13BLxnSo6XiurDvzNm3.CGgAbL8pLHbtPPAesoTgirsdG8gu1i
yIkepqo803b90bbNo3SNPmDyNII2q6W9.cdTwxfzcrL1E+hdGIipuj.9wDwg
lhq.tOK7INIn5NvgzK1iv39HSuceTwjtCti3pr.8qypyY8Z04s8ho+Z8EkM+
o4gvDGbNdRezGZUfGepqTuvnwvh.5tM4kJt0sr0czitp9lIYowaSlWfuEZwn
5PhmeZVPToF26Ke2P0mlYzgyIzIa7ngLbOgrBT3h.EpU22On3f1cgoOjiCvt
L7ndBCzKILbLRvsvgHWWHihaGznWFwZYeAMqaAkKJ+kl2QwGIncYfhdKAYeI
gBmgaINuvh2t5ysBne6T15rKCim4Ft29csocV6Yeu8u2RTYHVQPgOp0oT6z.
HG00Y7nAuLryeG.BpYEJVOywAfbbrhmeQnWn+UYysev5ZaeMsULPTtgyabsr
mjbf+m8bm+klNDGhFYaEmbnPUTieN9ng8oW5hn3y1NRGmUY38Vm8oK6xZV1U
1NRaYhjBtskU2j+wGId21IH6W1llgR8i7T6GnfHjKJE9UnewFWGkECk.nNH7
fbiPwqiB7BTfNHx4FhTZ9owQAyQEKi9jN5XzgbzwrnWgiNFUn4VNFCMlMi9k
3jiMa4vNzXEO+9mhnu0NXZC4HT5++uMvb7Iy1+vSV11Ae5IGlJ.4JnBHYlIa
E45.zdpCbnjcWu7yWOrkGsL8e+u1fT8itOknLxaDp+2+W5Tr9rclfGlT803L
AKMwOM2vNy4UC6+tVI3k63wOHUAoy0PUvri1YVW3SG+qpBW3Ceehlu5F4Eud
peXqqv4+baX3eCVFjeViqrQZerqJWjejHxWYCl1yUk+Mzgz21r1OyBHjbsM.
tM90yn+qmQ+WOi9C6L52waE0XKD88I5ic+XFdBx4YdAos9pQEhS9UixLg6xx
rNpW7swbGDn3IfeOcROZXxhCtq.rOUJighTIrJ2JzkzMvboYKPuKe+c+t+n2
6b88P+wEp+QNQQHd6muHVuHTlMgEwlc6PoTwSEEfVfVbhpU3gQSHNl66laHg
Gkufn+vBB5OgdKShm7Nvy5u6DoNjS9DogMyJyM1dH2PzmLs7xrNoHpsbd0so
0LvBd6TI5oRkxkgn7dKCwdYnQa+bvtWvVyjHMI49ceq2k9sQg3mpIZgwjC13
wJ4ElBoAymmJzFZKa+fGg6CZa7SmU9YO25qEwpnpqPlWjmm+mN2JZFXXTKD.
qgoYvnxdSAvCkBbQ17WJ2150K1WMQDhdg1dABpoyednPbA2jCJq.8CJtjalI
cmS5CTPtjPQe27KbmKMsn2RmWLnfbLPA4BAE79tEb3WxMBjru6ZLwkbSQUfh
OKTHs9Fc6HkGsS+vo3SNPmhiNPmRi+hlabSo8qw4703b9ZbNeMNmW63bdVBi
G0ZfgwyDcpuRBiGdxIGFOpXXDp7PVQrbt8Bi2IRQ3CjhX9RP+cYP7nreuFDu
9GBuVoMmmP20KIG5WkgtiX8sYn6XeqG5N9.CcGl9Udn6TR98JbUzKY3pn8Mb
UzK4oPjxNlypE4peVsDWZNx0+bqItENdgx9JWPtINjiR92rgqxcd1V2voEWX
bgwySaMvUMGtJ5QGtJyowma1VdzWCW0qgq50vU8Z3pdYBWU7DvSxMwoMeYhV
FQFhNfLvvfmbOZLUNQH02Ie17Ob+CQkMiVzLtny1wJZmS28Guncp6HrtZnnr
g1c2ixhFRoc2iVkMzp6dztngLR28nSYC41SLWofpVIo0ZEAWhJjIzVaUICgw
5nuJ4GBYG8UI2vpK3ZGu.2EfsiSP6BxJ4CDdWfVIWfH6B1J4Apa3616sRN.k
zArQK4.TVGvFsjEPEc.azRd.0tCXiVxDX3tfsRtfZOezduIppu1t5prl9Z6s
ypl9Z6sytt9Z6Mzot9Z6FJv00Waugj55qs2PZc801aHqdCE7Ibo917du1wqQ
DasYh5zlVa2dVnZscVUYwNFw.r3CsleHXVmTXQIzyRfsn1lqQ.aduCxSStcs
aIGy1F4E5OMzOZoYtZhCu0V44l4lmFFEpzSoJJsV5KuSM.p9PUFlTbaU18+3
1p6xMcndUePyeTGUQXq7+hntf3UsRcqvq91orF7tdhWB.3ZUz8+FqtQNEp6q
S8nO1QeCtp6ZvAY8fCkntjQGyxgvVZyIhSB7IiSJP2RgCvRctAQLxfPLa4MK
hQGDhot7UGyn2f3EaP3EQccOeixw3CDyrU6LzaP7RLL7RCQ2jHlbfHl5hQ19
VzZu0.QL0MNtf1u41v4nh5YnDsxIS8pQTEAcg9ZulNvYisaAe5AxvrawdwUC
YbNcjQewdytcXLs5VQe7oP1n4tqFpPNcTwl0rgfqFtPG.t3nxOQ2NnB6zQEG
80fu71AW3C.WfQy5FRaQb5nht8T9sCtHGBtn.taIjwZHHiLGRtAPFAdXy6Sv
5bUAEe6fMCXhe8.v42L3xPl3W6Y6X8xctUvFxPvF0rL2PbF5PvE4QDTqWBj4
Dm8uU38FHLbCwKfViC2MAhM.eBZMNb2DH1.bPns3vcSfWCxWA5sJGiLTGGZN
Nb2D30PcgX7MJhML+IZINb2DHF4BgXpW4r.DGXZ2OTXoJEGpL2Hk4Xk4skQ6
3igfXzKzzXWcDicYr1e0wK9kwl3UGuDmeeDa2cDVdHkzgGu4OHm0za3POvG3
u0OvGm7c8jg.HyuF0958.eH66cxA4RdfOH883EHI+deyrC.YF.JssM0qoOW6
5lxY20M7g4LQ7osM1I42+7EedFSaFmLdxNq3o4Zz05xgmsb3Dpd7wO5aQCNt
yrASS3oIgBvHrlOu3mADMdRQ1xdebsks4lkXBS3nSN5e33NVFLmi9XYji+4W
31baUhfgwd1ykQsss14i6GF65s1OMEUdyn1WL25Xwb0VxsLw+Xwt.L9VvwrU
IaOUAbl3DO2Mz7KBamK.dpXXtK8O.Q+2dHAZGZdnuq5GeDlDO9icdS12OdM0
4X0xMY6HlEoRtDtiaU9WRy1TxY0rc9kBD6xY2VmsZ0737t7fjgbV7xkg9uWz
gwq6aSMtKhAYeALeufLckGKURXWXsSuhm8OaR6eV8qLt4NCs+H2+7Ov9Iv3x
imVULd65bBEzZkicpuoUVsRmY43bxuckrQcC43XRS0sKyEian5FxZw4ikkrw
wpfiSGddFnMaLkSg9mdWAOA8GHG4bGrmIQWznYliJsVTHwYxi8jbaxjyuhY0
TUdaoobZ6JlGWJJuwzSdmptcjVxalJ2b5Huca74SpeXlHu4rP94UwssLNNsS
MwJYa7mKSi+LYY7iLCi2U1E+Yxr3WfTFxgYM7mMig2X1B+HcJH2+O7EvunS0
kfy6BVMN3SMWSfujqjScbNESdLv+i9InuO.jh9XP1JzC6rYCC8LnNl0Ci51U
g1bWPbhK2gZa7Cl+b4rU1wEyjFYXCXRu4S51ndiMnOYQzdaVmbpV0KNHVMyZ
JflZsrUcTJ1vmLoIMRGdtyu3l0qQxeOUbsMsuG7vuUMuarFrJ1chIqMm7Ez2
qyLvHF568BV6Got0EPre.Jda1lsYoffA56WOGQNVA6FsTHOFe7NoTWV97Ilq
wAl4U.zgKdzqpok1RgcMvl7+zF0kw.ZdPx7sgtIn2R+guCEmfR2rxOIXtaH5
sLnjbq5nT+rsaRuG8QnVejaXHJLdqWdsoHWnvpoAx2pS9cYq7gtLXYPz2MA8
WhPwPAInOBRHPO0.PEGE9DJwOLvOE9s9wgoS0fWYtBNE8V2OGrda1p2UlI8.
.egt0EvyDzCQODAiXhua33vfEPUAYaMocu6ODziWj4GghhyPpbKclumIEFuw
OYALpZhTn+8HfGh.kxIlZePeMejCfOLBktxci+D8vlsJ.HstovyDjgfeG4OW
sVmjmT4AY24ZCpnE.4VA0dAKV.TUcRCD54BR9tLI3aCl3OY+looNPGkBZKnM
IwabWZHF.H7ylwOBMS0lUA9fzHZ1SH0El.nSBsKZotCdXz5fT2PPMSI3.HAP
HqzWHkAHfDE4g77CceJchht9eAB2.9GFG+qH2LU+j5ixeMAoZrZw1DMqNHB9
q05tZRiwHhPFRxLjeMxVsTti4sAZRq3NlaNQ0RTdMcFdalNCKtqRJc1B7dUe
WxDDFj8TUAg3EKR8ypKBVxUM2ROdItK2c6qTvamGFL+WyVkDuc4ppkevE4R8
Jd7vJLiRgrbof7x8hgCfxp4YqVRsLFZU4UMlj6lU9ZhphWkR9FKxpqlmbB1D
fLtwsb9jpKLqLENt+UTTiJZ3Nlf0bCRY2N30nxjaxxzh0OpA6rsYwiKsjMVG
fsbv27tReUn4XDZnZqaL4YUngdlEZD7AJznkW9RtnxJ+vM0kUzcW88efQzY+
23et.zAuoeqZWddskmGj6dK+GHj12Qhw6wHYwNCijP1iQhbNPIwQP7JirXt7
MYPCMGe0FZQeDYj1mA5qztGizdLg0AdahChxRKh.tT8pkINLycj7t+ZfvFkz
Gpf3bPEDCmJXQtLTAgSenBzyAUfNbp.8BIKzKkQlSyJi3gw.5wHywmCac8BG
4miQx5Eaj5k86dHRkGXWAmT9WmaFMi0eXcXCTen9mioocNIDx3wydW3ppgXu
KZ08tjUO7BVs8KW08uXU0KWrsKT027Ody+DPjuDiE
-----------end_max5_patcher-----------

Hi Eric,

  1. I confirm that the HOA decoder only uses az/el, and distance is not relevant.
    If you change the speaker distances, you would obtain the same output.

  2. A W-only ambisonic sound field will decode to perfectly “equal gains on all loudspeakers” on two conditions:
    either if the loudspeaker setup is ideally regular,
    or if you use a “Sampling Ambisonic Decoder (SAD)”.

Although your 37 dome is “quite” regular, it is very far from a mathematically/ideally regular layout.
Most decoder methods would therefore not feed the loudspeakers equally.
By default, spat5.hoa.decoder~ uses the “Energy-Preserving Ambisonic Decoding” method (EPAD).

If you change to Sampling Ambisonic Decoder (SAD), you would obtain a result similar to ICST ambidecode~. (I presume ambidecode is using SAD or something similar)
However, keep in mind that SAD (and theferore ambidecode~) is only suitable for regular loudspeaker layouts. On irregular layouts (like your dome), other decoding methods will perform better.

Excerpt from the ICST documentation: “One of the caveats of the ambisonics decoding used in these tools is the strong requirement for REGULAR speaker-layouts. The decoding method used (more of a spatial sampling, according to R.Furse) will only give precise results if the speakers are evenly spaced in 3D. Any other layout will deteriorate the spatial imaging and introduce artefacts.”

Hope this helps,
T.

Hi Thibaut,

Thanks, that is very helpful indeed!

I neglected to experiment with the various methods and optimizations. I found that if i switch the method to direct sampling, the hack works as expected.

cheers,
-eric

Indeed. I forgot to mention that “direct sampling” is an alias for “Sampling Ambisonic Decoder (SAD)”.
As said before: this decoding method is not recommended for irregular speaker layouts.

Cheers,
T.

Thanks, I figured as much.

And yes, I would only switch to that method in the case where I wanted to play a mono sound from all directions. Otherwise, I will use another method, likely allrad+, but I still need do listening tests for the various options.

cheers,
-eric