Skip to content

imclab/spatosc

Repository files navigation

Spatosc is a C++ library that supports communication with various 3D audio spatializers. 

Developed by SAT Metalab, Societe des arts Technologiques (SAT): http://www.sat.qc.ca

The library can be used to add high-end audio support to game engines, virtual reality systems, and immersive environments. It can also be used to create plugins (AU, VST, LADSPA) so traditional digital audio workstations can be used to design and automate spatial audio effects.

The library communicates with a spatializer over nework protocols such as OpenSoundControl (OSC) or FUDI, which most modern spatializer already support. However, each spatializer will have a different control protocol, so spatosc provides "translators", which convert scene contents into appropriate messages.

Features:
 * Agnostic to loudspeaker setup, using a plugin ("translator") system to achieve cross compatibility between different spatializers
 * Built-in computation of distance effects (gain attenuation, Doppler shift, etc.)
 * Support for multiple listeners
 * Flexible spatialization model, allowing for customization of physical modelling (eg, removal of Doppler shift, exagerated distance decay, etc.)
 * Synchronous mode for simple integration in GUIs
 * Asychronous mode for high-performance systems that already have schedulers or event loops
 * Extensible architecture, allowing for easy development of future translators
 * One monolithic wrapper class for easy integration into any project

Currently supported translators:
 * Basic             The default (full spec) format, works with http://code.sat.qc.ca/trac/pdsheefa
 * D-Mitri           http://www.meyersound.com/products/d-mitri
 * FUDI              The protocol used by Pure Data for netsend and netreceive

Additional translators planned:
 * Binaural          Almost identical to BasicTranslator, but with a separation of the listener's ears
 * SPATDif           http://www.spatdif.org
 * Zirkonium         http://ima.zkm.de/~cramakri/zirkonium

Clients applications which support SpatOSC:
 * SPIN Framework    http://spinframework.org
 * Pdsheefa          http://code.sat.qc.ca/trac/pdsheefa
 * Pdsheefa (iOS)    (please inquire)
 * Unity 3D          Supported with a plugin (code to be published)

Future clients (in development):
 * Audio Unit (AU)   http://en.wikipedia.org/wiki/Audio_Units
 * VST               http://en.wikipedia.org/wiki/Virtual_Studio_Technology

For more information, contact one of the authors:
 * Mike Wozniewski <mike@mikewoz.com>
 * Tristan Matthews <tristan@sat.qc.ca>
 * Alexandre Quessy <alexandre@quessy.net>

Additional Documentation
------------------------

http://code.sat.qc.ca/doc/spatosc/latest

Version numbers
---------------

Spatosc uses the common "Linux kernel" versioning system, where even-numbered minor versions are stable and odd-numbered minor versions are development snapshots.

The micro version indicates the origin of the release: even micro numbers are only used for released archives; odd micro numbers are only used on the Git repository.

A stable series means that the command-line options and the interactive keyboard controls should not change much for all tags whose version number start with the same major-minor numbers. Some new features might be developped in that branch, but each release should be backward-compatible with their ancestor. Releases from a stable series should be use for production. 

In contrast, unstable branches consist of tags which are developer snapshots. They are not expected to be compatible with any other version. Some features might change between different stable branches.


Installing
----------

This library uses the GNU Autotools. It should be easy to build and install it like this:

 $ ./configure
 $ make
 $ sudo make install
gg
NOTE: If building from a git checkout, you should run ./autogen.sh first.

On GNU/Linux, you need to install the following software: 
 * The GNU Autotools
 * liblo-dev


On Mac OS X, you should use MacPorts. Next, install liblo:
 $ sudo port install liblo +universal

On Windows, you must follow the instructions in the build directory.


Documentation
-------------

We use Doxygen to build the HTML documentation. To build it, install doxygen and type:

 $ make html

About

C++ library that controls various 3D audio spatializers

Resources

License

Stars

Watchers

Forks

Packages

No packages published