# Automatic adaption of 2D positions to have sounds moving closer to loudspeakers?

Hello,

I am planning a set which will be played on an acousmonium (loudspeaker orchestra). I plan to use the KNN algorithm (except if there’s a better solution). I am looking for a way to automatically adapt the positions of my sounds to avoid places away from loudspeakers.

In the drawing below grey rectangles represent loudspeakers. The colored curves represent the distances. Red is the closest distance to a loudspeaker or several loudspeakers. Blue is the farthest. For instance, the grey arrow is a typical trajectory. What I want is to transform it to become the purple arrow. This way it would prevent the distribution of the sound on all the surrounding loudspeakers which occurs when the trajectory is at half-course, especially in the green or blue zones.

Is there a feature in Spat5 to address this? Or a simple mathematical tool I could use? In some way, it’s as if each speaker created a gap in a plane and therefore the closer you are to a speaker the lower you are. So, if we imagine that the sound would be like a marble moving on this plane, naturally it would follow the easiest path and would be redirected towards the lowest points as if we were going from valley to valley and avoiding the passes and the high mountains.

Hi,

There is no readily available feature to do so.
However, it should be possible to convert your contour plot to a vector field representation (for instance using Matlab ?). With a vector field, you could then use `spat5.simone` (which is physically-inspired, although not intended to be a rigorous simulation)

Best,
T.

1 Like

Oh, simone seems to be an interesting toolbox. Thank you.

Isn’t it possible to use the positions of loudspeakers set in Spat as attractors directly?

Well yes, but you’d have to do it yourself :
`spat5.simone` uses a dimensionless representation with x and y in [-1 1] range; so you’d need to map/scale your actual loudspeaker positions to the [-1 1] grid.

Best,
T.

1 Like

@tcarpent I suppose the feature to use in spat5.simone is the magnet?

By the way, I can’t find anything about the magnet feature in the reference nor in the release notes. Is there a comprehensive reference somewhere? I especially want to know how to define several magnets as I have several loudspeakers.

1. Does simone require the surface to be divided into a grid?
2. What’s the difference between magnet and attractor?

Hi,

1. Yes, the surface need to be divided into a grid. That’s how the object has been designed.

2a. “attractor” refers to one of the possible operators (there are about a dozen of operators). See the “operators” tab in the help patch. Each cell of the Simone grid has one operator assigned.
The grid of cells/operators affect the way the particles (referred to as “/point”) move in the surface.
The “attractor” operator will attract or capture the particles. (so, probably not what you want in your use case)
The “attractor” operator is depicted by a little magnet icon, which I admit can be confusing… Sorry about that.

2b. The “magnet” is NOT an operator.
The “magnet” is a utility tool that allows you to easily modify the operators assigned to all the cells.
But it does not directly affect the movements of the particles.
There one and only magnet, and it is described in the “magnet” tab of the help patch.

For your use case, I think you could do something just by using the (default) “simple vector” operator.
No need for magnet nor attractors.
You “just” need to populate each cell with a “simple vector”, and properly define their angles and speeds (based on your contour plot).

(and again : Simone was just a suggestion; I’m not saying it would straightforwardly fit your needs)

Hope this helps,
T.

Hello,

Thank you @tcarpent for the information. I am aware of the different kinds of operators. However I don’t understand how the attrractor functions compared to using a set of simple vectors focused with a magnet. Does the attractor capture a particle only if it reaches its position or does it attract from further away (the Attractor is the only operator uncommented in the simone helpfile) ?

Also, besides setting a cell range with an OSC pattern, it would be nice if one could also set a group of celles using a center cell and a radius.

I’ve seen that one can edit a lot with the mouse and modifier keys. May I suggest to add one shortcut to change the type of operator? Shift + cmd/ctrl and mouse wheel for instance.

The current shortcut is to hit “t” to change the type of operator of the currently selected cells.

Great! Thank you!

Particles are only affected by the cell they actually reach.
So, no the attractor does not attract from further away (something I intended to do, but has not been implemented so far).

1 Like