What this does
This a VST3 (on Windows/macOS) and Audio Unit (macOS only) plugin. It spatialises 2-channel stereo, 3-channel LCR, or 6-channel surround audio presented in the standard channel layout (left; right; centre; LFE; left-surround; right-surround) 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 another perspective on your work when you’re creating music.
Why it exists
The reason for creating the head tracker was to have a reliable, off-the-shelf platform for continuing research into VR audio. This plugin achieves a few things that are important for Supperware:
- It’s a showcase for what the head tracker can do when it’s used properly and coupled with a well-engineered sound engine;
- It is a practical example of the Head Tracker C++/JUCE API in action;
- It’s a test bed for a binaural/VR experience that will eventually end up in other things.
- It validates existing features of the head tracker, firmware, and API, which allows Supperware to continue to debug and improve these for other users.
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 plugins, 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 6 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 plugin. 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 and you’ll need to close it or 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. Fortunately, there are plenty of resources online that will help you to reduce latency. 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 a too long, and the audio will lag behind your head movements.
If you make the audio buffer size as low as possible in your preferences, and use ASIO on Windows wherever it’s available, you’ve got as close to real-time as you can. It will be a lot 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 a 2- or 6-channel file of interest into, say, Reaper, and press Shift+Ctrl+V to open the video window (in Reaper). Open the ‘FX’ window for the channel you’re working with, and add the Supperware Binaural plug-in. Inside the plug-in, 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, click between Speech/Studio/Classical. 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:
Bypass : select this to turn the effect off, so you’re just listening to the unprocessed audio channels. In 5.1 mode, the audio is downmixed and fed crudely into the headphone channels so you can still hear dialogue and surround speakers, but there’s no spatialisation.
Channel solos : Selecting one of these will isolate that channel. Quite useful if you want to listen to the surround channels and make sure they’re doing something, or when you’re getting accustomed to the plug-in.
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 profile : Changes the reflections and reverb to put you in different environments. Speech is quite close and dry: good for drama/podcasts/close work, but a bit too ‘analytical’ for most music. Studio is a good general-purpose setting with a bit of high-quality comfort ambience, and simulates loudspeakers at about 2.5 metres away. Classical is great for enjoying classical music because it provides the extra ambient support of a larger, live room.
Chuck any feedback to me in any form and it’ll be gratefully received. I might even fix my 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.
- 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.