Using Ambisonics With Ardour

Using Ambisonics with Ardour

There is significant interest in using ambisonics these days. Predating the "modern" surround systems known as "5.1", "7.2" etc, ambisonics is a technology for positioning sound in a 3 dimensional space. Instead of making assumptions about speaker positioning, the audio engineer simply defines where he wishes a particular audio signal to originate, and ambisonics encodes this into the signal (to produce a signal type called "B-Format"). The signal eventually arrives at a decoder that knows about the specific speaker configuration in use, and does some fairly heavy duty mathematics to process and distribute each signal so that it appears to be positioned correctly. This means that you can take an ambisonically encoded session and play it back on 4, 8, 12 or any number of speakers without re-panning it. Ambisonics is not perfect, and there are still no really good decoders to map B-Format to the 5.1 configurations so beloved of home theater owners. But it is a truly powerful system and ultimately much more useful than 5.1/7.2 etc. Ardour is uniquely positioned to allow you to to use it much more easily than most other DAWs.

Preparation/Requirements

You will need:

  • modern version of Ardour
  • JACK
  • Fons Adriensen's ambisonics plugin package
  • Fons Adriensen's ambdec decoder

The last two can be downloaded here.

You will need to make a decision whether you are going to use 1st order or 2nd order ambisonics. The software you will be using does not support full (9-channel) 2nd order, but instead supports (6 channel) 2nd order horizontal/1st order vertical (2h1v) encoding and decoding.

Procedure

The basic idea is that you are going to avoid using Ardour's builtin panners entirely and take advantage of the fact that the B-format signals in Ambisonics look exactly like a normal audio stream. This means you can use all the normal routing facilities of Ardour and JACK to get them where they need to be. If you actually sent them to your speaksers directly, it would sound rather odd, but as long as you first deliver them to an Ambisonics decoder (e.g. ambdec) the final result is just what you expect to hear.

  1. Start JACK
  2. Start Ardour
    • In the New Session Dialog, expand the Advanced Options section
    • Increase the master bus channel count to either 4 (for 1st order) or 6 (for 2h1v)
  3. Make sure that the editor mixer strip is visible (Shift-e) or the mixer window (Alt-m)
  4. Add a mono audio track, and insert a plugin or audio region that will generate some sound (the CMT whitenoise plugin can be used for testing)
  5. In both the audio track and the master bus, disable the panners (right click and select "Bypass")
  6. In the bus, disconnect its outputs (click on "Output" and select "Disconnect all")
  7. In the audio track:
    • for 1st order, add Fons' ambisonic 1,1 panner plugin (better named 1h1v)
    • for 2nd order, add Fons' ambisonic 2,1 panner plugin (better named 2h1v)
  8. Start ambdec
  9. Click on "Configure" in the ambdec GUI. In the configuration window, click on "Load"
  10. Pick the correct speaker configuration, click on "load" when done.
    • These notes assume that you pick a "0v" (no vertical component) configuration
  11. In the configuration window, click "Apply"
  12. Connect Ardour's master out as follows:
    • out1 -> ambdec:in0_w
    • out2 -> ambdec:in0_x
    • out3 -> ambdec:in0_y
    • For 2nd order, make these extra connections:
      • out5 -> ambdec:in0_u
      • out6 -> ambdec:in0_v

Control

To pan the single mono sound source, double click on the ambisonic panner name in the mixer strip. The plugin window contains two control: azimuth (direction) and elevation.

Adding More Sources

For new sources, just add new mono tracks, and add the relevant panner plugin to each one, after bypassing the builtin panner.

Making it easier next time

Ardour allows saving and using both session templates and track/bus templates. Once you have one ambisonics session set up with a representative number of tracks established with the relevant panners, you can select Session -> Save as template to create a new session template. Then, the next time you need to create an ambisonics session like this one, select the template in the New Session dialog. Just make sure you have ambdec already running so that the output connections can all be established.

You can also right click on the track name at the top of the mixer strip, and select Save as template to create a new track/bus template. That way, the next time you want to add a new ambisonics-encoded track, you can just select that template from the Add Track/Bus dialog, and the plugins and panner configuration will already be setup for you.

Further Reading