< Back to IRCAM Forum

About moving all the sources relatively

Hello,

Thanks for this new versions.

I have a new project and maybe it’s the right time to try to do something I thought about for quite a long time. And I’m not the first. And maybe it already exists in spat.

I “just” want to move the listing point between sources. I don’t think the program is made for that, but in my case, it would be enough to move all the sources relatively around the head. I could try something in reaper and/or the oscar.xml file. But before, I prefer ask if there is a simple existing solution.

Is there a way to control all sources with only one type of parameter (like “azim”) ? With a kind of broadcast send.

Is there a way to move a (all) source(s) relatively ? Like y > -0.1m for all.

Of course it’s easy for rotations, but not for the translations.

Thanks a lot.
Tschüss

Christophe

Hi Christophe,

There are different options that might help you (but might also be a little disappointing because they dont fully answer your request) :

  • spat5.transform is a good tool for these operations, but it’s not straightforwardly compatible with panoramix (meaning : you have to build a little Max patch)
  • for binaural bus in panoramix, you can rotate the listener’s head (equivalent to rotating all sources) with OSC messages (either using quaternion or yaw/pitch/roll Euler angles)
  • The syntax “azim++” applies an offset to the current azimuth. For instance :
    /track/*/azim++ 30 will rotate all tracks by 30 degrees.
    Similarly with elev++, x++, y++, dist++, etc.

Hope that helps,
T.

It will help ! A lot.

Your third option, used with pooled automation items in Reaper is all I need. It took me 10 minutes to make it works. And I hope it will be easy to use and modify.

I just make some tests and come back soon to explain what I did if somebody else want to try.

Thanks again.

By the way, about my illness to always do everything with only Reaper and Panoramix, a friend of mine send me this :

True…

Tschüss
Christophe

Hello,

For those who love cheese.

  1. Add the ++x/++y/++z parameters in the oscar.xml with small steps like 10cm.
<parameter index="7" name="x++" pattern="/stereo/$1/x++" min="-0.1" max="0.1" default="0"/>
<parameter index="8" name="y++" pattern="/stereo/$1/y++" min="-0.1" max="0.1" default="0"/>
<parameter index="9" name="z++" pattern="/stereo/$1/z++" min="-0.1" max="0.1" default="0"/>
  1. Then create many tracks in Reaper (2 in my example).

  2. On every track, open the automation line (++Y in my case) and create pooled automation items. It means all the changes you will make to one of this items will be applied to all other items. This is the trick.

  1. In the proprieties of one of the items, create a square shape and put the Baseline at 100. Each square move all the sources of +10cm (-10cm if the squares are in minus part of the item). You can use a lot of different shapes, but this one allows you make some predictions. 10 squares/s during 2s > +2m en 2s.

  2. Finally, the different options allow you to make a lot of things and not only linear moves. For example, by using “Freq skew”, it’s possible increase the speed during the movement.

It works great for my needs.
Thanks again Thibaut

Tschüss
Christophe

Thanks for sharing !

Cheese / cheers,
T.

Hello Thibaut,
I have been struggling recently to move all sources together with spat5.viewer, as a group of sources, I would like to concentrate or spread, move in xyz/aed …
Is there a post or a help file on this subject ?
Thanks
Roland

Hello Roland,

Maybe have a look at [spat5.transform], it might be helpful ?
Otherwise, please send a patcher or more information about your intent, so that I understand more precisely your needs.

Cheers,
T.

Hello Thibaut,

I have used [spat5.transform], and it works well, but I keep moving the speakers with the sources and can’t remember, nor find out how to lock the speakers in a position.

In addition, I would like to move my bunch of sources in and out the fiels of speakers using [spat5.pan~] or [spat5.spat]. But of course, I get errors when the listener is not in between them, and I can’t find out the right panning algorithm to enable doing that. I think I use to choose dbap or lbap but I’not sure which one is the right one for 2D.

Is there another way to group sources and to manipulate various groups of sources with position, size, distribution…

Best regards
Roland
Clicker-spatTest.maxpat (72.7 KB)

Hello Roland,

I keep moving the speakers with the sources and can’t remember, nor find out how to lock the speakers in a position.

You cannot really “lock” the speakers.
The “/speaker/[index]/editable [bool]” only prevents them from being edited with the mouse; but they can still be edited from OSC messages.

Anyway, for your use case, I’d suggest to simply filter out the messages after [spat5.transform]. See the attached patcher below.

I think I use to choose dbap or lbap but I’not sure which one is the right one for 2D.

DBAP could work. Alternatively you can also use KNN (which is fairly similar to DBAP, but slightly more flexible).

Is there another way to group sources and to manipulate various groups of sources with position, size, distribution…

[spat5.boids] for example ?

Hope this helps,
T.


----------begin_max5_patcher----------
635.3oc4VErbZCCD8r4qPiN1gRrkgDbO09cjjgQ1r.JwVxijLPal7u20RBvs
wDHYH4P6ArPqVoc229zy9oAQzb0VvPIeibKIJ5oAQQNSsFhByinU7sEkbiyM
ZgppBjV5P+ZVXq0Y+Q.pI1U.4JipQW.Dtb9t+aHUfwvWhQJrsRgDJTMR2dYA
i4M44kPqkjfEYSkpwVBVWriCVq41hUB4xYZnv5y8IL1n3gjjjItgIwsCo3Dx
8gMIl6RSU9CecJ8vwKj6N8jVaOOXP6igmIXHgM3A9BrvfY3jQJSwHMl9PM59
dXYGjzKRj1acmd75dLK1W29gX2v3t0s+br+rF76fRGF90Gzj8AAMq4ZIuB5f
NqEvFPeK69ifd90IeWHE1MB6Jxcz.zcEla43RorgHZVC7GA8NaSQSkBiEjnM
XtvxQFERbN33W5X9NZucgIuZWXgRZ2WK+PK3kzS1eXi88mT2vMwu69SRBsSZ
XD+xecIYTbu8sfQCeMLeFteLulwsVsHGoklP2Kz9ZyeMVWVPOCj7vMwX2Ztd
+E8xgUyklEJcEsWvlcRHcxz1mYtq8rjSBn8BloWL19wTEWHJQ7jf4TPazyBC
hi9Ie7piIYuA0wa97TGEKkJcGTYOh7FDGeElR16SarOPI8SVW7eZQwrKrlH6
+dMwrKkjH6j7b2tbTi+5yFcoUq8+r78zyPbCehA4PpMGLVgjaEJYGeZeMWqS
8hvmafROm.wt.AJ4bhT1EHPryHNouHN9NFutdMprFb1EBjZ9fR2Nc5P2TgzO
8Z2TMrVrye2seJWiDOKx5Zz9a5audL0uU0bPKaDA1BVbXHcz9VUAjd6qC2si
AOO327GMNrB
-----------end_max5_patcher-----------