reverse engineered

Wine foobar2000 5.1 Surround

Wine is a compatibility layer to allow you to run Windows programs on Linux with near native efficiency. I use Wine to run foobar2000 on Linux. On Windows, foobar2000 supports upmixing stereo tracks into 5.1 surround sound. This was the first thing I missed when I moved my Desktop to Linux full time.

After a good bit of googling, it turns out that it is actually possible to pass 5.1 surround sound from a Wine application to the native Linux sound driver. It requires two things:

PulseAudio a newer, more advanced sound driver for Linux, designed to replace the ageing ESD. WinePulse is a set of patches for Wine designed to allow it to interact with PulseAudio properly. In short, this allows Wine to provide the host applications with 6 channel audio output.

You can either patch and build WinePulse yourself, or you are a Debian/Ubuntu user, you can use the prepatched binaries available from here.

The one thing you might notice is that sometimes there is an annoying high frequency hiss tone introduced when you change volume, but not when volume is at 0.00 dB. This is a known bug, but has been fixed by David Henningsson in the upstream version of PulseAudio (0.9.22) The bug is caused by SSE/MMX optimised versions of code. If this is really annnoying you, you can try using the latest version of PulseAudio directly from experimental/Oneiric, but they aren’t tested fully, and could cause data loss.

Once up and running, you should now be able to set your 5.1 channel audio device as a the output device in foobar2000.

EDIT: Things have changed since I wrote this post, and the audio layer was rewritten in Wine 1.3.25. This makes pulseaudio redundant, but you will still need to use a patched binary if you wish to enable 6 channel audio. I upload patched binaries to my apt repo here.

comments powered by Disqus