< Back to IRCAM Forum

Spat 5.0.0

Dear all,

We are happy to announce the release of Spat 5.0 for Max/MSP.
Please note that this new version is not backward compatible with previous releases.

Here is a list of some key features:

  • Easy and efficient OSC control. Supports pattern matching.
  • Interoperability with existing tools (o.dot, IanniX, Trajectory Library, Antescofo, ToscA, etc.)
  • Highly optimized GUIs. Revamped for better user experience
  • Thread-safe and efficient message dispatch
  • Fine control and customization of objects
  • Various preset mechanisms
  • Stable and efficient MS Windows implementation
  • Supports Wave-field synthesis
  • Many new tools for: Ambisonics, Filter design, Time Code, Quaternions, FX, Geometrical operations, etc.
  • Large HRTF database available
  • Includes Panoramix and ADMix tools
  • Highly optimized DSP
  • Rich documentation, help patchers, reference pages, etc.

Spat 5 is released as a Max Package, in 64 bit only. Please make sure you run Max in 64 bit mode.

System Requirements:
Spat 5.0 is compatible with macOS 10.7 or higher, and 64 bit Windows OS.
It is compatible with Max 6.1.4 or higher (Max 7 or Max 8). It is not compatible with Max 5 or earlier.

Installation:
macOS :

  1. mount the Spat 5 disk image
  2. copy the content to your Max Packages folder (typically ~/Documents/Max 7/Packages)
  3. launch Max in 64 bit mode

Windows:

  1. install the “Visual C++ Redistributable Packages for Visual Studio 2017”; you can (freely) download it from Microsoft website: https://www.visualstudio.com/downloads/.
    Select “Microsoft Visual C++ 2017 Redistributable” and “x64” and follow the instructions for installation.
  2. unzip the spat 5 archive, and copy the content to your Max Packages folder
  3. copy the following DLL files from the Spat package:
    /dependencies/zlib1.dll
    /dependencies/hdf5_hl.dll
    /dependencies/hdf5.dll
    /dependencies/libcurl.dll
    /dependencies/netcdf.dll
    alongside the Max 64 bit executable i.e.: C:\Programmes\Cycling ’74\Max 7\
  4. launch Max 64 bit

Note that some objects are still in an experimental stage (might not be stable); these are clearly indicated in the associated help patchers.

Please post your comments, questions, feedback in the Spat discussion group.

Enjoy,
T.

Hello T

Je voudrais installer SPAT sur Windows mais pour Max 8 car j’utilise Live 10.

ou dois-je mettre les dépendances ?

Merci d’avance,

…………………………………………………………… jerome

Hi Jérôme,

Assuming you have installed Max8 in the default location, the dependencies should go here: “C:\Program Files\Cycling '74\Max 8”

For Live 10, that would be: “C:\ProgramData\Ableton\Live 10\Resources\Max”

Best,
T.

Hi T,

Oui, tu l’as deviné, mon Max 8 est celui d’Ableton Live 10

Il faut mettre ces dépendances dans le dossier contenant Max (comme toujours) , sur Windows 10 c’est :

C:ProgramData/Ableton/Live 10 Suite/Resources/Max

Hoping it helps !

Hello T

De retour sur Mac, j’ai des erreurs d’azimut avec ce petit device
Quelle est la nouvelle terminologie ?

Merci d’avance,

Best,

…………………………………………………… jerome

PS : je n’arrive pas a joindre le device, je te l’envoie en privé

IrcamVerb.amxd_.zip (3.1 KB)


Hello T,
I’m new to Spat and I need help to start using it as consciously as possible.

  1. Speakers configuration:
    If only the angular directions of the loudspeaker are relevant because in the most techniques the panning rendering does not account for the radius, the distance setup of the loudspeakers is virtual. Isn’t it? Is it only the proportion between distances that matters?
    So, what drives me to choose between different radius values (Cf. spat5.tuto-alignement-1)?
    A different perspective in the spat5.viewer, which allows more accurate movements of the sources through the space?

  2. About that, I did not understand what and where are the objects to create / edit / transform spatial trajectories. Is there something similar to the trajectory controller object ambicontrol in spat5?
    Thanks, bye

Hi norig,

New users are always welcomed! I hope the learning curve is not too steep.

  1. Your understanding is correct. The distance of the loudspeakers is irrelevant for panning. It is only used for the (time/gain) alignment stage.
    Assuming your system is properly aligned (with spat, or via other means), you can choose whatever radius you want: it will only serve as a visual hint.
    Often, people configure spat5.viewer so that the displayed dimensions correspond to the actual dimension of the room/hall they’re in.
    (although this does not “allow” more accurate movements of the sources through the space". The rendered movements are the same)

  2. There is (yet) no built-in trajectory editor. spat5.viewer is the main editor; you’ll find a lot of useful tools in the “Geometry” tab of the “Overview” menu. You can use external tools to create/edit trajectories (e.g. IanniX, Holo-Edit, etc.) You’ll find a couple of web links in the “home” tab. Ambicontrol could be used as well to control spat5.viewer (new tutorial about that in the next release…)

Best,
T.

Hi T., first of all thanks for your previous exhaustive answer.

I’m creating my first patch with Spat5 and I have a doubt about using spat5.speaker.config: can I use it to initialize spat5.oper and consequently spat5.spat? If not, what is the smartest way to use it? Separately from other objects, just to get the coordinates to be set as initialization message for spat5.oper?

Linking these three objects I realized that if I set a number of speakers greater or lesser than the number of outputs attributed in spat5.spat~, this generates errors, but if the number is the same, no errors are generated: in this case, if I need to to create a speakers dislocation different from the default circular one, is this new correctly processed by spat5.spat? Maintaining the correspondence between the number of the outputs in spat5.spat~ and the number of speakers of spat5.speaker.config, is it possible to create more dislocations of the speakers for the same objects spat5.oper and spat5.spat?
Thanks again, best

Hi T., hello everyone, another doubt about speaker.config.: in his maxhelp, delays and gains are routed to spat5.delay and spat5.diagmatrix; is it necessary to use them to process the delay and gain corrections or connecting spat5.speaker.config to spat5.oper is enough? If necessary to use them, in a sound’s workflow ending with spat5.spat~ and then dac~, where should these two objects be inserted? I did not find a complete tuto or help containing all these objects together … swimming in the deep Spat5 pool.
Thank you all, bye

Hi norig,

Response to your first message:

Yes, you can absolutely use spat5.speaker.config to initialize spat5.oper (and subsequently spat5.spat~).
I dont think there is a smart way to use it. spat5.speaker.config is nothing but a handy tool that generates the coordinate messages.

Indeed the number of loudspeakers has to be consistent in the whole chain spat5.speaker.config --> spat5.oper --> spat5.spat~
Otherwise you’ll get error messages.

What do you mean by “speakers dislocation different from the default circular one” ?
You can edit, move and place the loudspeakers where you want (as long as that makes sense for the spatialization algorithm you will use).
Editing can be done with the mouse or via messages. (see the basic attached patcher)

T.

  
----------begin_max5_patcher----------  
1246.3oc6Xs0aaaCE9Y6eED5Y2DQRccOsULf9xJv.1C6gfh.ZIFGlJSZHQkk  
zhte66vKxVN9lbpbvJPCfjonNTmC+9N2X95zIAyUOwaBP+B5FzjIec5jI1oL  
SLw+7jfkrmJpXMVwBJTKWxk5fYt2o4OosyqumoQhFDSpz2yqQpUZgR1IVkPx  
KTsRqrD+jqp4MvmhYD71SKQMuP6rzbB4pvYnnvqhmgvjXyCT3N5S900netha  
MqNCP1tTHq3Z6l.6m7NkT2H9hURLF9JdsxzE2KjK5owzzbiRRROjFm2NetSk  
8+3R1RmY7a0BVUOaQ0p6LlNsJJsRpl+v6vz.ybea5TysYCjYVxaZXK36vLW2  
rhy9Lu9ZPuyAlIaFpaplqYeAEB.IJKD1VvUBbAiIgvEIbuzWzwIm3nDC5Pn1  
eB82VCTtct94Ubm3AACk0HGldRhszSbj4NFaomDROstMji2CjieMPtj+Ovh6  
r1GY0qI7FvJiuxCyWUnj2IVbC9S6PN6StfgAvIwCDfm4uN2viCCzXbl8GB1Z  
IGFoo6AoIcJsg8Hu7VXN3yeKSqqEya0trQSVC3SBXRHkhCDVCu9OgwFqg4z7  
5a4RlOBLz9NKUdtD5gxtsjIaYUUOi.BoDUnT0kBIyXrWjDbwgVOYRjGlcNzg  
WxLbwXpiYw1TbggW3TbgWhTbup7YmfKnYoNt.+1kOill0mLHI6PFmLgVdvH5  
9WpZAp+cEUhhOizJn3NWNCJ0Wh3kBMBJ3i7L.ZkpQXPvFDzE.e3EPNmRLXJ0  
kALuW3AgdICOHtHRb3AiHG0vinnKZG.mnBCAaA1n72NO9LazUVdma+wKqrG+  
8jKe86yp38EsLrCs9dpBG++3hvmhUfrO0GfK5+pCy.iEKXOEBIk3OZvwIgnc  
IAxOLjvNt7L8+h9UX2spU2rIexNPdiXgzj1arFMdzFk5hgnYmf2x2SyK8y0X  
Wls.2KNGsU0l42FkaTs0Ec3SWCwnMZuj2nM8VZN87Fg7xrWhbnJJ+MROwuQ5  
YH3FdDzCFODEMF6njAnn3cziyCjsZ0iPGvdgsp.hnePUadLcl8Qgz8nsfPPM  
+QQm7w1YX0PvhFhTZqcwVOkDE3VppjWKaE1XqolM2TeL3K752zvSaoP8WP5p  
1la+HW15BSgM0cr1J81.w7E2IppJTUNyqeNutjIAt21ksasr2.8lPxifZglt  
TnXZJIwNBFDaZdtCN8qA2snn3n7PhQznDRZTrcTFgFS2pcG+xHazUHN2ogv7  
rvH2HXJLnq9KiIW3RPQRC65rzzwkZkptiRgkluV9VsZQMqTvc8.uct6Yd+nZ  
3suL0WvR.PEcqoue2Zx32cnNzxv6UUkn+TYRSKNFkzu03arMG24yMRlxGi9i  
yU+8yo6NuvVNAGlXBuJKd8x62V9M9FyQFXIX72guBjN7GycpIS62W.9Zm+8G  
uRSShRs6PZVDEa20QuHl6UFpNXz8UEf6ii6wI2w5x5i2hqNf+99nwQmAYOkN  
Dm0eRjiSB4GlO+mv7PiW1DWj+FEV74lJAzvyea5F5X7TOjvcbh92FIawcRr2  
W0xOdNVVQAnfs3FJ13DXXjj0c6j68KFaC7C0bt7rsP6+aoXp4OyHbRFzL1nZ  
b1+kWe.J5c11lAnBsd1w4DbrEGw88rOeCDVy2l9e.o3+0tB  
-----------end_max5_patcher-----------  

Hi again,

Response to your second message now:
Yes, if you want to “align” your loudspeaker setup, you need to process compensation delays and gains.
These delays/gains cannot be processed directly with spat5.spat~ and spat5.oper (for the record, that used to be possible in spat v4).
They can be processed with spat5.delay~ and spat5.diagmatrix~. These objects would have to be inserted after spat5.spat~ and before the dac~.
Another (easier) solution is to use spat5.align~. Internally, spat5.align~ is nothing but the combination of spat5.delay~ and spat5.diagmatrix~.
You can see a basic example of that in the spat5.tuto-basic-5. Other informations in the “2” tab of spat5.tuto-alignment-1.

Good luck,
T.

Dear T., thanks again for your very useful clarifications.
I have also successfully put ambicontrol~ (and its ambimonitor) in communication with spat5.viewer.

Now I’m looking for a way to move two grouped signals in space, as you can do in Panoramix. For example, in Panoramix you can place two sources in correspondence of two speakers, group them together, and move them while maintaining their initial “stereo” configuration. Is it possible in spat5? What are the best ways to handle stereo (dual mono) signals while keeping their internal angle unchanged?
Thank you, best

norig

Hi norig,

At the moment, there is no built-in “group” nor “stereo source” in Spat.
You have to build it yourself (with a little piece a patch you can “link” two sources together); it’s possible and not too difficult.
That said, I am definitely working on new features to simplify such use cases (stereo sources, and more generally group of any number of sources).
Hopefully this will be released in the coming weeks. Stay tuned.

Best,
T.