Thoughts on Ambisonic B-Format Encoder VST

So, as I posted early last month (here), I’ve been working on some VST plugins for Higher Order Ambisonics. This included a B-format encoder for up to 5th order and a corresponding decoder for up to 48 loudspeakers. I’ve also done a UHJ encoder that’s currently under a bit of beta testing and is getting added height information and GUI redesign.

This post is mostly to get my head round what I’m going to include in the next version of the B-format encoder (the first one I’ll be making public). It could be a long, rambling post but I’ll try to keep it as coherent as possible!

Work so far

So, starting with what I’ve already orginally implemented when I produced the VST for my MA assignment in 2011:

  • Convert mono audio to 1st to 5th order HOA encoding.
  • Choice between 2D or 3D output routing
  • Choice between which mathematical weighting convention is used between SN3D, N3D and Fu-Ma
  • Source azimuth and elevation control.
  • A simple gain to make sure nothing comes out clipping.

Here’s the old GUI:

B-format Ambisonic encoder for mono sources at orders 1 to 5

Since then I’ve done a bit of work on it and it now includes a few additional features:

  • Handles stereo input files with a width control to adjust the angle between the left and right channels.
  • The choice of mathematical weighting convention has been expanded to include SN2D and N2D.
  • Includes Near Field Compensation (NFC) [1] up to 5th order to place the source 20cm (not recommended! Bass boosts!) to 10m from the centre of the loudspeaker array. This assumes a 2m array radius, though this can be altered at the decoding stage.

The addition of stereo input and NFC meant that the original GUI was no longer appropriate and I’ve been holding off making another one until I know exactly what I want to have in the final draft. I find GUI design to be rather time consuming so I want to get it right first time.

Possible additional features

Well… I’ve got a few things I’m considering adding but I’m not sure if they’ll add to the VST of if they’ll just make it unwieldy. One thing I omitted from the last version was an on/off switch for the NFC. I’m not sure how I missed it but that’s definitely going in. Other options I’m considering are:

  1. Ability to output as UHJ (possibly 2-channel/stereo only since otherwise it’s equivalent to 1st order B-format).
  2. Adding an option to directly output signal feeds for common loudspeaker arrangements (quad, 8-channel etc.) to remove the need for a decoder. Also known as ‘Ambisonic equivalent panning’. (This would mean the addition of decoding options such as In-phase and max-rE to the encoder and I’m not really sure if that’s not complicating things too much…)

The reason I’m considering these options is to make it as accessible as possible,for as many users as possible, in as many programs as possible. The UHJ option allows it to be switched to a stereo panner with ease. Though really it’s easier to do this by simply setting your decoder to “Stereo/UHJ” output so I’m not sure of the merit of this addition other than for completeness.

The second possible addition is more likely to get implemented because it makes the VST more like something the vast majority of users are already used to – a surround sound panner. It might also work better for certain DAWs that are limited in their internal routing to standard loudspeaker arrangements already. Programs like Reaper have no problem with multichannel routing but others are not so flexible. It also increases the possibility to “plug in and go” for those who don’t want to start playing with encoding/decoding routing if their DAW isn’t as kind as Reaper.

Distant future additions

One addition I’d love to add but I’m not sure how is

  • Allowing the linking of encoders and decoders so changes between weighting, order and 2D/3D output on one VST will be carried over to all other VSTs that have been grouped together.

I didn’t think it was possible to link VSTs like that but some VSTs by Blue Cat Audio can do this so I’d love to implement something similar to this. At the minute it’s beyond my coding knowledge but I’ll get there eventually.


I’d love to implement everything here, get it tested and available for people to use. By including UHJ and “direct to speakers” (better known as Ambisonic equivalent panning) options it makes it a bit of a one-stop-shop for most of the main HOA possibilities.

If there are any features I’ve left out or if you have any suggestions for additions (or reductions!) then please feel free to contact me or leave a comment.


[1] J. Daniel and S. Moreau, “Further Study of Sound Field Coding with Higher Order Ambisonics,” in 116th AES Convention, Berlin, 2004.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s