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:
- 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.
- ASIO4ALL, A simple driver which prevent a lot of the Windows evil involved in the audio stack.
- 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:
- Download the file (link below)
- Open foobar, go to file > preferences > components > Install.
- Now locate the WASAPI plug in on your hard drive (usually in downloads)
- 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:
- File > preferences > playback > out put
- 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)