ambitools

Ambitools

Ambitools is a collection of tools for 3d sound field synthesis using Higher Order Ambisonics (HOA). Check the demo below:

Ambitools won the Faust Awards 2016 !

From http://faust.grame.fr/news/2016/10/17/Faust-Awards-2016.html

The Faust Open Source Software Competition aims at promoting innovative high-quality free audio software developed with Faust, a functional programming language for realtime signal processing and sound synthesis. The competition is sponsored by GRAME, Centre National de Création Musicale

Faust Awards 2016

The Faust Award 2016 was attributed by an international committee composed of :

  • Jean-Louis Giavitto (IRCAM, Paris, France),
  • Albert Graef (Johannes Gutenberg U., Mainz, Germany),
  • Pierre Jouvelot (Ecole des Mines, Paris, France),
  • Victor Lazzarini (Maynooth U., Maynooth, Ireland),
  • Romain Michon (Stanford U., Palo Alto, USA)
  • Yann Orlarey (GRAME, Lyon, France),
  • Dave Phillips (musician, journalist, and educator, USA)
  • Laurent Pottier (U. Jean Monnet, Saint-Etienne, France),
  • Julius Smith (Stanford U., Palo Alto, USA)

to Ambitools, a set of tools for real-time 3D sound field synthesis using higher order ambisonics (HOA).

Ambitools is developed by Pierre Lecomte, a PhD candidate at Conservatoire National des Arts et Metiers and Sherbrooke University. The core of the sound processing is written in Faust. The tools contain HOA encoders, decoders, binaural-filters, HOA signals transformations, spherical VU-Meter, etc. and can be compiled in various plug-ins format under Windows, Mac OSX, and Linux.

The jury praised the quality and the usefulness of Ambitools: a really useful and technically advanced Faust app and an impressive technical achievement ! Check the demo.

A quick introduction of the different tools available in ambitools

https://github.com/sekisushai/ambitools/blob/master/Documentation/documentation.pdf

Introduction

This tutorial describes how to render the ambisonics signals through headphones via binaural convolution.

The principle is as follows: Instead of sending the decoded signals to real loudspeakers, the signals are convolved with the Head Related Impulse Response (HRIR) of each loudspeakers with both ears and summed to obtain two signals : one for the left hear and one for the right ear.
This techniques allows to use the flexibility of ambisonics to render a three dimensional surround sound scape through headphones.

Figure 1: The virtual source (red dot) is reproduced by ambisonics on the spherical loudspeakers arrays. Each virtual loudspeaker (color balls) radiates a driving signal. The binaural rendering is made by convolving for each loudspeaker the driving signal with the corresponding head related impulse response: between the loudspeaker and the ear (manikin in grey).

The result should be as is you were standing in a spherical loudspeaker array in place of the manikin in Fig. 1.

In addition of head tracking, the movement of your head could be tracked and use to rotate in consequence the ambisonic scene. Thus you would be as the manikin in grey in Fig 1. but free to rotate the head.

Head Related Transfer Functions (HRTF) are the frequency-domain equivalent of time domain HRIR. Since HRTF depend strongly on the head and torso geometry, each HRTF set is personal and the binaural immersion relies a lot on it. This means that if you’re not using your own set of HRTF the result may be not as immersive as if you were really standing in a spherical array of loudspeakers.

HRTF set

For the moment, only one set of HRTF is available with ambitools. This set is taken from reference [1] and it’s under a Creative Commons CC BY-SA 3.0 license the raw content is available here http://www.audiogroup.web.fh-koeln.de

It corresponds to the HRTF of a Neumann KU-100 dummy head in anechoic environment with Genelec 8260A loudspeaker, as shown on Fig. 2. The array we use here is a Lebedev grid with 50 loudspeakers which is able to works for 3D ambisonics up to order 5 [2].

KU100HRIR_1

Figure 2 : The HRTF set from [1] are obtained for a Neumann KU-100 dummy head and Gelenec 8260A loudspeaker.  Credit photo : Philipp Stade

Using Jconvolver under Linux with Jack

Jconvolver runs with a configuration file and associated filters impulse responses stored in wav files. To run the real-time multichannel convolution, follow the following steps:

  • The HRIR set is stored in ambitools in folder FIR/hrir/hrir_lebedev50/. For each virtual loudspeaker there is a left-ear right-ear pair of wav files. For example, 1st loudspeaker pair is named as hrir_1_L.wav for 1st loudspeaker on left-ear and hrir_1_R.wav for 1st loudspeaker on right-ear, and so on.
  • The configuration file is in the same folder: hrir_lebedev50.conf. Open a text editor to replace the line
    #/cd /put/here/your/absolute/path/to/ambitools/FIR/hrir/hrir_lebedev50/

    with the actual absolute path to the folder with the wav files.

  • Once the file is correctly set save it and just run the following command in a terminal in the directory hrir_lebedev50:
    $ jconvolver hrir_lebedev50.conf

    When the convolution has started you should see a jack client with 50 inputs (50 loudspeakers signals) and 2 outputs (left and right headphone channels).

  • Finally, connect the decoder outputs hoa_decoder_lebedev50 to inputs of jconvolver. You can do it manually with your jack connection manager or by the following command in a terminal:
    $for i in `seq 0 49`; do jack_connect "hoa_decoder_lebedev50:out_$i" "jconvolver:In-$((i+1))";done;

    (note that this command can be found in the jack_connect_help file in folder Documentation of ambitools). The outputs of jconvolver can be connected to the outputs of your sound card and listened through headphones. The resulting connections in Claudia (KXStudio LADISH session manage) are visible in Fig. 3:

Connection for jconvolver in Claudia

Connection for jconvolver in Claudia

As in [1] the experimental setup involves a loudspeaker at radius 3.25 m from the center of the dummy head, this value should be reported in hoa_decoder_lebedev50 for near field compensation.

References

[1] B. Bernschütz, “A spherical far field hrir/hrtf compilation of the neumann ku 100,” in Proceedings of the 40th Italian (AIA) Annual Conference on Acoustics and the 39th German Annual Conference on Acoustics (DAGA) Conference on Acoustics, 2013, p. 29.

[2] P. Lecomte, P.-A. Gauthier, C. Langrenne, A. Garcia, and A. Berry, “On the use of a Lebedev grid for Ambisonics,” in Audio Engineering Society Convention 139, 2015.

Fork from github

Alternatively, to get the last updates, you could fork the code repository on github. To do so, download the .zip file here and extract it, or type in a terminal (Linux, Mac) the following command:

$ git clone https://github.com/sekisushai/ambitools

You will obtain a directory ambitools with the following structure:

  • Documentation: everything concerning the documentation (pdfs, including some scientific papers).
  • Faust: everything written in Faust language (all the ambitools plug-ins + some utilities).
  • FIR: Finite Impulse Response filters bank for binaural rendering and spherical microphone equalization filters, to use with Jconvoler, BruteFir, or other fast convolution software.
  • Processing: everything written in Processing language, namely the spherical VU-Meter
  • PureData: everything written in Pure Data (a few sounds generator patches, and playstation-like remote patch to drive Faust plug-ins with Open Sound Control protocol, OSC).

The sub-directories are organized as a src directory where the source code are and a bin directory where the compiled code for various architecture and format are.

To get the last commit, type at the root of directory ambitools (or wherever you forked the github repository) the following command:

$ git pull

Latest News


Faust Awards 2016

Ambitools won the Faust Awards 2016 ! From http://faust.grame.fr/news/2016/10/17/Faust-Awards-2016.html The Faust Open Source Software Competition aims at promoting innovative high-quality free audio software developed with Faust, a functional programming language for realtime signal processing and sound synthesis. The competition is sponsored by GRAME, Centre National de Création Musicale The Faust…

PDF Documentation

A quick introduction of the different tools available in ambitools https://github.com/sekisushai/ambitools/blob/master/Documentation/documentation.pdf

Binaural rendering with Jconvolver

Introduction This tutorial describes how to render the ambisonics signals through headphones via binaural convolution. The principle is as follows: Instead of sending the decoded signals to real loudspeakers, the signals are convolved with the Head Related Impulse Response (HRIR) of each loudspeakers with both ears and summed to obtain…

Downloads

Fork from github Alternatively, to get the last updates, you could fork the code repository on github. To do so, download the .zip file here and extract it, or type in a terminal (Linux, Mac) the following command: $ git clone https://github.com/sekisushai/ambitools You will obtain a directory ambitools with the…