< Back to IRCAM Forum

WFS in rectangular array

Hi there

I was wondering if it’s possible to set up a wfs.config for a WFS rectangular array, not just a line array. Is it just a matter of giving to the array the XY coordinates of each 100+ speakers?

Btw, Spat 5 looks incredibly amazing! I believe it will also sound so good, can’t wait to test it properly!

PS: can you increment the number of outputs from Panoramix to, for example, 200?

Thanks

Axel

Hi Axel,

spat5.wfs.config is currently restricted to linear (uniform) arrays along the X-axis.
Maybe this will be extended to rectangular or circular arrays, but I cant give any agenda for that.
That said, you could handle a rectangular layout by generating four linear arrays.
It is then your responsibility to route the sources to the appropriate sub-array (i.e. to the four spat5.wfs~).

Panoramix, when shipped as a standalone application, is limited to 64 output channels as that’s suitable for most use cases.
If you need more, you could use the spat5.panoramix~ external, and build your own patch (adapt the Panoramix-Ircam.maxpat file).
The external is restricted to 250 outputs.

T.

Hi T

Thanks for the explanation.

Do I still have to use wfs.config to configure the 4 line arrays? Do I just have to give a /speakers/xy message to the wfs.config with the coordinates for all the arrays?
I suppose it’s not possible to exchange the line array X coordinates to Y, right? To make the line array vertical, and not horizontal.

Axel

Hi,

Basically, you need to use 4 wfs.config to generate 4 sdif files. You’ll load these files to 4 wfs~ objects.
This (unfortunately) requires a bit of patching, in order to route the messages/signals to the appropriate sub-arrays.

Attached a crude patch to show you how to handle one sub-array.

And no, it’s not possible to exchange the x/y coordinates.
And you dont give /speakers/xy message directly to the wfs.config. Instead you use the /spacing message; this is a “precaution” to enforce that the array is uniformly spaced.

Best,
T.

  
----------begin_max5_patcher----------  
2285.3oc6ak0iiaiD94t+UPHrOrKfGaQQcXsOkM6QdYCP.xCYAlInAsDsaNi  
rnWJo9HAY+Ms+FxurvCIY4tkjokolCfY.ZaYJppJ9UGrphZ90auwYC6IRgC3  
uBdK3la90au4F0PxAto9223rG+TRFtPMMmbxirMu2Yg9VkjmJUCWb.WFrjUj  
rjtKmwIfUXNA2Ls7p8rpxLRohFd0ipGp74CDs.33rP7G3mqu8ANofjWhKor7  
63jjR8rfwwKcW.PPO4WPuH4Wdhez9fzTkHIDy2Df5HBz7FI.1vBbYx8z7clQ  
d4y7a2dq7iEWGZUdOuperANH1bNbwWIoAnPk.GOFp3GconxfDeBXRBa+dg7+  
JPIkUsIi7ljLZxG.kL.6.IuYRap1HtWWg7TXycbrIxWIxgqWuLPpTQpE.Z.z  
wugqaY4kEzeQyW3R2NCmi2qF14uwo3rKENGQdrHf938jbPUgf0fG2VrLgkuk  
tCv3xe8+V.Jum.vbN9Y.s.fydD+bAnn5vAVAIUh+aHfLZNAyAU4zsL99EhYw  
DDS9f+m2fehVzvR47RXU4J9h5SWz6LrjV0OPhhdPEJJsT6UqF7QSq1i7b0gN  
d.yaENcr1GnjGI7258yCDKVeev2PyokORKuG7NmUErJdBYkXAsQbK36b5OHD  
Zz.zlDjN.5qfhPWskc3ngiBuTj97ju.+.I8NA0EOyc3xRNcSUodmtaZAbIs4  
BTsjvuijiqsEcU2SosrkmHM+ABuf.3LMRYovZH8dUA53GPW3ng0PytCvHxiE  
ASEHR.wt+9+GHBKIrqyHaKAEzTx6b.rsp3SRgBmuqJSD9REjytPte8ZKHXTH  
26iEj2m7LAH+XVbxnGSH3.UpuLI9PPW+W8WAvAPQ3EGdXPp+kQ5J9HU3M+v.  
cNnimth6rajMh7Xubh01dxTS.eSwAB9ChHl.jm3GpMsJ.vqLaiWXFOncbgnB  
FIF80ql1UFmbPr5qXUoExTm5y5FEM0bCdM0sny++7I79CYD09O57pq3z5Tia  
2MRtWD9jch9o+0Od5tQVwT9bQSzXfmBOfAtikkL5hSEaXpaQ3FmTVgy.hHA4  
ofhDRNA7melUARv4f8rGHqHozRE3qCV.DEwPkv.3dBm7WrbXYe0hD46NVXYj  
+Gsvx8HOS.6E4GWdLyTC6JwFgksgclHJ7nch7ydAs1X78lX9jZZwq4qs2yRl  
uDW.MjChoCpKxZFa8kert2TAi1jGu0Sr0W8QdaCYkbbdgrmBmVe5y3GAuI1c  
n5RsB5UWchWcFyCgdQSD85i7eIz3PTz5y23POzzZbXOD2dXRFCmphCMagtpa  
vPv5QwF+ogM8P7IfM6IEE3cjWANqxvhMJk4ijuKir.rZGmltZOSjcRw+sBya  
GRlmQSigB8EilRKNHd3UrsaKHkOKh9dbregw1KLwEi7HMOk83J49af0ttx+N  
NZIUf4B+ZYZO+cUVRG8rOIulnyl4SzrXz6EpvdnutvF2gTsA8pZ8NqpsOxOe  
sBD9YYq.a1UIPuCLBMlSDbpmWyHj+SSq.m51ey7te0MJBFO5wlENUsPOTeNx  
1p8LFyStmwmQ3xyMV6AOZxBnoZ01G4s6Fix8E.HOamyPi7qhuEMpszjwlWQ6  
IfLYzGHKS6TaU2fms2rSjyKvFZq.eKOKRU2fVu5R0TetdffeqGq5GXaciIUE  
aX7TBOgkIr9UrQU6m3CXbn6Z0UQq8QP0Us75Bap7fxrNhZanzQBp9.Nqhv11  
Lby3cWgMnZc0cmbuJQvwhxm0.P7PSPm.jSO2duX8Juq+x9nt7vLGyX3EjBqL  
zPt8RqBQbnikyKxSpTDah3nmndCjosOxfI10vCveBZau6Z8utx4H+Q2vN5RS  
MZPhOat2ymuMzbea2OW7sge44amLpycvE3bOlmcTfAd1hbPRD.5b5XWyh4vu  
F100azTZhuX25gn8TcqkUlHl0PN1mdaq6Z2zMG0xQWgNLXf2wLS7ruztHMDe  
mE2S34bOMyA6DURutX5ym9b9XcI1r5moNjwlRfsu6Fr6NcP33uCLWp+1vD+y  
6tMVK2POCdOE8lXoC8P7Y9f+0m8jXwVU.zM+xRm4jWrZ2entSRd054ANyIO3  
relSiHOyvqBP86r3LVfe8BINXzjbmpc3qIdGPRwIUePewKfshfxwOE4pOWI8  
Zroa7fiBbJonjlqe+xNNI465amIoxsTI88ptLl0QlvZ3bvZDz.VKaF+mHVi5  
mytWGdu1jEcsR453juIbJvFbJvDNgr.mjEecVNEaCFYhag2IyYOM8.ilWVGC  
v2U+Jg6pCr14WWqnYhEDzJVPlvHKvGSh9YC6T+qUm5MW5TSbf7s.BDesH.xa  
trpMIfrMBgDXh0VnMrpMxrFMGauEZhiqM.SiRbANKajBMg0M61dcgMLJEIaX  
x3ahhCYkP6WxZxtJNi7KLg05ztwGNH+ujQ8iq3pnzj2qa455EpeRy0+TU8jC  
m7.sY95QvbQd+khj9q35JpdJTWFui78qfmWQq8IEqWAKUcS4Eo5erXrpTJ6G  
UEPd22SxqK6VrL2hqxJOEa1raKMKqsAwca5SSUPN56V2pEmSZlrWrODp5iLB  
hh7BUWItHPFStA6peFXyC4G3G65ImpenWjef5p0dn.zIsgt9w7NxKYWqUbvM  
dsqu9JwPPAu59XX4qmhpptniGvhn1M1AFuQIKdz314WUx1wwoTh98C4zSpeQ  
soEWb21lXUer5N6E.Js4Y5ZJ1pL9GZTWT472xxRA+.SVeIcLUR25seqph6FO  
MKIJeu++dL925E8BM8vnu6x0AsNJ8I98zxf2V2z.fDVbr+JzDj1tqT2OQqzl  
VJLr0zVbS3OnIpIShIz5uzuKNJJzORgWH4wKovP+W3lNQuai0USJlPsq+HpQ  
qqAwOEYhw5W0J1If762rw7nuwe0s3irawGJxnhDd9IY1Piom5rd0umXc+vRx  
htkxeaVEY7Xr3jDACNQCffRUsD2Cay1ItV6aaA763DR9EKgp2Cf.j7exqfgq  
EIiYUgScVXemXSuKV1j.kqx9MH1CFnvQXW62KW.EOyuc6enAXIwL  
-----------end_max5_patcher-----------  

Hi T

Thanks for the patch. I get what you are doing here, but what about the sound sources? In theory, I would have the 4 wfs~ having the same 4 audio inputs for, for example, sound source 1, with this being mirrored and translated for each wfs, so when I move the sound source around they follow the same position in the actual rectangle of loudspeakers. Does this makes sense? Is this the right approach? I tried this approach on a system, and it was sounding super phasy.

Let me know if you prefer checking out my patch, it will take me a bit to tidy it up as I did it super in a hurry.

Regards

Axel

Well, in the approach I proposed, the idea rather is that one source is sent to only one of the four sub-arrays (at a given time).
If the source moves in the scene, it is up to you to “pan” or crossfade the source signal towards the appropriate sub-array.

Having multiple wfs arrays simultaneously fed with the same source would certainly result in phasy mess.

That’s the way we proceed most of the time.

T.