From 68bdfa9d0eac9326f3ec729614e5b688fa2f8b39 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 2 Sep 2014 14:42:05 +0200 Subject: doc/user: add sections for bit-perfect playback and DSD --- doc/user.xml | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 173 insertions(+), 4 deletions(-) diff --git a/doc/user.xml b/doc/user.xml index 3d6311dc8..b13689163 100644 --- a/doc/user.xml +++ b/doc/user.xml @@ -680,7 +680,7 @@ systemctl start mpd.socket
Audio Format Settings -
+
Global Audio Format @@ -1143,6 +1143,175 @@ systemctl start mpd.socket
+ + Advanced usage + +
+ Bit-perfect playback + + + "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. + + + +
+ +
+ Direct Stream Digital (DSD) + + + DSD (Direct + Stream Digital) is a digital format that stores audio + as a sequence of single-bit values at a very high sampling + rate. + + + + MPD understands the file formats + dff + and dsf. There + are three ways to play back DSD: + + + + + + Native DSD playback. Requires + ALSA 1.0.27.1 or later, a sound + driver/chip that supports DSD and of course a DAC that + supports DSD. + + + + + + DoP (DSD over PCM) playback. This wraps DSD inside fake + 24 bit PCM according to the DoP + standard. Requires a DAC that supports DSD. No + support from ALSA and the sound chip required (except for + 24 bit PCM support). + + + + + + Convert DSD to PCM on-the-fly. + + + + + + Native DSD playback is used automatically if available. DoP + is only used if enabled explicitly using the dop option, + because there is no way for MPD to + find out whether the DAC supports it. DSD to PCM conversion + is the fallback if DSD cannot be used directly. + +
+
+ Plugin reference @@ -1527,7 +1696,7 @@ systemctl start mpd.socket
Decoder plugins -
+
<varname>dsdiff</varname> @@ -1558,7 +1727,7 @@ systemctl start mpd.socket
-
+
<varname>dsf</varname> @@ -2041,7 +2210,7 @@ systemctl start mpd.socket If set to yes, then DSD over PCM according to the DoP - standard others is enabled. This wraps DSD + standard is enabled. This wraps DSD samples in fake 24 bit PCM, and is understood by some DSD capable products, but may be harmful to other hardware. Therefore, the default is -- cgit v1.2.3