Hello, this is the first thread I post here, I made a free and open source VST3 plugin for self-use, I've been using it for movie and music playback on my 7.1 setup and find the spatial separation surprisingly coherent, as center vocals stay locked, hard-panned content moves to the rear. I'm curious how it performs on other machines.
This is a surround upmixer that primarily upmix from stereo to 3.0, 5.1, 7.1, 9.1 surround. Not height channels, just surround. It's a VST3 plugin, currently only offers Windows ×64 binaries since that's the machine I use. But since the plugin is JUCE based, in theory it could support other platforms.
The core idea is that stereo field, when interpreted as a field of relative panning instead of absolute angles, already contains the necessary info to make it surround, we just need to stretch it wider. The algorithm uses STFT min magnitude method to extract phantom center from stereo, there we have 3.0, and then L/R of 3.0 grouping with C of 3.0 to extract another layer of "centers", the new "centers" become 5.1's front L/R while the old L/R residuals become 5.1 surround. And then group 5.1 surround with 5.1 front L/R, and extract, the result is 7.1 sides. And then 7.1 side groups with 7.1 front L/R, extracts 9.1 wide.
After all these, we perform a calibration to compensate for the loudness change in the cascading process, we use a white noise sweeping from left to right of the stereo field, go through the cascade, detect the energy, and build a gain table, and then apply the gain table to the STFT frequency bins based on the inter-channel level difference. The calibration follows BS.1770-4 loudness azimuth weightings.
There are four quality/latency tiers: Low (~10 ms), Low-Mid (~21 ms), Mid (~41 ms), High (~83 ms). And there's a Bypass/Realtime mode that passes audio untouched.
I included this image in the README to make the result of the cascade more clear:
GitHub repo is here: https://github.com/EaryChow/Earys-Spatial-Expander
This is a solo hobby project alongside my day job, so I can't promise rapid updates, but I'll do my best to fix reported bugs.
On how to use it:
You need a VST3 host. I use the free Cantabile Lite with VB-Audio Matrix for system-wide routing to my 7.1 interface, but any host that supports multichannel VST3 output will work.
I recorded a binaural audio showcase of this plugin:
But please note the binaural rendering is external (APL Virtuoso) and used only for the demo, the plugin outputs discrete speaker channels, and the intended experience is on a real surround setup
This is a surround upmixer that primarily upmix from stereo to 3.0, 5.1, 7.1, 9.1 surround. Not height channels, just surround. It's a VST3 plugin, currently only offers Windows ×64 binaries since that's the machine I use. But since the plugin is JUCE based, in theory it could support other platforms.
The core idea is that stereo field, when interpreted as a field of relative panning instead of absolute angles, already contains the necessary info to make it surround, we just need to stretch it wider. The algorithm uses STFT min magnitude method to extract phantom center from stereo, there we have 3.0, and then L/R of 3.0 grouping with C of 3.0 to extract another layer of "centers", the new "centers" become 5.1's front L/R while the old L/R residuals become 5.1 surround. And then group 5.1 surround with 5.1 front L/R, and extract, the result is 7.1 sides. And then 7.1 side groups with 7.1 front L/R, extracts 9.1 wide.
After all these, we perform a calibration to compensate for the loudness change in the cascading process, we use a white noise sweeping from left to right of the stereo field, go through the cascade, detect the energy, and build a gain table, and then apply the gain table to the STFT frequency bins based on the inter-channel level difference. The calibration follows BS.1770-4 loudness azimuth weightings.
There are four quality/latency tiers: Low (~10 ms), Low-Mid (~21 ms), Mid (~41 ms), High (~83 ms). And there's a Bypass/Realtime mode that passes audio untouched.
I included this image in the README to make the result of the cascade more clear:
GitHub repo is here: https://github.com/EaryChow/Earys-Spatial-Expander
This is a solo hobby project alongside my day job, so I can't promise rapid updates, but I'll do my best to fix reported bugs.
On how to use it:
You need a VST3 host. I use the free Cantabile Lite with VB-Audio Matrix for system-wide routing to my 7.1 interface, but any host that supports multichannel VST3 output will work.
I recorded a binaural audio showcase of this plugin:
But please note the binaural rendering is external (APL Virtuoso) and used only for the demo, the plugin outputs discrete speaker channels, and the intended experience is on a real surround setup