What is Kernel Streaming and why do you need it?
Now that server-based music replay is gaining popularity, the phrase “Kernel Streaming” is seen more often. But what is it exactly, and why do you need it? The quick answer is: for many people this may not be something to worry about but if you really care about the sound quality, then you should at least know about it.
In order to be able to play all kinds of sounds through the same output, regardless of sample rate and bit depth, Windows makes use of many stages of conversion and filtering, most know of which is the Windows mixer, in short kmix. Although handy, this is hardly what you want if you want to play audio in the highest quality. First off, there’s a continuous resampling going on, plus volume control at various stages and if you’re not careful there’s also filtering (ie tone control and/or DSP).
Playback applications usually have their preferences set to steer their audio through kmix. This is the most fool-proof method that will ensure that any person with any pc will get audio. The more complete playback applications also have more refined options in their settings, such as choosing a preferred soundcard (installing one besides the onboard card is always a good idea) and choosing the output format and method. In addition, sometimes there’s the option to upsample (software based).
Most common playback applications, such as Winamp, foobar and Media Monkey have many more settings that you can make but the most important ones are the following:
- Select your preferred soundcard (also referred to as device) directly in the settings of your playback application (don’t route the sound through Windows Sound Mapper)
- Choose the bitrate and sample rate carefully (for bit-perfect and most accurate sound, choose the same settings as your files, so 16/44,1 for cd-sourced material)
- Select the output method (or appropriate plugin) (thus far, WaveOut sounds best to my ears, even though DirectSound is supposed to be better) (update July 2016: WASAPI sounds best if you have this option)
There are four methods in Windows XP for outputting audio via an audio device: DirectSound, WaveOut, ASIO/WDM, and kernel streaming. (update July 2016: Windows 7 also offers WASAPI, which is the best option). DirectSound and WaveOut go through kmixer. ASIO and kernel streaming don’t. If you like accuracy, you better stick to ASIO or Kernel streaming as only these methods are bit-perfect. Of course, as I advocate frequently, perfection alone is no guarantee for musical satisfaction. But in this case, I do like to stick to the accurate setting because otherwise with most applications the sound will simply not be good enough. mind that even if there is no kmixer, the soundcard you choose MAY RESAMPLE. Many of the Creative Labs SoundBlaster cards do this because all their processing algorithms only work in a 48 kHz 16-bit space.
ASIO is often used for multitrack recording applications but is the same as WDM in sound quality. It is simply building on the WDM spec. If your application does not provide WDM and/or ASIO you needn’t worry as you can use WaveOut for very good sound quality too. But it is not strictly bit-perfect. ASIO and WDM are.
All the above is super, provided your playback software has the options available. What if they aren’t? For example, if you use iTunes for Windows XP or Windows 7, you’re stuck with the soundcard that’s specified by default in Windows. This means that you cannot route the system beeps and your high-end music in separate ways. But it also means that you’re always using kmix. And that kind of sucks. It is not only a theoretical thing, as to my ears, but iTunes on Windows also sounds mediocre at best. But there is a way around this by using a program called Virtual Cable. This program, like the name says, creates a virtual patch cable that you can use to connect your playback application directly to the soundcard of your choice thus bypassing any Windows mixing. This even works for iTunes, as long as you select the virtual cable as default device in the Windows sound settings. The program is a bit fiddly though and I wouldn’t recommend it to people who are not that familiar with the deeper layers of Windows. See the separate article on this site for more info on this.
Now, a lot more has been written about this than what I will tell you and you can always dig deeper, but the way I understand it, Kernel Streaming is achieved when your playback application is talking directly to the soundcard without being affected by the various Windows mixing stages. Some soundcards and/or playback applications may actually refer to a Kernel Streaming Driver while others don’t mention it at all but provide it nevertheless. You can easily hear when you’ve done things right by comparing the various options. You’ve chosen the correct settings when the sound is most accurate, fastest, most rhythmic and most lively.
Kernel streaming aside, Winamp itself is not natively bit-accurate, even when selecting Wave-Out. Nevertheless, its sound is tighter than that of MediaMonkey or jRiver Media Center when also using Wave-Out. The latter programs are said to be bit-accurate, but still sound more mellow than Winamp. The latter sounds more mellow again than Foobar, another bit-accurate app, also when set to Wave-out. The bottom line: don’t get too distracted with theoretical “best methods” but use your ears.