< Back to IRCAM Forum

Spat5.viewer listener / speaker | microphone | phone orientation discrepancy

listener orientation is always absolute (doesn’t depend of listener position) ;
But speaker / microphone / phone orientation is always relative to sweet spot / center.

/orientation/mode “fixed yaw” : doesn’t help, it just disable auto orientation of speaker when updating position. it doesn’t allow to set absolute orientation.

I need to display absolute speaker | microphone | phone orientation, as it works with listener orientation.

Am I missing smomething ?
is that expected behavior ?

example patch :


----------begin_max5_patcher----------
1582.3oc6Z0rbqZCEdsySACSW0wwAIAXSW0tnuCsM2LYvfrsRvHOfvIo249t
W8CfEFYLIFS8h6h3DNR3Ceme9NGcHe+tI1Kouiyss9MqGslL462MYhTjPvjx
qmXuM78njvb41r2hyyCWismpVigemIkmyn6pDRhkhnKe4dTPkvzhsjzDLS90
.OHjVvpjBJkpDw9XGV8jYaa8T4R6BYQaHoqeNCGwTqB78l4L0xEH9zyQ7IDN
yw5Iwc7i6tS7wzdhtT7a7m5VfKgFFuLLcsI.hLBPvmCfxu7t.IDsP.L.R9oy
kgxS4CclM0B46X4533XBpvqturDlJe4buqhujjhsblYBeNFwGxH9fmDeS6u6
z2+Z5NeHgjyvo3rGBwwV265Y4vcKVOjuCG9JWJPJuV7VRTFc2FZJtbk.mxUz
EBPx8WoLg0LhVjJ0naaaJbwUOlwSEl.TIHykgN9eUa4RoBvYUO06I321SxIK
IID1GMdHWsJGW9HH8eNBUVYVnQuhiiyBWmyMpIIhs4TtVTBI5U1lLZw5M5xw
ogKSvaZeCpE12dAkVxI+KVW5x0aowMkPyh4PRSRZ3Vrh1liWuYqKHyhnoLtB
lwMGbYFROl6ODLcc5JWnx9cjrbv.vLONgTvLuQhK2cTnxUwq.v7wI2GGSXh3
mFYxMDdfOng3F7AGVouY9AiUhuJnA3M+hR7SH6wy3PrNwOLqNI430zSJpg4t
vL99Y3rmU4qGE5bt3IspLOKLs4OWgX8UMVsQ7yJdXMqSqkOTxLFHK43Ki5Dl
r5aQSwY3bbJKjQno5jF4g6wwOGxXYjkEL7g+JuztVZXEFujBLcUk3J4MMREa
KwPLdUXQBSBCx67ZLeD9l3hDJ8UMP031Snoqa4edD59jsgMuk6o0B9ZtFM9H
5xFKmuglwZqHy5oxuXROEoDVN6CUbQfZcYHZ0uFpDeZFox48f.YV+BvTbamY
mq30BpJq.DgMckzJ1bsE5OxHgI1eozYeWnLQ1GnHFCTk0G1t+T06n4Qy3Q46
vow0bhFLRelBdc1OXm310QhajWfFO1P20qAbqyua.7diJ3gJR7EiE3qJOZ5X
.iIvgycUdczHA75h8FPNbTc4pt7.9yuNM.IZV1L2m2haOxOOHRi7y08h39jk
oh0dVZ0LiXwG8exjwYnZnoy.jy2tRoAYtl8vcgV6JqnQE4pC1DQSnYUGDCAP
ygdSOwec396eyLlzTytZvuKZYJurcIa6pp6S6e6PDd6ABGlBE8rkGoWLvoyd
dPxV8LsNQ9zd+I2vmowH4IS6niHmy0QD3J1QzNBO5xLUfuysGUfaYi.Jp.O3
XPE.LQE3CtMnBJMH+jJ3bTA.2aAt.Y51+2jAQzsa4GCpEY.+nkSsTDBg71gD
7VSsHoVw30YXb9TqUbIz23AfV+YQBNy5e96+xJhltm+kIbplF9AzPpS2sRcB
dkkEKambokG0be4jX8SaJw3KE4LxJRT8Y2OO4jgDNTfZnTpIToluhmyv1ZJa
SVgINGzWwvckIjKaUGo90kctzSVkhGYdhZTt2d0nPAd5sqtXLpQ4ZrFk2sQM
pRCxOqQctZTKBtAJQIGv3MZ2p0CtWePdxWA0Qiq+WO4Nzlryo2Tmq22g76NV
udOfqZLApW.t+vLmDcdF0nRDutuCCE5n4nnVz52EA+uQXar9lcsyfizk70Nx
5qIsk.dOFwz2dPRsHZ2PSFcGN8a1F8An19.vkWwD8EJOLsGi5Q46bq9mxP81
87ZQqwQA+V5fSyD2tS6bO4Wqzdcz+RKxGMg7lgF4zhrnJ.U9NqNvlYGi4MSk
V2J0i0laqSE70W8HdqQVfynn4Cgh7GKD0C8H5s6hUjnf+40j6PnI2QCSn9no
F64vaz+5qYOyZFb80LxrlQWeMCMqY3koYPe7yNCQDkynE6NRDLd8gaVLY+KW
SKFKam2HY6bWLVJpG5I3Zvi0GEejUXfxo6ilgKtFLnn9jQfFB1DTu3pgCglf
iFl5ECo2PoIvnX8Fozb3Xwm.+R5QcLfvc61iyplxgTE7yB9hZfHKlJujjptz
WdYFVb9Ws4lZGlwOQCie1jhL0YhdubXb1hYMjkVPJSikCOwVdNSw4m3mWTgC
4wQu6G28eTHNUrC
-----------end_max5_patcher-----------

thanks for your help :slight_smile:
Mathieu

Hello Mathieu,

Well, you can do that with the “/foo/direction/xyz [float][float][float]” which sets the direction axis (aka normal), expressed in world coordinates, for the object “foo”.
For any entity (listener, speaker, source, etc.), this uses absolute coordinates.
See spat5.viewer help patch, tab “orientation”.

Hope this helps,
T.

Thanks Thibaut

ho ok, so direction is absolute.

my objects orientation is expressed in quat… too bad a conversion is needed just to display orientation in viewer :frowning:
Any clue on how to convert a quat to direction ? :-s

Isn’t it a bit weird that orientation is absolute for listener, and relative for speakers, mics, … ?

I’m still struggling with this… can’t find a way to convert a quat to direction (normal).
:face_with_spiral_eyes:
any help would be appreciated :slight_smile:

reply to myself :
thanks to chatGPT here is a solution to convert quat to direction using a js / v8 (+ the same maths using max expr)
I don’t really understand why a spat5.quat.inverse is required here… but it works :slight_smile:


----------begin_max5_patcher----------
2073.3oc6aksaaiCE84juBBg7PhGGaQpM6onXl99LyOPSQ.sMsiZkEc0h2Jx
+9vMIamHIyTQ41Bzh.qERoCO2Md4kpe65qrlP2RRs.+I3ifqt5aWe0Uhawuw
UpquxZId6zHbpnaVQgqICxnKVDQr5KaeMNIFujTWyqvYSeJLdwiIjoYRnfnA
d8At1dCr6Cfk+B9j5QhyWRyyhHYBLgp6JuU1tUD4awxp7AVgSXifLRxijX7j
HxwOV3LwHiN4y2ifVGPHL9k.jhWSl8HNKKIbRdF4vYoJAhRhvobTNgNu31E2
+zAR9R03jNetUe1g3xA7I8LLNLKDGoDMM0kWytS5UDMdQCZhS56RlVst2yR5
L1ehWicEMm9DMISWbJTWHYSOe80GNH984q6qooWLYCSIVnAyHaEVSVKvYmwV
iYd4h74GbD1ZHTar0N1dxtR6Iz2A4lRWtjDm8J1MbGdC38fDRDNiIoAYTPTX
ZFIljz.ocBFKoqiz2xVPa6Zos8q4FbT09JeGbaIIMEuf7ZtkRySlRFBEj7FX
SDBJ0eiGwOLdrQUiPeioFEdCy3dy0Ebj23Gc+jFb0Un0bcE+NpVthpkqrXNy
in3L8hSNmNMOcBMYFIYJMhlHeK1CbfNAHV35pOytRApighyV0X5z.tjsqRXl
Wg7fqLzsJByzW+H0mD+01nweEJa3mZJ.riOWMWU6gBJcesc3sDkl4f0Tz4pd
A4LNmlsSQ21G9ttHb+USAuGIhdCcDN7APgau6aJLFp30OIexKr3acfsEoaBY
i4FH.RDuxAIckgxKLclNUP6pin4Xvf21C.vAr..MQdnX5GjefPIJijYrn1tF
KnccTroIjPiErwSl8pZBViMgDzXbqljl3gMAnd2dybTual6.9CvMycYmAuqA
N6AEVyvwprJLaxTAUmvgq4H8J7zuvrXk+0TTmwJ0omLIJnY4Yfw7MaR4BuWn
dgbkpP85vUzModc776R0K5hP6RRi.2qroajzJccIoQFkz9i6Za5TFm7F70bb
1fv30jjzlVKjbZTVtahCnfyv0FyrrZ9FXrEMHWWIdR8UY3PaMDeVNmquP6F7
hLGdLJLlj9HOARVhIr0WIShztRggSiBi2Vp1GKwNdIjECHEcNF1KZAKlQliy
ixDrJbKYFPj9HStSoe4HNdthOfmbXgNUl6KxLEenVbJK9v4RucbmUcBo+IMc
5.lY1JR7LPwpd6c9k.56KiH6aadOUX2u7dZRXge0PtNUqk36KSYFZKWiO7HN
OmFeP0+gjiVkcqhQWNwD+8mFtW5pBGX204WZCf.6lx2xqCSe1ysqywrvfmO4
DZVXx4mXRMIrsYyl1CYLS8SY5wSIsdzie3CuRDrdzYIsJKSjYy1xcTiUfYdX
DobnGSiOw1j23Km+3fS8Pv7PFSHIrqJzrC9b5CwODKwA7d.7cODqF5pqdHdd
d7TdjfxG51s8A65C12Gr4Nv2dHFv9G6s+ezjk3HlWnnijjX9yb6mySy.gwfo
3Txck8ko..KwKXX7u3rmFj90jra21aKKc2c81w9ceu8re2zaycuq7Y1BF9d9
C8Nvtxy1Wd1lhy3CY0S7Ozo3HvbZxFbxLvZl9il.tkan1GXyFLOjwGGq2xFF
HPO.aDrik64ld6KPUz7NtjfceUW1JGdmzk8Eugcpw816JGGRwIG00L41Zlfa
s3getXduZ0orVhvKNt9HWYQVNgL63xXYgyyna31nGp1SQQzToYvLqXTugbLp
rzDFeB0WNMJbHyVhHLsFtc29yWKFOYrlQlsFxtAcTPliV8pVKdUUpLUl9NWn
IQceSSh5zcUVG1Tk0gdkxieMKrt6uKrdU6hxOvBqmPih9QWYcMcMPM4ZL1+W
bOC2e6YbPU68Sfmwpi1Zje1cMb9z4yS+WWWCue6ZbPU6+6ciUuxIOOgtjjGQ
zXc61pJT3Y7xTEz8UoZSX7L5lgT1pJZfo9P418IX5H+KTZ0vwccsopwNfEnZ
1Db7hFSlVn7cCPxRU98tbJALURd2NW4eObPe91XirssA2CEGOOk8jUpDp1da
isqu1ccE43auvY15SECckGF0FG5ZUriL1NAxlPkuqEmmOxuiDOaywml9PLly
qgkXD3WQ4HufeWca2sGbCjox8zRs6Cck6L3nKT7MmePg2jSysNjrgj.9ad9D
aBydB7PoniA7DVSv9fgRkIfIJ6eXuaFhWQRxxSHCWGlFxT+htplJQjlGS.Cf
OXU.M20aJMON63M0q1OW0.kFvQ9cCMtVC1ytqjUGoQiDBMU49D3Kn+K9NyEj
me+SUeRIbwWNsLZwg7.slQRYh1x8p8ik9T79ToAxaAG3YvgGht0.EnCi3ekH
.TaQJPCj7k.UXHwytu9.RFEY2Sj3kHa2NjQ5JcgsU5pivMv.FL7uhD8nTqQR
GN8B6WCo2zCZT0PC6dnegRnDZT2CsWMr1ocPqiiB+yDn8VUPMPxH.YqQL7Bd
2NjzI7lI7H8zQK4NxDHoAPNF.G2QZNoDzz94ZgrWmLqjqN94HaCLqjqN5QWS
3CvK4tdH0ZN4nKRsMiIWsxdv.BOmKTHQDTWCuVij8EhRvwWJf70GHUeVFNaE
MLNSsVGGjm3+oqdtC7F6D3IVT8w2nsiPcbAgcRlK5AMrKRUTOns6hTEgZ425
aBiOcbb8MgiKTGG2Wmggbg83Uq3e04pNKvvZI9yxMGZbewkgwxKEU0wJgvKY
hr+Ah6fSl9TXFYJudJhZTr0WV5WK9VpjDmGpTbhMRxRTcGdsnRWgkDQTDnqe
95+G165sk
-----------end_max5_patcher-----------

I still think that an easier solution to set fixed (absolute) source orientation would be appreciated.
When setting orientation/mode to “fixed yaw” : /yaw is relative to listener (and depends of source position)… so it doesn’t sound very “fixed” to me :-s
my 0.2 € : not very intuitive, and not well documented enough !

quat / Euler (yaw pitch roll) / axis … are different ways to describe the same thing : orientation.

The behavior of the source is another story : will it follow listener position & orientation (relative orientation) or should it be in absolute (world) coordinates : IMHO this should be what /orientation/mode describes.

I find it a bit weird that source behavior depends of which convention is used to describe source orientation…

But maybe it’s too late to change how /orientation/mode works in spat (backward compatibility ?)

Hello Mathieu,

Thanks for all the feedback and findings.
Apologies, I didnt get a chance to look at it in details yet. Will try to do so next week. (= your posts are not lost in the void)

Best,
T.

1 Like