Optimising Windows Audio Playback
Ok. I'm an IT professional. But I'm not an expert on Microsoft audio architectures. Nonetheless, I have done a little research into this and have produced this posting to provide some pointers for setting up Windows to optimise audio performance.
Windows XP provides a number of layers of software to process computer audio. This software architecture can/does impact the quality of the sound reaching the soundcard.
For example, Windows XP will support a number of concurrently running applications. Each of these applications may produce sounds. These sounds need to be merged together and sent to your soundcard for broadcasting. The software responsible for mixing of audio streams is the Kernal Mixer (or KMixer).
To simplify the job of mixing lots of sounds from different application, the KMixer resamples everything to 48kHz even if it is already at 48kHz (and doesn't make the best job of it). So your 44.1kHz audio stream from your media player is no longer bit perfect.
To get round this (and the latency introduced by all the operating system software) you need to enable your media player to connect directly to your sound card. To do this is you use Audio Stream Input/Output (ASIO) or Kernel Streaming.
To use either ASIO or Kernel streaming you need to have a plugin available for your media player of choice. These are available for Foobar2000 and WinAmp (ASIO, Kernel Streaming ). I am sure that many others exist (though see iTunes below).
The audio software architecture is different in Vista. It has been completely rewritten to address some of the issues with Windows XP (see here). There is no Kernel Mixer in Vista.
The architecture provides an Application Programmers Interface (API) to support bit perfect streaming to the sound card. This is the Windows Audio Session API (WASAPI). It provides capability which is similar to kernel streaming but does not require the programmer to write complex kernel streaming code.
WASAPI supports two modes of use: shared and exclusive. In shared mode, audio streams are mixed and global effects (if specified) are applied before the stream hits your sound card. In exclusive mode the audio streams are not mixed and no effects are applied i.e. the audio stream from your media player is passed directly to the sound card.
To use WASAPI you will need a plugin for your media player and your sound card will need drivers to support it. Currently, I only know of Foobar2000 that has a WASAPI plugin. This operates in WASAPI exclusive mode only. The Creative Soundblaster XFi range supports WASAPI (but please check your specific model).
I have produced a How To thread detailing how to setup Foobar2000 to use WASAPI in Vista here.
See this thread if you want to use ASIO4ALL or find out a little more about the audio architecture in Windows (XP & Vista).
Mac OS X & Linux
Don't know a great deal about these but they do not seem to have as many of the mixer issues as Windows (perhaps supporting Ashley James's view that Apple desktops make a better audio source than PCs running Windows?).
If you are running iTunes within Windows you are going to have the same issues as all other media players. Unfortunately, you are not able to work around the KMixer (in XP) or use WASAPI directly (Vista). If you desparately want to keep the iTunes frontend but want to improve sound quality you could check out this page. It details how you can set up iTunes to use Foobar2000 as a backend processor using the Multi-Plugin. I haven't tried this myself.
It is worth noting that once you have set everything up to bypass the upsampling performed by windows that your sound also probably upsamples to 48kHz (check it's setting). If you can, set your sound card to 44.1kHz. If you can't, the upsampling performed by the card may be impacting sound quality. If you are using Foobar2000 you can add higher quality upsampling plugins to do the sample rate conversion rather than letting the sound card do the upsampling. I use this one. EDIT: Found out over the weekend that my X-Fi soundcard has an updated control console available allowing the selection of 44.1kHz, so I no longer need the upsampler
That's about all I know. Hope it is of use to someone.
31/12/2010 - UPDATE - iTunes & WASAPI
It would appear the iTunes now supports WASAPI on Vista and Windows 7 (32 bit versions). To enable WASAPI support, open Quicktime and select Edit | Preferences | QuickTime Preferences | Audio tab. You can select Windows Audio Session under "Play Audio Using." Some quick research on the web suggests that only shared (rather than exclusive) mode is provided. This means that your music will only be bit perfect if no other audio streams are present.