Human perception is capable of astounding feats of sensitivity in localizing sound – it is very likely an evolutionary trait. Yet musicians rarely tread beyond simple stereo, perhaps because it’s tough to be creative in space without something that’s visual and intuitive, something that looks like what you’re hearing.

Spatium is an extraordinary set of tools for sound spatialization, built in [graphical patching language] Max/MSP and [creative code environment] Processing. It’s free and open source, a set of modules anyone can use to manipulate sound in space or as the basis of their own tools. Portugese artist and developer Rui Penha, who built these as part of his dissertation research, explains:

[Spatium] are a set of free, open source and modular software tools for sound spatialization, comprised of spatialization engines, spatialization interfaces and plugins.

The interfaces are basically Processing sketches that send OSC, so they can also be useful for other purposes. Also, the plug-ins are basically OSC automation recorders, so they can also be useful if you want to write OSC automation along the audio on your sequencer tracks.

This is a research project, not a commercial endeavor, so for now the tools are Mac-only and you’ll probably want a bit of experience before you try to set them up. But Rui has prepared some very nice videos. And you have a number of ways you can use these tools: as Max patches, as Processing sketches, as interfaces for other tools (even visual as well as sonic, it seems), and even as plug-ins. In fact, if you read between the lines above, you may already have worked out that these could be powerful OSC automation and sequencing tools for a variety of applications (hello, visualists).

Here’s an overview of what the tool set can do:

spatium.overview from Rui Penha on Vimeo.

And since this is not only an exercise in tool-building, here’s a beautiful performance work that uses the system:

pendulum from Rui Penha on Vimeo.


for flute, bass clarinet, piano, violin, cello, electroacoustics and video, both generated in realtime.
The video is following the piano events and controls the spatialization of the electroacoustic part, using the upcoming ‘spatium’ software. The video is done in Processing and the audio in Max/MSP, with sounds from a Continuum fingerboard. The original audio is for an hexaphonic loudspeaker setup, here a stereo mix down. Also, the original video was 50fps and the movements were much clearer, but I had to upload a 25fps version due to vimeo limits.
Live recording by Sond’Ar-te Electric Ensemble – Sìlvia Cancela (fl.), Luís Gomes (, Joana Gama (pno.), Suzanna Lidegran (vln.), Nelson Ferreira (vlc.) and Guillaume Bourgogne (conductor) · at Goethe-Institut Portugal, October 2012.

Seeing this work is nicely serendipitous, as I was just yesterday attending a lecture by London-based artist Memo Atken as he presented, among other works, his Simple Harmonic Motion series. To me, these kinds of connections make work stronger – for all the fear of “someone else has done that,” it seems people should be more concerned when people aren’t working in similar directions.

Simple Harmonic Motion study #2a from Memo Akten on Vimeo.

And that brings us full-circle to the importance of this being free and open: to make spatialization a richer component of musical output, you need to share. You need other musicians and composers working with spatial media in order to more regularly program that music, whether we’re talking clubs, galleries, or concerts. You need to better develop musical techniques to make these expressive. And you need people sharing ideas and interfaces in order to progress. Absent commercial models for funding development, you may also need to share free tools with one another just to get the tools the maturity at which they’re most useful. So, free development is a great place to start – and it’s a pleasure to get to spread the word, having talked to Rui for some time about this long-term work of his. Let’s go have a play, shall we?

You’ll find videos of all the different tools at the official site, including downloads and source.

  • Jef T-scale

    this is great but how do i use or install a .bundle plugin on osx?

    • Rui Penha

      just copy them into your /Macintosh HD/Library/Audio/Plug-Ins/Components folder, and they should appear on all your Audio Unit – capable applications.

    • Jef T-scale


  • Jef T-scale

    this is great but how do i use or install .bundle files on osx?

  • Nikola

    This is great! Thank You!

    While using it with Live the first channel is stuck on azimuth 0, though. Even when using /spatium/* as the OSC address. I will investigate and get back here if I found why.

    • Nikola

      It appears I just don’t get how to setup the system in Live. If i use the AU plugin on a track it just takes over the control of the azimuth etc. for this track, and doesn’t take further changes from interfaces of spatium.ambi, and keeps the values i have drawn in live.

    • Rui Penha

      I’m not sure I understand what is the problem, but before any plugin starts sending OSC, you need to play and stop live, so the audio processing is started. To control the plugin using the interfaces, you need to activate the ‘midi’ tab of the interface (not the ‘osc’) and then configure live to control the plugin with the Midi CCs the interface is sending (by default, 110 for azimuth, 111 for elevation and 112 for radius). Hope it helps!

    • Rui Penha

      Also, you need to activate the system’s IAC Bus in the Audio an MIDI setup. Forgot about that when making the videos (ups), going to add that to the spatium.plugin video…

    • Nikola

      Thank You for Your time. I have IAC bus activated and monitored by Live, but the midi signal doesn’t go in. I have different language set up, maybe the name of the bus is hardwired somewhere? It’s somewhat unsettling that the MIDI device chooser is nowhere to be seen in the interfaces :)

    • Rui Penha

      Ok, that maybe the problem. If Peter doesn’t mind us doing some minor debugging on his website ;), could you please try this test version – ? Its midi pane now let’s you select the midi interface, the midi channel and the azimuth CC (the elevation will be this +1 and the radius +2). If this works I’ll make this Midi menu for all the interfaces and re-upload them tomorrow.

    • Rui Penha

      (I will delete the test version linked here, please see the reply above and download the new versions of the interfaces at the website.)

    • Rui Penha

      Hi again! I exchanged a few emails with another user who was having the same problem, and the test version below solved it. So I updated the midi pane on all interfaces and uploaded the new versions. You can download them from the spatium webpage and see the differences on the latest post at . Thanks!

    • Nikola

      That is stellar, this of course have fixed the problem. Now I can choose which IAC bus to use and the signal flows to Live nicely. Thank You, this is very useful.

  • Embers_

    Brilliant work. Thank you very much!

  • Richard Eigner

    Can’t wait to try these out!!!

  • Rui Guerreiro

    Hello everyone, I was just trying to set this baby up, but I’m having some trouble. Maybe I’m missing something. So I have spatium.ambi opened and the spatium plugin in an audio track in Live set to send audio to the spatium app through Soundflower. I’ve set up the spatium app audio settings to receive from Soundflower, and I can see signal going in to the app on channels 1 and 2. I press play in Live, move the controls of the plugin, the values of azimuth, elevation and radius of the app move along, but nothing happens in the audio :(
    Can anyone spot what I’m doing wrong?
    Thank you so much!

    • Nikola

      do You have IAC bus set up in the MIDI Audio preferences? do You have channel input on on spatium.ambi? Do you have audio out properly configured in spatium? That seemed to work for me

    • Rui Penha

      Hi! Do you have spatium.ambi and Live enabled in your Firewall? Or port 11475 free? The software uses the network interface to connect, please try turning your Firewall off and tell me if it did work that way.