Bit perfect playback

Vincent Kars

WBF Technical Expert: Computer Audio
Jul 1, 2010
860
2
0
The holy grail of computer audio playback.
Feeding the unadulterated bits to the DAC.

An audio file has a:
  • Bit depth (most of the time 16 or 24 bits integer)
  • Sample rate (44.1 kHz, the CD standard, 48 kHz or higher)
  • Number of channel (mono, stereo, 5.1)
  • Format: PCM, DSD, etc.
Most of the time bit perfect playback refers to the absence of any type of DSP (Digital Signal Processing) like volume control, sample rate conversion, dither, etc.

True bit perfect playback is that the audio file is send unaltered to the audio device.
Bit depth, sample rate, number of channels and the format should remain unaltered.
This of course requires that the hardware matches the properties of the audio source exactly.

How to get bit perfect playback

Bit depth
A lot of audio is 16 bits and this is supported by almost all sound cards.
Playing 24 bit audio on a 16 bit sound card is not bit perfect by design.
The samples must be converted to 16 bit and dithered.
Playing 16 bit audio on a 24 bit sound card is a matter of adding 8 zeros to the sample.
This won’t affect sound quality as no information is discarded.
There is even a benefit; you can apply digital volume control up to -48 dBFS without loss of resolution.

Sample rate
If you have a sound card playing at 48 kHz only, you will never play at native sample rate unless the source is 48 kHz too.
If your sound card supports multiple sample rates then the question is if automatic sample rate switching is supported.
This depends on your media player and the driver you are using.

In case of Win7 the default driver for audio is DS (Direct Sound).
All audio is send to the Win audio engine in the default sample rate.
This is a setting you choose in the audio panel.
If you set this setting to match your audio source e.g. 44.1 kHz you expect bit perfect output.
Inside the audio engine everything is converted to 32 bit float, mixed if needed and then converted back to the bit depth of the audio device.
As the audio engine expects mixing en volume control, the output is dithered.
It looks like using DS won’t give you bit perfect playback even when you match the sample rate manually.

Drivers like ASIO or WASAPI talk straight to the driver of the sound card.
This allows for changing the settings of the sound card to match the source e.g. setting the sound card to the sample rate of the source.

One thing is obvious; you can get bit perfect playback only by choosing:
  • hardware supporting multiple sample rates,
  • hardware driver supporting multiple sample rates (See post #3)
  • a driver allowing for direct communication with the sound card,
  • a media player supporting this driver and capable of setting the properties of the sound card to match the source.
Your bit perfect playback is at the mercy of the programmer.
 
Last edited:
Nice explanations! However, you are using driver to refer to WASAPI, ASIO, etc. There is also the soundcard driver to consider. With my soundcard, the Asus Essence ST, the original soundcard driver did not allow for bitmatching. The current beta driver from Asus does allow for bitmatching when using ASIO. This fits with "hardware supporting multiple sample rates" but my hardware stayed the same while the hardware drivers changed. Maybe you need one more line that says "hardware drivers supporting multiple sample rates."
 
Very informative. Thank you.
 
Playing 24 bit audio on a 16 bit sound card is not bit perfect by design.
The samples must be converted to 16 bit and dithered.
FYI some people don't believe in this. Reason is that the low-order 4 bits of 24-bit audio is essentially random noise and that can help dither the signal. Adding dither yet again, will raise the noise floor with possibly no extra benefit.

Expanding, the laws of physics says that is essentially impossible to have a 24-bit sample in an analog to digital conversion. Accuracy past 20 bits or so simply is not there. Many source of noise exist in nature which will swamp such low level signals. Since dither is essentially random noise, then noise captured as part of digitizing audio can serve the same purpose.

Stereophile I think did some testing and found that adding dither to such signals subjectively reduced the fidelity.

Now, if the source of 24-bit audio is not "nature," say as a result of signal processing when the music is fixed, then it might not work well as dither.
 
"Playing 16 bit audio on a 24 bit sound card is a matter of adding 8 zeros to the sample."

Do some systems (drivers) interpolate the samples?

Curious - Don

Not as far as I know.
Let assume a guy writes some ASRC (arbitrary sample rate conversion) routine.
Convert to float, do the ASRC, convert to the bit depth of the DAC.
Why not convert from 44.1 to 44.1 and use the routine to interpolate 16 to 24?
Can’t rule it out.

I’m afraid the only answer is a null test.
- Play a track
- Record the spdif
- Load original and recording in an audio editor
- Time align
- Substract
If we end up with anything else than zeros it is not bit perfect playback
 

About us

  • What’s Best Forum is THE forum for high end audio, product reviews, advice and sharing experiences on the best of everything else. This is THE place where audiophiles and audio companies discuss vintage, contemporary and new audio products, music servers, music streamers, computer audio, digital-to-analog converters, turntables, phono stages, cartridges, reel-to-reel tape machines, speakers, headphones and tube and solid-state amplification. Founded in 2010 What’s Best Forum invites intelligent and courteous people of all interests and backgrounds to describe and discuss the best of everything. From beginners to life-long hobbyists to industry professionals, we enjoy learning about new things and meeting new people, and participating in spirited debates.

Quick Navigation

User Menu