This post covers topic how to create good virtual surround on a headset that doesn’t normally support stereo sound. It helps you enjoy a richer audio experience, more similar to what you’d get at a theater. In our case we needed it for software that customizes lighting, buttons and some others profiles for keyboards, mice, and headsets. We need to port a headset application from Windows to Mac X platform. This only needs to be done once.
There is no way to do this for MacOS X in some circumstances. But we found the solution that allows us to generate virtual surround for MacOS. Now we can develop media software for Macs with good virtual surround regardless of how many audio channels your multimedia device has.
The problem with MacOS X audio stack
Windows OS suggests well documented APIs created for interaction between third-party applications and the Windows audio stack. That means developers may create a software with Virtual Surround effects and inject their own audio effects for Windows audio devices that support less audio channels than the original audio source.
MacOS is a different story. Unlike Windows with sAPO, MacOS doesn’t allow integration of third-party audio processors into the audio stack. But there is a way to modify the original audio stream. MacOS modifies the original audio stream by itself. The System mixer defines the number of audio channels automatically. This number is equal to the number of audio channels on a multimedia periphery connected to the PC.
So what developers try to do is customize AppleUSBAudio and vendor specified DSP processing to input and/or output audio streams. This solution still does not allow us to regulate the number of channels in a third-party application.
Let’s see an example. You watch a film on a Mac. Originally, the audio track from the movie contains 5.1 surround sound. Your headset supports only 2 audio channels. The Apple’s System mixer gets the 5.1 sound and downmixes it into 2 channels. Because it “thinks” no more channels are needed. Then these 2 channels input to the USB Audio plugin. Obviously, there is no ability to organize Virtual Surround.
That’s why we were forced to find a solution. And we’ve found it. Briefly, this is a solution that interacts with the Mac’s System mixer and forces it to change number of audio channels to the required number. This number doesn’t depend on real channels in a headset. Then, the software is mixed these several audio channels in certain way. Finally a listener gets rich and volume sound. In the example above, it’s not a problem to bring a 2-channel headset into virtual surround. In this way, we can create on Mac devices any surround, 5.1, 7.1 or other.
The plugin is lightweight and is used by others applications that work with sound. This solution allows you to integrate any sound processing algorithms into the MacOS.
What’s the next?
The solution works with less than 2 months in alpha-testing mode. Since we have several customers who are interested in Virtual Surround for MacOS, we are now actively developing a second project: a new headset application for the Mac platform.
And of course we’re sure: our invention will be used in many applications in no time. Our technology will help people to hear perfect virtual surround on MacOS X with any multimedia device. We hope you’re ready for this.