What this does
This a VST3 (on Windows/macOS) and Audio Unit (just on macOS) plug-in. It spatialises audio presented in several popular stereo and surround formats, so that the virtual speakers are correctly located and stay locked to your environment as you move your head.
You can use it to watch films, listen to music, or get a perspective on your work when you’re creating many kinds of immersive audio. It works at any sampling frequency you throw at it, without downsampling your audio.
Why it exists
The reason for creating the head tracker was to have a reliable, off-the-shelf platform for researching VR audio. This plug-in achieves most of the rest of the project.
- It showcases what the head tracker can do when it’s harnessed to a decent rendering engine;
- It’s a customer of our free Head Tracker C++/JUCE API;
- It’s a test bed for binaural/VR experiences that may end up in other things;
- It allows Supperware to test, debug, advertise, and improve this code, and the assumptions that underlie it.
Installation and use
Each of these zip files contains a .vst3 file that is peculiar to that operating system and has to be installed somewhere specific:
- Windows VST3
Unzip and copy into C:\Program Files\Common Files\VST3
- macOS VST3
Unzip and copy into ~/Library/Audio/Plug-Ins/VST3 (hold down the ‘Alt’ key in Finder’s ‘Go’ menu to get to Library the easy way).
- macOS Audio Unit
Unzip and copy into ~/Library/Audio/Plug-Ins/Components (hold down the ‘Alt’ key in Finder’s ‘Go’ menu to get to Library the easy way).
When you run a digital audio workstation, it should then find the plug-in automatically.
You’ll need three things:
- A digital audio workstation that can run VST3 plug-ins, and preferably can open a video window (Logic, Reaper, Tracktion …)
- Some kind of file to play: a movie file in MKV or MP4, for example, or just an audio file with between 2 and 16 channels.
- The Supperware Head Tracker (optional, but it’s kind of the point).
The only thing you need to know before just fiddling is ‘click the tick‘. This connects the head tracker to the plug-in. If the tick doesn’t turn green and the animated head appear when you click it, make sure that something else hasn’t taken exclusive control of the head tracker. For example, Bridgehead will do this. You don’t need Bridgehead for this. You’ll need either to close it or to disconnect from it.
You can double-click on the head whenever you want to re-centre it. The whole panel works like a miniaturised version of Bridgehead, including the little icon to the top-left of the head that opens a version of the tracker settings panel.
First, the caveat. Working in real-time is a bit of an art in a digital audio workstation. There are plenty of tutorials online that will help you to reduce latency. In brief, your priorities need to be the same as if you’re recording overdubs: the round-trip delay between the head tracker and the audio output can otherwise be too long, which will make the audio lag your head movements.
Make the audio buffer size as low as possible in your preferences, and use ASIO on Windows wherever it’s available, and you’ve got as close to real-time as you can get. It will be more sluggish than the hardware headphone amp I made during lockdown with its 2-millisecond buffers, but that’s personal computers for you.
One-paragraph intro. Drag an audio or video file of interest into, say, Reaper, and open the video window (Shift+Ctrl+V in Reaper). Open the ‘FX’ window for the track you’re working with, and add the Supperware Binaural plug-in. Inside the plug-in, select the correct layout (almost all of these will work with two-channel stereo). Click the tick to listen with the head tracker. Double-click on the animated head to zero it when you’re facing forwards. To configure it, use the little head tracker icon in the plug-in to reach a built-in panel (it does most of the useful stuff that Bridgehead can do). If you want to experiment with the environments and speakers, press the buttons. The different reflection patterns and intensities are tuned to different kinds of content. The audio clicks slightly when you change between them: hey, it’s a prototype and it’s free.
Button-by-button instructions. All buttons not described above should be unselected by default. They do the following things:
Turn spatialiser off: select this to listen to the unprocessed audio channels. Left channel to left ear, right channel to right ear. In surround modes, the other channels are mixed sensibly into the headphone signal too, so you can hear the dialogue and surround speakers, but there’s no spatialisation.
The channel layout: You can select different loudspeaker layouts from the drop-down box. The plan view in the bottom left shows where the speakers are located. Click on these speakers to solo them. Shift+click will allow you to solo more than one at once, and Ctrl+click will mute a channel (if it’s not soloed). Dragging somewhere on the background of this plan view will rotate it, so you can see which channels (if any) are elevated.
The plug-in doesn’t do Ambisonics rendering, as there’s no universally-agreed way of doing that, but you can audition Ambisonics by converting it into a fixed-speaker format using a specialised decoder.
Reverb ratio slider : Customise your room! Fully left is almost entirely direct sound; fully right is almost entirely early reflections and reverb. Manipulating this control feels a little like moving the speakers nearer or further away. The 0dB setting is balanced to sound correct.
Room : Changes the reflections and reverb to put you in different environments. Speech-optimised is quite close and dry: good for drama/podcasts/close work, but a bit too ‘analytical’ for most music. Mixing studio is a good general-purpose setting with a bit of comfort ambience, and simulates loudspeakers at about 2.5 metres away. Hall is great for enjoying classical music because it provides the auditory cues for a larger, live room.
Loudspeakers : The ‘Nearfield’ option employs virtual loudspeakers with a frequency response of 100Hz–16kHz, and affects the tonal quality of the reverb so it sounds more like monitoring on NS-10M or LS3/5a-sized speakers.
Chuck any feedback to Supperware in any form (such as the contact form at supperware.co.uk) and it’ll be gratefully received. We might even fix the bugs. Thanks!
Listening to YouTube / games / a musical instrument / Internet radio …
If you’re using a Mac, you can use a third-party program such as menuBUS or Audio Hijack to listen to your computer audio through this plug-in. This lets you listen to anything you can play (games, radio, YouTube) through the spatialiser, rather than being tied to a digital audio workstation.
Otherwise, we’re not sure what you should do, which is one reason why we built a few of these in hardware during 2020. They’re two-channel only and a few versions behind this, but you can listen to anything spatialised with them. If you’re desperate to hear one, drop us an email.
Getting the source code
The spatialiser plug-in is free but not open-source, as Supperware needs to eat occasionally. The head tracker API (the part of this plug-in that connects the head tracker to the spatialiser) is open-source though: you can use it to build your own scene rotator or experiment with the head tracker in other ways. That part is here.
- holding down ‘Alt’ over the channel layout panel allows the user to solo/mute front, rear, and height channels as groups.
- head-api fix: can now change the animated head view with a mouse like Bridgehead.
- head-api fix: compass and slow central pull weren’t turning off properly.
- fixed a crash on initialisation.
- fixes to make the plug-in work properly up to 192kHz sampling frequency.
- tuned reverb profiles slightly.
- bug fix: race condition caused an occasional crash when changing profiles.
- bug fix: erroneous eight-channel limit when invoking plug-in for the first time.
- bug fix: rendering the Auro-3D top centre channel could cause all audio to cut out.
- bug fix: a path-length error in room reflection calculations caused by fat fingers.
- added SPS-8 and SPS-12 layouts.
- tidied up mouse-hover hints in channel layout window.
- z-buffered the channel layout window.
- bug fix: no longer distorts when used with larger buffer sizes.
- bug fix: storage and recall of reverberation levels.
- plan view added with ability to change layouts.
- updated room profiles and improved the sound.
- small optimisations for performance.
- settings panel updated to reflect 0.65 firmware revisions.
- plug-ins now signed and notarized on macOS.
- algorithm: adjusted interaural timings again after comparing with new ITD tables and competing plug-ins.
- algorithm: remodelled EQ (now simpler).
- algorithm: adjusted reverb ratio so that smaller rooms are now slightly more reverberant by default.
- bug fix: now manages storage and recall of its full status properly.
- adjusted tracker panel to match latest firmware
- slightly adjusted interaural timings.
- fixed assertions and memory allocation bugs.
- UI: direct/reverberant slider added.
- algorithm: better EQ so that direct sound is flatter and balanced to a better level.
- algorithm: bug fixes in filters and other places.
- algorithm: bypass mode now does a proper surround downmix, and solos work inside it.
- algorithm: filters and delays are reset as a ‘panic’ mode when changing rooms or releasing bypass mode.
- algorithm: improved the efficiency of the elastic delay.
- bug fix: v1.02 lost the ability to work in 5.1 mode on macOS.
- algorithm: elevated cues weren’t working properly for various reasons, and detrimentally affected other positioning in a subtle way.
- algorithm: improved elevated cues as well as actually fixing them.
- algorithm: stability improvements when buffer size turns out to be an odd number.
- UI: more distinctive contrast between button ‘on’ and ‘off’ colours.
- UI: reflects status of plugin properly when window is closed and reopened.
- UI: snazzy new head tracker control module, with a configuration window.
- algorithm: new fluid delay, to get rid of commutative clicking.
- algorithm: added gain steering, so reverb comes from slightly behind.
- algorithm: conceptual separation of direct and early reflections.
- algorithm: enhanced and rethought reverb.
- algorithm: level boost in EQ removed as it clipped stuff.