Last year on my MA in Sonic Arts I made three VST plug ins as part of an assignment for a Spatial Audio module. I had a couple of months to make them and I made the foolish decision of thinking “Oh, I can learn C++ in that time and still be able to work VSTs by the end”. It turns out I was able to do it but the result code is far from elegant. The plugins are used to encode and decode sounds using the Ambisonics format.
The VSTs produced were:
- Mono to B-format encoder for 2D or 3D at orders 1 to 5. Also included the option for SN3D, N3D or FuMa (up to 3rd order only) conventions.
- UHJ encoder with mono or stereo inputs. Has a width control primarily for use with the stereo input option.
- SARCoder – a decoder with options for orders 1 to 5, UHJ 2D or 3D, or stereo (UHJ) downmix. It also had the option for Basic, In-phase or Max rE decoding. It supported up to 48 loudspeakers.
I was happy enough with them but since then I’ve expanded them a bit. The B-format encoder now has Near Field Compensation (NFC) but I’ve not had the chance to properly test it. It also includes additional conventions (SN2D and N2D) as well as supporting stereo input files and a width control.
I’ve not changed (and probably won’t really) the UHJ encoder because all I really wanted it for was a different “flavour” of stereo panning. The biggest changes will be restricted to GUI and efficiency/stability updates.
The biggest task before me is to tidy the code for the SARCoder and add in NFC. Because of how I originally coded the SARCoder I think it’s going to be easier and faster to just scrap most of the existing code and start again. I’m also looking to find a way to have tabs in the GUI so it no longer has the almost intimidating set of dials and windows for the loudspeaker positions.
I’ll probably not be posting any of the new version of these plugins until I get them to a stage where I know they’re stable and doing what they’re meant to be but if anyone has any feature requests or tips then I’d be more than happy to hear them!
However, if anyone is really interested in the UHJ encoder then I can maybe try to make it available. I can’t make any promises about stability or compatibility but it might be nice to have testers and feedback.
I’ve also included the original GUIs I made last year. They’re not fancy and they’re not how they’ll stay once they’re revamped but just for interest and as a bit of an archive for myself. Unfortunately these GUIs were never applied to the Windows versions of the VSTs because of problems I had try to get PNG files to work on my computer. I’ll give it another go for the updated versions.