Swiss Center for Computer Music logo
Hochschule Musik und Theater Zürich logo

Hochschule für Musik Winterthur Zürich

VST Ambisonic Tools

Powered by Steinberg's VST technology

Bpan - the Ambisonic Encoder

Original code by Dave Malham

The BPan Ambisonic encoder comes in four basic forms, any or all of which can be installed as VST plugins in a compatible host such as Steinberg’s Nuendo, Audiomulch, Plogue Bidule, Tracktion and so on. There are two variants without a custom Graphical User Interface (GUI) of their own, relying on the host's own interface and two variants with their own GUI. The GUI-less and the GUI-based forms are each configured as either ordinary send effect plugins or as spacializer plugin. Why all the different variants? Because each has its own advantages for different ways of working. The GUI-less versions offer immediate access to all the parameters, using the host's own interface (usually sliders) . This gives much more flexibility (at the cost of ease of control) than the GUI-based versions which, on the other hand, present the more frequently used parameters in an easier to use form with the other parameters available only through setting automation.

Separate send and spacializer versions are present because spacializer plugins can't usually be used as mixer send effects. Send effects have the useful property that you can put them before or after the fader on the channel, which allows you, for instance, to send different levels of signal (controlled by the fader) direct to the mix and via the effect. On the other hand, spacializer plugins can be controlled, at least in the case of Nuendo, by the host's own surround panner interface, at least the small one on the channel strip (but not by the interfaces built into Surroundpan). Note that in Nuendo 1.x at least, neither type can be used as an insert effect since the channel strips do not allow plugins with more than two inputs or outputs, nor can it be used for 'offline' processing.

On Windows systems, the files corresponding to these different variants and the locations they should be copied to in a default Nuendo installation are as follows;

BPan_e.dll C:\Program Files\Steinberg\Nuendo\vstplugins
BPan_e_gui.dll C:\Program Files\Steinberg\Nuendo\vstplugins
BPan_m.dll C:\Program Files\Steinberg\Nuendo\vstplugins\Surround
BPan_m_gui.dll C:\Program Files\Steinberg\Nuendo\vstplugins\Surround

As noted in the table above, some versions make more sense in the 'surround' folder, but it is not essential, just so long as Nuendo can see them. The Apple Macintosh versions should be dragged into the library/audio/ plugins/VST folder. They have the same names as the Windows versions, but without the .dll extension on the end.

The B format signals generated by these plugins are routed to the standard Nuendo output channels as follows, again, assuming that you have a four (or more) channel sound card;

W left - output 1
X right - output 2
Y surround left - output 3
Z surround right - output 4

assuming you have set up the master outputs as a 'quad' system.

The GUI-less versions, BPan_e and BPan_m

When BPan_m is selected from the surround menu, clicking on the miniature panner image on the channel to open the editor window brings up the following display (Nuendo -  but please see the note at the end)

screenshot of the non-gui version of BPan

As you can see, there are a lot of parameters! The send effect version has, in fact, four fewer (the first four) but is otherwise identical.

The parameters and what they mean....

"L_R Pan" L-R Pan parameter from the position of the dot on the miniature panning image
"F_B Pan" F-B Pan parameter from the position of the dot on the miniature panning image
"PanAngle" The angle of the dot from centre front in degrees anticlockwise. Note that this is for display only and cannot be set from here. Ignore the slider.
"Mirror Type" Selects the different modes of interaction between the panning image position and the following individual controls
"Left Az" Azimuth of left channel from centre front in degrees anticlockwise. (default 0)
"Left El" Elevation of left channel from horizontal. +90 is due up, -90 is due down. (default 0)
"Left Centre" Size of the centre region of left channel on an arbitrary 0.01 to 10 scale (default 1.0)
"Left Vol" Volume of left channel (default -6dB)
"Left Dist" Distance of left channel from the centre on an arbitrary 0 to 10 scale (default 1.0)
"Left DFact" Distance factor of left channel - sets volume decrease with distance (default -4.5dB)
"Left Zero" Level of the zero order spherical harmonic (W) of the left channel (default 70.7%)
"Left First" Level of the first spherical harmonics (XYZ) of the left channel (default 100%)

Except for the first four parameters, which are common to both left and right channels, the parameters all have right channel versions which are not shown in this table.

The following gives more detail on some of parameters.

Mirror type;

This function is only available on the master spacializer version (BPan_m) . The following settings are possible
Number Name Function
0 No Pan In Nuendo, the Nuendo panner interface in the channel strip is inactive, control is done by the controls in BPan only.
1 Stereo In Nuendo, the panner interface in the channel strip is functional with the left and right azimuth controls in BPan acting as ‘offset' controls to the angle set in the panner interface. Only the Bpan controls for elevation, volume and spherical harmonic level function as in the BPan_e version.
2 Y Mirror The panner interface in the channel strip is functional but only the Bpan controls for elevation, volume and spherical harmonic level function. The left channel is placed at the pan angle. The soundfield is effectively divided in half by a line drawn font-back through the middle and the righthand signal is placed in an equivalent position in the opposite half of the soundfield.
3 X Mirror The panner interface in the channel strip is functional but only the Bpan controls for elevation, volume and spherical harmonic level function. This time the soundfield is effectively divided in half by a line drawn left_right. The left channel is placed at the pan angle and the righthand signal is placed in an equivalent position in the opposite half of the soundfield.
4 XY Mirror The panner interface in the channel strip is functional but only the Bpan controls for elevation, volume and spherical harmonic level function. The left channel is placed at the pan angle and the right is placed diametrically opposite it.

Note that, if you have Nuendo and you are confused by the descriptions of the effects of the different mirror settings, activating the full interface to its own surround panner by clicking on the miniature panner interface in the channel strip will enable you to see how they work, since the functions of BPan's mirror control is modelled on that of Nuendo's (except for No-Pan).

Distance, centre and distance factor

Distance, centre and distance factor all interact to determine the amplitude-distance profile. When distance and centre are equal, the sound is panned &quoton the surface of the unit sphere&quot which means that, on decode, the sound will seem to come from the distance of the speakers (unless, of course, you alter things with reverberation). In this state - and if the &quotZero&quot and &quotFirs&quot parameters are set to their defaults - the amplitudes of the signals in the four B format channels will follow the Ambisonic laws exactly, changing only with settings of the azimuth and elevation controls for the particular channel. If the set distance is less than the value of Centre, then the first order components (X,Y and Z) start to drop off, reaching zero at the centre, but the zero order component (W) continues to rise to a peak at the centre so that the sound seems to come from everywhere (or nowhere) and is louder, As distance increases beyond the central zone, levels of all four components starts to drop, as would the loudness of a real sounding object moving away from the listener. If it were a point source of sound, this drop off would be at the rate of 6dB per doubling of distance, but real objects are not point sources, so the factor can be set in the range 0 to -6dB per doubling. For instance, if Centre is set to 1.0 , the distance factor to -3dB and the distance to 2.0, the overall level will be 3dB down on the level on the 'unit sphere', at distance = 2.0, the level would be 6dB down and so on. The Centre is made variable to allow the user to choose precision for close sounds ( with high settings of Centre) or greater range of distance setting (with Centre set small).

Spherical harmonics controls

The normal Ambisonic rules set W at a gain of 0.707 with respect to the first order spherical harmonic components, X,Y and Z. It should usually be left at that. However, by “breaking the rules” and decreasing the first order components a little, the source can be made to seem more diffuse or, in other words, a little larger than the nominal point source. This is not a perfect object modelling system, but it is provided to allow flexibility.

The GUI-based versions, BPan_e_gui and BPan_m_gui

When BPan_m_gui is selected from the surround menu, clicking on the miniature panner image on the channel to open the editor window brings up the following display (Nuendo)

screenshot of the non-gui version of BPan

Here you can see there is a much simplified set of controls with all the other parameters being set to their default values. In this screenshot, the right channel volume is set to off, so only the left channel is actually being processed. The mirror mode is stereo (selected by the buttons in the centre of the GUI window), the miniature panner is set to centre front and the left channel is shifted almost (but not quite) 45 degrees to the left with the azimuth knob in the GUI window. The resulting levels can be seen in the output channels. One thing to note is that the knobs are rotary encoder types and can be continuously rotated - they have no end stops! There are a number of different possible knob modes which can be set in Nuendo's 'Preferences' dialogue. Circular, Linearand the very useful Relative Circular mode, in which you can click anywhere on the control and the knob does not jump to the new position, but instead can be dragged around. This mode is also available when the knob is set in Circular mode by holding down the 'Alt' key when clicking on the knob. In Linear and in Relative mode, the alt key puts you into circular mode. This is not remembered by the interface, so you have to do it each time. Please note that 'normal' Nuendo knobs go into linear mode if you hold down the 'Alt' key when clicking on the knob. Note also that you have to close down and re-open the gui to get it to see the new mode when you set this in Nuendo's preferences dialogue.

The send effect version, BPan_e_gui, has an identical GUI window and works in essentially the same manner except for the omission of the selector buttons for the type of mirror, since the mirror function is not supported in this variant.

For use in Nuendo 1.x and above.

However, please note that Nuendo 2 has some really annoying problems as a result of a bug in its handling of spacializer plugins other than its own SurroundPanner.

Using the plugins in Nuendo 2

To use the effect (-e, -e_gui) versions in Nuendo 2, you will need to set up effect channels which route to output buses with 4 (or more) channels, then just proceed more-or-less as before. Similarly, for the master spacializer (-m, -m_gui) versions you will need to route the outputs of the channels you want to use them in to output buses with 4 (or more) channels. You can then use the panners by right clicking in the mini panner window in the channel strip and you can select the one you want to use by left clicking on it. Unfortunately, this is not the whole story, because it appears that Nuendo 2 may not properly implement the VST protocol on the panner socket. If, after using one of the Ambisonic panners (and, actually, any panner than Nuendo's own) you then go back to Nuendo's standard surround panner, you will find that the surround editor has lost track all of its speakers. This can be rectified by changing the output bus routing to go to just one of the output channels, then by changing it back again. That is annoying, but worse is to come - if the project is saved with a non-Nuendo panner open, when the project is re-opened, the non-Nuendo panner's parameter labels don't come up the first time but instead they are replaced by those of Nuendo's own surround pan (if it's non-gui) or with the GUI of Nuendo's own surround pan if it was a gui based panner. This is because despite the fact that the name at the top of the panner's editing window is correct (BPan, or whatever), the actual code Nuendo is running is that of it's own SurroundPanner. You can solve this in the same way by cycling the output bus, but having to do that on every channel that uses a non-Nuendo panner can get very tiring and ther is another, more drastic solution - re-name Nuendo's SurroundPanner to SurroundPannerN2 or some such similar name. Of course, if you have SurroundPanner based projects, this will screw them up and you will have to re-edit them to use the newly re-named panner.You'll still find that if you swap from any third party panner, including these ones, to SurroundPan (even if it is now called SurroundPanN2), SurroundPan will lose all sense of what speakers it should have, but that can be fixed by the trick of  cycling the output bus

Using the plugins in Nuendo 3

I have been told that these problems are fixed in Nuendo 3, but as of May 20th 2005 I have not tried this myself.

Note at the end

The images used for the default gui plugin, BPan_m, are actually from the earlier version, prior to the update. They have been retained for clarity only, as in the new version of BPan_m there are a number of extra parameters which appear when running in Nuendo only - they do not appear in other hosts and the parameters shown in the pictures used are as they would appear in Tracktion, Bidule, Audiomulch and so on. The reason they appear in Nuendo is because they are Nuendo's defaults for surround panners and if you try to re-purpose them strange things can happen. To avoid this, when the new version of BPan_m (and BPan_m) is instantiated and finds itself operating in Nuendo, it chooses to display a set of extra parameters corresponding to Nuendo's defaults. They are all, with the exception of L_R Pan, F_BPan and Mirror (which are also Nuendo parameters), dummy parameters and don't do anything. (Note that there are different numbers of these dummy parameters in Nuendo 1 and Nuendo 2). Although this is annoying, it is less annoying than the strange interactions that happened with earlier versions. However, as users of Nuendo may already have significant numbers of projects using the old version without the extra parameters, an additional set of plugins, with a _ob tag in the name, are provided as a service. The _ob tag denotes that they exhibit the old behaviour without the extra unused Nuendo specific parameters. You should install one or the other set, not both. It is recommended that you ONLY install the _ob versions if you are a) using Nuendo and b) unable to re-edit the automation in your old Nuendo projects to accommodate the changes


Last updated on Thursday June 16th, 2005