Table of Contents
"Bit-perfect playback" is a phrase used by audiophiles to describe a setup that plays back digital music as-is, without applying any modifications such as resampling, format conversion or software volume. Naturally, this implies a lossless codec.
By default, MPD attempts to do bit-perfect playback, unless you tell it not to. Precondition is a sound chip that supports the audio format of your music files. If the audio format is not supported, MPD attempts to fall back to the nearest supported audio format, trying to lose as little quality as possible.
To verify if MPD converts the audio format, enable verbose logging, and watch for these lines:
decoder: audio_format=44100:24:2, seekable=true output: opened plugin=alsa name="An ALSA output" audio_format=44100:16:2 output: converting from 44100:24:2
This example shows that a 24 bit file is being played, but the sond chip cannot play 24 bit. It falls back to 16 bit, discarding 8 bit.
However, this does not yet prove bit-perfect playback; ALSA may be fooling MPD that the audio format is supported. To verify the format really being sent to the physical sound chip, try:
cat /proc/asound/card*/pcm*p/sub*/hw_params access: RW_INTERLEAVED format: S16_LE subformat: STD channels: 2 rate: 44100 (44100/1) period_size: 4096 buffer_size: 16384
Obey the "format" row, which indicates that the current playback format is 16 bit (signed 16 bit integer, little endian).
Check list for bit-perfect playback:
Use the ALSA output plugin.
Disable sound processing inside
ALSA by configuring a
"hardware" device (hw:0,0
or
similar).
Don't use software volume (setting mixer_type
).
Don't force MPD to use a
specific audio format (settings format
,
audio_output_format
).
Verify that you are really doing bit-perfect playback
using MPD's verbose log and
/proc/asound/card*/pcm*p/sub*/hw_params
.
Some DACs can also indicate the audio format.