Why Windows audio is horrible and how to improve it. (Guide)

First some background (don't bother reading): A few days ago, I booted into windows instead of my usual Arch or Fedora and I noticed the audio quality was piss poor compared to what I usually have in Linux distributions. Furthermore, I had recently taken not of all the audiophile videos along with a few things they did incorrectly within them. The first and foremost thing I disagreed with was their use of Windows for conducting a blind test; as you will soon find out.

Now for the guide to start:

Why windows audio is bad: It is due to the ungodly awful way in the Windows audio stack itself actually functions. It begins by up scaling all audio (meaning literally all audio played on the OS, regardless of source) passed through it to a 32-bit floating point sample depth. This would not be too bad apart from the fact that it is done in a really very messy manor by the Windows audio stack, which could potentially (and does) cause some samples to become slightly off of the true original value. This audio is then down scaled from the 32 bit-floating point sample depth into the highest possible number of bits per sample your audio hardware can utilize, usually 16 bits. Again, due to the messy manor in which this is done it could potentially cause some lose in fidelity in a similar manor to before, an awful lot in fact. Now, for the penultimate reason the Windows audio stack is bad: the way in which volume control is handled. If you were to lower your volume through the Windows audio mixer implementation; it would do so by giving you fractions of the signal. For example, you play a piece of music with and there are two samples of audio playing in one part. One of these samples could be 96 and the other, 91. You are doing so with the audio mixer set to 10% of the original volume. This means that those two samples are now 9.6 and 9.1, respectively. Now, we imagine you are using audio hardware that allows for 16 bits. This means that the 9.6 will now become either 9 or 10 and and the 9.1 will become a 9. This will cause a large impact on the audio quality. The final reason for poor audio is due to the way in which up sampling and down sampling of sample rate. I have left this to last because this is a setting in Windows, which can be changed from the default of 44.1khz. This default was selected due to the fact that the majority of digital audio uses this sample rate. So, theoretically this should not be a problem if you use a standard sample rate because Windows will not need to down scale or upscale it. The problem comes when you have a piece of audio on your computer at either above or below this default (which can be changed) the windows audio stack will either downscale or upscale accordingly. Usually, in order to do this without a loss of fidelity, one would need some very good interpolation to do so without causing any loss in fidelity. Decent interpolation is something Windows just doesn't have so any audio played at a higher or lower sampling rate than the default (or your setting) will sound darn awful.

 

Solutions:

  1. My personal favourite solution: use a different operating system, such as a Linux distro. Although, Mac OSX would also work... This is the best solution really because it means you will encounter none of the problems in windows and (in the case of a Linux distro) will also have many more features you can use to change audio settings.
  2. ASIO4ALL, A simple driver which prevent a lot of the Windows evil involved in the audio stack.
  3. WASAPI, Much like the previous solution although slightly better. The easiest way to use it is in foobar2000. It is however slightly different to a normal foobar plug in, in terms of how you get it to function properly.

WASAPI installation:

  1. Download the file (link below)
  2. Open foobar, go to file > preferences > components > Install.
  3. Now locate the WASAPI plug in on your hard drive (usually in downloads) 
  4. Install the component and restart foobar when prompted.

WASAPI will now be installed but there are a few final steps required for it to work properly:

  1. File > preferences > playback > out put
  2. Select your output device with a WASAPI prefix and then press okay. 

You are all done now.

EDITS AND FURTHER INFORMATION:

This will most probably allow you to actually hear the difference in audio fidelity between 320kbps mp3 and higher bit rate lose less audio files, almost regardless of hardware if you follow the fixes.

You can use WASAPI in conjunction with ASIO4ALL and there is a WASAPI driver that allows you to use it system wide somewhere on the internet.

You can select either event or push when configuring WASAPI, thank you, anerkist for asking this. 

Links:

http://www.foobar2000.org/components/view/foo_out_wasapi (wasapi)

http://www.asio4all.com/ (asio4all)

 

thank you.

No problem. I hope there are no inaccuracies.

which one?

Either event or push will work.

EDIT: I should probably have added that.

is there a way to utilize WASAPI across all audio sources on the computer?

I'll be sure to give this a try when I get home. Awesome write-up. Thanks!

There is a driver for it, hidden somewhere on the internet, unfortunately I cannot find it. You can however use ASIO4ALL in conjunction with WASAPI on foobar.

I was just about the ask the same thing anarekist did. If you find the driver let us know.

Does this make a significantly noticeable difference? I've been playing around with linux lately and I can't tell any difference in the audio quality.

Tanks for putting all the stuff on this together and confirming the whole windows audio stack discussion, and restoring my belief in the forum!

It would be nice now if people would actually share their experiences and confirm that the sound without the windows audio stack is actually capable of letting people hear the difference they thought wasn't there.

Also, I'm not a Windows user, but I'm also not entirely sure using ASIO or WASAPI with Foobar solves all problems, I believe they run in a compatibility layer, can someone confirm that the audio output when using ASIO or WASAPI from Foobar in Windows gives the same result as using CoreAudio or ALSA and co on *NIX OS's?

Also, can you still use other plug-ins in Foobar when using WASAPI/ASIO, for instance to partially patch up MP3 compression, like you can in Audacious? It would be nice to have a version of the old forum guide for Audacious in a Windows version.

You didn't provide the link to WASAPI?

Scientifically and to me, yes but then again, it is quite a subjective thing. It doesn't hurt to give it a try.

Nevermind, found it.

Haha, forgot that, sorry. It has been edited in.

Actually, i have been playing with Viper 4 Windows.

 

when i use wasapi, all my audio sources other than foobar stop working, so..no thanks..besides, i dont think i can evwen tell the diference

Just close foobar or use two audio sources and everything will work fine. As for a difference, it was like being hit in the face with a brick to me, although it doesn't affect all too much on lossy audio formats, such as, mp3. Furthermore, there is also ASIO4ALL.

I believe I tried ASIO4ALL but I could not get it to work with my Win7 machine. WASAPI works just fine for foobar for me.

 

@Rugaliz

Yes, this is a side-effect, I described it before in the other thread, it is inevitable, ASIO and WASAPI both take exclusive control over the audio hardware. There is no way to avoid this.

The difference is huge, suddenly you'll be able to hear the difference between mp3 and lossless and between 16/44.1 and 24/96, etc... but you have to decide what it is worth to you.

I can imagine that when you want to game and have background music running at the same time, you can switch to the windows audio stack anyway because at that point, it's only background music anyway. Is it really a problem that you don't have system sounds when you want to hear you music in better quality when it's not background music?

william123098

Thank you VERY MUCH for this technical and succinct explanation of the Windoze audio stack. I have tried to explain some of this at times but without the in-depth technical information you just disseminated.


I look at all of the posts where people are going through great lengths trying to ABX sound formats while the Windoze pretty much just takes all of your precious audio, regardless of quality, and drops a turd on it before giving it back to you.


'Let's all compare 2 competing super duper hi resolution TV screens while wearing sunglasses that were dropped in mud and never cleaned'. That is what I am seeing most of the time. (rolls eyes)