Bit-perfect

This is how the audio stream will come from your PC. If you are running bit-perfect, you will have a more true reproduction from the media that you are playing. If you are looking for the best possible audio from your system, you will want to know about bit-perfect.

By bypassing the Windows KMixer and running either ASIO or Kernel Streaming, you are ensuring that you are hearing the music as it was encoded on the CD.

The downside to this? If there are errors on the CD, you will hear them as there is not any correction being made to overcome the error.

In essence, by runinng bit-perfect, you are ensuring that there is no difference in information between the CD that is being read and what makes its way out of the digital output of your sound card.

The quality of a sound card can have an effect on the quality of the output, even with bit perfect playback enabled. The timing and/or jitter can vary between sound cards, usually with the lower end sound cards having a higher likely hood of jitter.

KMixer

The KMixer is a part of Windows that enables your computer to take multiple audio sources and play them back at the same time and at the same bit rate. The KMixer is also how Windows handles your volume control. Regular CD audio is 44.1 kHz. Many times, due to poorly written drivers, sound cards that will interact with the KMixer wil cause this 44.1kHz data to be resampled to 48kHz. Obviously this will result in an undesireable result when trying to achieve the upmost in sound quality. The mixing algorithm as implemented by Microsoft has been shown in many cases to only have a signal to noise ratio of about 92dB. CDs have a signal to noise ratio of about 96dB (technically 97.5dB). The KMixer effectively reduces the data from 16bit to 14 bit.To bypass the Windows KMixer you either need to use ASIO or Kernel Streaming.
ASIO

ASIO is a professional audio standard that provides for a low-latency audio stream from the computer. ASIO bypasses the KMixer entirely. ASIO is used by the recording industry as a standard. For more information on ASIO, please see here.
Kernel Streaming
Kernel Streaming is just about the same thing as ASIO. It is Microsofts answer for being able to play audio files in a bit perfect format on a Windows machine. Kernel Streaming make efficient real-time streaming of audio possible. However, Kernel Streaming is not an industry standard. ASIO will have many more supported plugins avaliable for various media players. Kernel Streaming requires less CPU time than the regular 'wave out' method.
Software

Media Players That Support Kernel Streaming

Foobar2000
Foobar2000 supports kernel streaming natively. To activate it do the following:
Foobar 2000 -> Preferences -> Ouput -> change Output Method to Kernel Streaming.
Then you will need to change the sound device to the sound card you are using.
If you are experiencing audio dropouts, you may want to change the buffer length. The default is 2048ms.
WinAmp
WinAmp will support kernel streaming with the addition of a kernel streaming plug-in.
Kernel Streaming Plug-ins for WinAmp

  • WinAmp 2: You can find a Kernel Streaming plug in for WinAmp 2 available here from Steve Monks.
    For some discussion or possibly for some support on this plug-in, check this thread.
  • WinAmp: For a Kernel Streaming plug in for WinAmp, as well as FLAC and VolumeLogic, see here
    A note about this plug-in for WinAmp:
    Sometimes the play list will not advance automatically when a song finishes. You will have to manually press Next or select another song. This can be resolved by combining the Kernel Streaming plug-in with the VolumeLogic plug-in also included in this torrent. In Winamp’s output plug-in list, double click on VolumeLogic (setting it as the output plug-in for Winamp to use) and a window will pop up asking you to select the out put plug-in. Select Kernel Streaming from here. This will fix the play list advance issue so everything works. When you double click a song, however, rarely, it will not start. Just press pause twice and it will start like normal.
Media Players That Support ASIO

J. River Media Center
Media Center natively supports ASIO.

Tools -> Options -> Playback -> change Output Mode to ASIO
Then you will need to change the sound device to the sound card you are using. Or, if you are using a ASIO -> KS wrapper, choose it.
If you are experiencing audio dropouts, you may want to change the buffer length.
Foobar2000
Foobar2000 does not support ASIO natively.

Foobar2000 ASIO Plug-ins

These plug-ins can be found here.
For a translated version of the page, see here.
Foobar2000


Foobar 2000 -> Preferences -> Ouput -> change Output Method to your sound device
WinAmp
Winamp does not support ASIO natively.

WinAmp ASIO Plug-ins

These plug-ins can be found here.
For a translated version of the page, see here.

WinAmp 5


Options -> Preferences -> Output -> change the output plug-in to the ASIO Output Plug-in -> Configure
Then you will need to change the sound device to the sound card you are using. Or, if you are using a ASIO -> KS wrapper, choose it.
Thread Priority - for audio only, Time Critical should be fine.
If you are experiencing audio dropouts, you may want to change the buffer length.
Turn resampling off, if it is on, you will no longer be playing bit-perfect.
Using an ASIO Wrapper
Since many sound cards do not support ASIO natively, you will need to use an ASIO wrapper. There are a few options for this:

  • http://membres.lycos.fr/asiox/

  • http://www.asio4all.com/


    • These directions were provided by darklorjames for ASIO4All:
      Upon installing ASIO4ALL, you will get a control panel for it on your desktop. Open that up and set it up as follows. The buffers I have described here are huge, but it is better to have large buffers when trying to get it to work, and then work the buffers down once you know things are functional.
      Audio Device = Your Sound Card
      Sample Rate = (greyed out)
      Buffer Size = 2048
      KS Buffers = 4
      Always resample @ 44.1khz = off
      Disable input = on
      Force 16 bit samples = off
      Direct DMA Buffer I/O = off
      Now, go grab Winamp and the ASIO plugin and set up the plugin as described below. Try playing an MP3/CD Audio track and see if you have success. It works? Good! The battle is half won! If you are using SPDIF in your setup, and have a reciever that does DTS decoding, then you need to do a 44.1 khz DTS test. If the DTS test passes as well, then you are one step closer. Do one last test with a DVD or Divx with an AC3 track and see if that still works. If it does, then you are good to go. Welcome to the bit perfect world! At this point you should fiddle with the buffers in the ASIO control panel and Winamp to see how low you can get them without noise/dropouts. Of course you can also use other ASIO-enabled programs as well now, but I will leave the details of that up to you. You know the concept of getting this to work, that was my aim.

      But let's say you weren't lucky, and things aren't working. Or AC3 output is now dead. Uh-oh. First, double-check your settings. The ASIO4ALL Control Panel is dynamic, and as such it can be used while Winamp is open and any changes you make will take place immediately. There is also one other thing that may need to be done. There is an exploit in the Envy24HT-S driver's Control Panel that you can take advantage of, but I believe this is only valid for SPDIF output. Go to the Digital Out tab and select PCM Only. Then select the 8 Channel output tab and go to Sample Rate & Immerzio 3D. Under Sample Rate Select uncheck Automatic, select 44.1khz, and re-check Automatic. Go back to the 2 Channel tab and go to Digital Out. Select AC3 or PCM Autoselect (48khz only). This should result in the Envy24HT-S Control Panel essentially being tricked into letting AC3 or PCM at 44.1 and 48khz autoselect ::between eachother. I don't know why it doesn't just work like that in the first place, but, whatever.

      Thanks to Signal and B3b0p for the above Control Panel trick!
Bit-Perfect Audio Codecs

  • ACL880

  • ACL882
    The AC97 codec is NOT capable of bit perfect playback.
Rules of Thumb for Bit-Perfect

  • When Bit Accurate mode is applied to the playback, adjusting the volume control or applying EAX effects will not have any effect on digital output signals.

  • Once Bit Accurate playback starts, the digital output sampling rate is automatically set to the current playback's sampling rate regardless of the current digital output sampling rate.

  • Bit-perfect can only truly be tested using the tos-link out of either your sound card or a compatible audio codec for onboard sound for some motherboards and a DTS-decoder.

  • Any software DSP or sound processing will cause the benefits of bit perfect to become null.

  • Play with the buffering options. The buffer settings will vary depending on your system. Lower buffers are better, obviously as you will have a lower latency, however, if they are too low you will run into issues with audio drop-out with a system that is under a heavy load.

  • Once Bit Accurate playback starts, the digital output sampling rate is automatically set to the current playback's sampling rate regardless of the current digital output sampling rate.

  • Bit Accurate mode is only applicable to .WAV files with the following specifications:


    • Stereo Format

    • PCM audio data

    • 16-bits and above (maximum 32-bits with 24-bits resolution)

    • 44.1, 48, or 96 kHz

Testing Bit-Perfect
If you have successfully achieved bit-perfect playback, you should be able to play a DTS file off of a CD (16-bit, 44.1kHz). If you only get static from trying to play the file, then you know that you haven’t achieved bit-perfect playback.

Bit-Perfect CD Players
This is from the Alcohol Software web site. Those listed under the 120% column are considered to be bit-perfect capable CD players.



Resources



Article written by RedGTiVR6.