Bdec3 Programmable Third Order Ambisonic decoder

Original code by Dave Malham

The decoder is designed to take Ambisonic B format signals up to third order and to decode them to any reasonably regular array of up to sixteen speakers. Note that by using the diametric pairs approach, this can be extended to 32 if you have spare output channel (and a suitable external mixer) available to send out W separately without sending it to BDec3. Later versions will feature more control over the per-speaker decoding equations so that you can at least attempt to get irregular arrays to work better. It currently has controls for the azimuth (in degrees anticlockwise from due left) and elevation (in degrees up or down from the median horizontal plane) for each speaker and overall controls for the amounts of zero, first, second and third order spherical harmonic signals being fed to the decoder. It has no controls for setting delays or gains either individually or jointly, since these can be provided by externally by other devices. They will be included in future versions.

The first four inputs are grouped together and are the standard first order inputs in W,X,Y,Z order, exactly as in the first order plugs. The next five inputs are the second order inputs in the order R,S,T,U,V and these channels correspond to the Furse-Malham standard for second order. The final seven inputs are third order, designated K,L,M,N,O,P,Q. These channels form a logical extension to the definitions given in the Furse-Malham set and follow the convention called MaxN, (Maximum Normalisation), as given in Jérôme Daniel's doctoral thesis (see Table 3.1 on page 151 and Table 3.3 on page 156). This standard is not ideal from the mathematical point-of-view but is best from the engineering standpoint since it sets gains so that each channel will have a maximum signal level of +- 1.0, ie, it won't clip but it does make the optimum use of dynamic range. Note that this is slightly different, because of a change in weighting factors, from what I previously published. The plugin can be used in first order only, second order or third order modes, simply by using only those inputs which are appropriate for the order in use. The input ordering corresponds exactly to that used in the BPan3 panner so interconnection is relatively easy.

Setting levels of the differing components...

I'm afraid this is where you are going to have to experiment to find the appropriate levels for your speaker array. I did say this is early days, hence the Alpha status. Do let me know what you come up with. Note, the following, though;

Getting round the 8 bus limitation in Nuendo

Here's how to use the decoder if you only have one set of 8 buses available, as in Nuendo 1.5. The current decoder version should be able to store up to 32 speaker layout programmes. You'll need to set up two (or more) if you need to go to more than 8 speakers. The first programme should have speaker settings 1 to 8 programmed with the locations of the first 8 speakers in your speaker rig (you can just leave the other 8 outputs at their default settings, since they have no effect on the first 8). Set up a second programme with speaker settings 1 to 8 programmed with the locations of the next 8 speakers in your speaker rig, again ignoring the other 8 outputs. Run your mix out to a file through the decoder on programme one, then run it again to a second file, but this time using programme two on the decoder. This process can be repeated as many times as you like, for as large a rig as you like.

Last updated on Monday February 24nd, 2003