

Ambidec is a program that takes an Ambisonic RIFF Wave file in
B-Format or FMH (Furse-Malham Higher Order Format) and decodes it to
produce a Wave file containing speaker feeds. Such files are generally
suffixed .wxyz or .fmh. By default the feed
produced will be stereo, however a range of speaker rigs are provided
and the user may specify the locations of speakers for custom
rigs.
Provided rig types are:
Microsoft users may be interested in the MN Library Ambisonic Player which not only decodes an Ambisonic soundfile, but also plays the decoded signal live over a speaker rig attached to the computer for a number of rig shapes. Also available are decode equations for a number of speaker configurations along with some discussion of decoding issues.
By default, the output file will be normalised to maximise signal amplitude, however the user can specify a particular gain to save time.
This program allows the user to specify a custom speaker rig. This should be specified in a text file using only numbers and whitespace. Each three numbers are taken to be the coordinate location of each speaker specified in metres from the listening point. For instance the following file describes an equilateral triangular rig:
0.5 0.866025 0
0.5 -0.866025 0
-1 0 0
Speaker locations rather than directions can be given to this program. If speakers are different distances from the listening point then their gains will be scaled accordingly using the inverse square law. Further, delay lines will be introduced where necessary to arrange a coincident image at the listening point. Distances are measured in metres.
For custom rigs without a large numbers of speakers, the system will attempt to choose a sensible set of spherical harmonics for use using a range of criteria. This part of the software is a `work-in-progress' even more than others. Please let me know if the system does anything particularly bizarre for you.
Ambidec is a a self-contained program forming part of MNLib, a set of C++ libraries and programs for audio processing and music. MNLib is designed with portable C++ code for use on Linux, Microsoft platforms and others. Ambidec, MNLib and their documentation are Copyright 1999-2000 Richard W.E. Furse (all rights reserved).
ambidec [options] input [output]
The input is expected to be a .wxyz file or a
.fmh file, a simple four-channel 16bit Wave file in
B-Format with channel ordering WXYZ or a simple nine-channel 16bit
Wave file in Furse-Malham Higher Order Format, the second-order
encoding used by VSpace.
When the input file has a .wxyz or .fmh
suffix and no output file is specified then the suffix will be
replaced with .wav to produce the output file name.
Options supported are:
-c file |
This flag indicates that the program should use a decode matrix for a custom rig specified by the user. The file should contain numbers separated by whitespace and each set of three numbers is interpreted as the Cartesian coordinate of a speaker. |
-d value |
Sets the directionality fudge factor in use. This varies from 0 to 1. A value of 0 will produce a decode matrix with a `controlled opposites' behaviour, also known as `in-phase' for first order Ambisonics. A value of 1 will produce a soundfield which satisfies the `matching' case. A technical discussion describes this in more detail. The default value is 0 and this is suitable for most purposes. |
-f |
Force first order decoding, even for second order files. Selecting this option is not usually necessary. |
-g value |
Select a signal gain. This disables normalisation but speeds up decoding significantly as it is no longer necessary to scan the soundfile to choose a gain automatically. |
-l |
Lists the available rig types. See above for the list of rigs available. When the verbose option is also chosen, speaker directions are listed. |
-o order |
Some B-Format encodings do not use the WXYZ format generally expected. This will not be an issue if you are using VSpace or Space. Available orderings are WXYZ, XWYZ, XYWZ and XYZW. |
-r rig |
This selects a standard rig type for decoding from the list. The
default rig is stereo. To check that the speaker directions and
ordering match your speaker array, run ambidec -lv. |
-v |
Switch to verbose operation. The application provides additional information about what it is doing. This includes speaker locations and decode matrices. |
The author
"Ambisonics" is a registered trademark of Nimbus Communications International.
