LAmb - Live Ambisonics

Dylan Menzies-Gow developed a number of programs to allow the live manipulation of Ambisonic sound on a Silicon Graphics Indy computer. These machines have four channels of audio input and output, so are ideally suited to Ambisonic B format work. Dylan described and demonstrated this at MediaMix96. He won the Software Prize at GMEB 1997. Download

LAmb 0.91: Live Ambisonic MIDI System

Copyright Dylan Menzies-Gow February 1996

Graphic diagram of sound processing in LAmb

This system can be controlled almost completely with a standard 5-octave MIDI keyboard. V0.91 can additionally be used with the joystick of a Korg M1, or the pitchbend and mod wheels of a standard keyboard. The SY22 version makes use of the superior joystick and the mod wheel.In V0.91 all MIDI is received on channel 16. The MIDI adaptor should be attached to serial port 2 of the Indy.The B-format output is in the order W,X,Y,Z from output lines 1,2,3,4. (3,4 come from the headphone socket.) There is a decoded-output version inwhich lines 1,2,3,4 should be fed to an array of 4 inward pointing speakers, ordered clockwise.

The various ambisonic parameters can be controlled in a variety of ways. Two reasons:

Mono Location

LAmb can give the impression of moving a sound towards and through the listener. There are three modes of controlling the location of each mono input just using keyboard keys. The default is position mode. Modes can be selected with 'mode keys'.

Position mode :

When a 'position key' is hit, the current position of the sound moves towards the position represented by the particular key hit. The speed of movement increases with the velocity of the key-hit. The positions can be set with controller messages. There is a cubase mixer map available for doing this.

Cartesian cursor mode :

Six 'cursor keys' can be used to nudge the postion from its present. Nudge size increases with key-hit velocity.

Cylindrical cursor mode :

Same as cartesian cursors but using cylindical coordinates.

The Joystick

The M1 joystick defaults to controlling cartesians. The 'joystick grab keys' can be used to assign the joystick to one of the 4 mono inputs. Grabbing in cylindrical cursor mode makes the joystick x map onto phi and y map onto r of cylindrical coordinates. The +-z cursor keys can be used with the joystick if desired. In the SY22 version the mod wheel can be used to control z. The 'feel' of the joystick is fixed: In future versions it may be changeable. The release-joystick key is useful for freezing a position or overiding joystick jitter.

Soundfield Rotation

LAmb allows full 3-degrees-of-freedom rotation of the soundfield. The rotate cursor keys can be used to nudge the rotate parameters in the same manner as the locate cursor keys. If the 'rotate joystick grab key' is pressed the joystick controls phi and theta., the mod wheel controls eta on the SY22 version.The +-eta cursor keys can be used to control eta at the same time.

Sample Playback

A simple multi-voice sample playback routine, for mixing in 4-channel B-format soundfield samples recorded with a soundfield microphone or created artificially with eg Csound. Samples are loaded automatically at the start from the local directory: Use filenames lamb1.B.aiff lamb2.B.aiff etc.The assignment of samples to keys, eg for repetition of samples, will be assignable in future versions.

Keyboard Layout

The layout has been carefully designed to fit snugly onto a 5-octave keyboard. The first four octaves control location of the 4 mono inputs: The remaining keys of the octave depend on the current mode selected:

Position mode :

Cartesian cursor mode:

Cylindrical cursor mode:
As above with phi, r replacing x, y

The fifth octave is as follows:

Soundfield Delay

The multitap delay function is the one function which cannot be directly controlled from the keyboard. The simplest way is via a mixermap on a sequencer such as the one available for Cubase. The Controller details are given below. Because this is a soundfield delay, it can be used to fill a space with the 'trail' of one source. The structure of the delay is flexible enough to allow different a variety of different rhythmic gestures.

MIDI Controller Specification

If accessing the MIDI control data directly here are the details. In addition to carts and cyls you can send polar coordinate informa tion,and W signal multipliers

Methods Of Working

Using Cubase, spatialisation can be syncronised with synth sequences. Spatialisation could be done one track at a time: the joystick can be assigned to different audio lines using the joystick grab keys. If working completely live , the position keys provide a good reference if you get lost. Using the freeze keys to fix a position is likewise helpful. Try labelling the keyboard, initally anyway. Reverb can easily be added externally: Feed a mix of the mono inputs into a reverb unit, and mix the output into the W signal output. This ensures a constant background reverb level which is masked out as the source approaches.

Using symbolic links is a good way generating the standard 'lamb' filenames, which point to your original soundfiles. Put LAmb in your command path so that you can create separate directories of soundfiles and launch LAmb from inside these.

Cautionary Notes

To minimise processing time, LAmb only activates a particular function once suitable midi note or controller data has been received. In particular soundfield rotate soaks up a lot of time. The Indy is notorious for plunging headforth into obscure disk and network management routines at random intervals (if you are a Unix guru, or have access to one, these can be re-scheduled to more convenient, less disruptive, times). These can have a big impact on processing power available so it is wise to keep things as simple as possible.

Known Bugs

There is an intermittant problem with clicking on snapshots in the Cubase mixer map page. Sometimes the MIDI buffer overloads and the correct values are not received. This will probably be cleared up in future versions.
Last updated (Web-ised from Dylan's Postscript file for version 0.91 - on Dylans page he is up to 0.96) by Dave Malham. Monday 10th March 2003
If you have any suggestions, comments or requests you can reach me at

Click here to return to Music Technology Group Welcome page

Click here to go to the Department of Music welcome page