summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am5
-rw-r--r--doc/user.xml5213
2 files changed, 1 insertions, 5217 deletions
diff --git a/Makefile.am b/Makefile.am
index e0b13df32..20f1e8858 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2513,15 +2513,12 @@ endif
man_MANS = doc/mpd.1 doc/mpd.conf.5
doc_DATA = AUTHORS COPYING NEWS README.md doc/mpdconf.example
-DOCBOOK_FILES = doc/protocol.xml doc/user.xml
+DOCBOOK_FILES = doc/protocol.xml
if ENABLE_DOCUMENTATION
protocoldir = $(docdir)/protocol
protocol_DATA = $(wildcard doc/protocol/*.html)
-userdir = $(docdir)/user
-user_DATA = $(wildcard doc/user/*.html)
-
DOCBOOK_HTML = $(patsubst %.xml,%/index.html,$(DOCBOOK_FILES))
DOCBOOK_INCLUDES = $(wildcard $(srcdir)/doc/include/*.xml)
diff --git a/doc/user.xml b/doc/user.xml
deleted file mode 100644
index c7266ed59..000000000
--- a/doc/user.xml
+++ /dev/null
@@ -1,5213 +0,0 @@
-<?xml version='1.0' encoding="utf-8"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-
-<book>
- <title>The Music Player Daemon - User's Manual</title>
-
- <chapter id="intro">
- <title>Introduction</title>
-
- <para>
- <application>Music Player Daemon</application>
- (<application>MPD</application>) is a flexible, powerful,
- server-side application for playing music. Through plugins and
- libraries it can play a variety of sound files while being
- controlled by its network protocol.
- </para>
-
- <para>
- This document is work in progress. Most of it may be incomplete
- yet. Please help!
- </para>
- </chapter>
-
- <chapter id="install">
- <title>Installation</title>
-
- <para>
- We recommend that you use the software installation routines of
- your distribution to install <application>MPD</application>.
- Most operating systems have a <application>MPD</application>
- package, which is very easy to install.
- </para>
-
- <section id="install_debian">
- <title>Installing on Debian/Ubuntu</title>
-
- <para>
- Install the package <application>MPD</application> via APT:
- </para>
-
- <programlisting>apt-get install mpd</programlisting>
-
- <para>
- When installed this way, <application>MPD</application> by
- default looks for music in
- <filename>/var/lib/mpd/music/</filename>; this may not be
- correct. Look at your <filename>/etc/mpd.conf</filename>
- file...
- </para>
- </section>
-
- <section id="install_android">
- <title>Installing on Android</title>
-
- <para>
- An experimental Android build is available on <ulink
- url="https://play.google.com/store/apps/details?id=org.musicpd">Google
- Play</ulink>. After installing and launching it, MPD will
- scan the music in your <filename>Music</filename> directory
- and you can control it as usual with a MPD client.
- </para>
-
- <para>
- If you need to tweak the configuration, you can create a file
- called <filename>mpd.conf</filename> on the data partition
- (the directory which is returned by Android's <ulink
- url="https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()">getExternalStorageDirectory()</ulink>
- API function).
- </para>
- </section>
-
- <section id="install_source">
- <title>Compiling from source</title>
-
- <para>
- Download the source tarball from <ulink
- url="http://www.musicpd.org/download.html">the
- <application>MPD</application> home page</ulink> and unpack
- it:
- </para>
-
- <programlisting>tar xf mpd-version.tar.xz
-cd mpd-version</programlisting>
-
- <para>
- In any case, you need:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- a C++14 compiler (e.g. <ulink
- url="http://gcc.gnu.org/">gcc 6.0</ulink> or <ulink
- url="http://clang.llvm.org/">clang 3.9</ulink>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <ulink url="http://www.boost.org/">Boost 1.58</ulink>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <ulink url="https://www.freedesktop.org/wiki/Software/pkg-config/">pkg-config</ulink>
- </para>
- </listitem>
- </itemizedlist>
-
- <para>
- Each plugin usually needs a codec library, which you also need
- to install. Check the plugin reference for details about
- required libraries.
- </para>
-
- <para>
- For example, the following installs a fairly complete list of
- build dependencies on Debian Jessie:
- </para>
-
- <programlisting>
-apt-get install g++ \
- libmad0-dev libmpg123-dev libid3tag0-dev \
- libflac-dev libvorbis-dev libopus-dev \
- libadplug-dev libaudiofile-dev libsndfile1-dev libfaad-dev \
- libfluidsynth-dev libgme-dev libmikmod2-dev libmodplug-dev \
- libmpcdec-dev libwavpack-dev libwildmidi-dev \
- libsidplay2-dev libsidutils-dev libresid-builder-dev \
- libavcodec-dev libavformat-dev \
- libmp3lame-dev libtwolame-dev libshine-dev \
- libsamplerate0-dev libsoxr-dev \
- libbz2-dev libcdio-paranoia-dev libiso9660-dev libmms-dev \
- libzzip-dev \
- libcurl4-gnutls-dev libyajl-dev libexpat-dev \
- libasound2-dev libao-dev libjack-jackd2-dev libopenal-dev \
- libpulse-dev libroar-dev libshout3-dev \
- libsndio-dev \
- libmpdclient-dev \
- libnfs-dev libsmbclient-dev \
- libupnp-dev \
- libavahi-client-dev \
- libsqlite3-dev \
- libsystemd-dev libwrap0-dev \
- libcppunit-dev xmlto \
- libboost-dev \
- libicu-dev
- </programlisting>
-
- <para>
- Now configure the source tree:
- </para>
-
- <programlisting>./configure</programlisting>
-
- <para>
- The <parameter>--help</parameter> argument shows a list of
- compile-time options. When everything is ready and
- configured, compile:
- </para>
-
- <programlisting>make</programlisting>
-
- <para>
- And install:
- </para>
-
- <programlisting>make install</programlisting>
-
- <section id="windows_build">
- <title>Compiling for Windows</title>
-
- <para>
- Even though it does not "feel" like a Windows application,
- <application>MPD</application> works well under Windows.
- Its build process follows the "Linux style", and may seem
- awkward for Windows people (who are not used to compiling
- their software, anyway).
- </para>
-
- <para>
- Basically, there are three ways to compile
- <application>MPD</application> for Windows:
- </para>
-
- <orderedlist>
- <listitem>
- <para>
- Build on Windows for Windows. All you need to do is
- described above already: configure and make.
- </para>
-
- <para>
- For Windows users, this is kind of unusual, because few
- Windows users have a GNU toolchain and a UNIX shell
- installed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Build on Linux for Windows. This is described above
- already: configure and make. You need the <ulink
- url="https://mingw-w64.org/"><application>mingw-w64</application>
- cross compiler</ulink>. Pass
- <parameter>--host=i686-w64-mingw32</parameter> (32 bit)
- or <parameter>--host=x86_64-w64-mingw32</parameter> (64
- bit) to configure.
- </para>
-
- <para>
- This is somewhat natural for Linux users. Many
- distributions have <application>mingw-w64</application>
- packages. The remaining difficulty here is installing
- all the external libraries. And
- <application>MPD</application> usually needs many,
- making this method cumbersome for the casual user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Build on Linux for Windows using the
- <application>MPD</application>'s library build script.
- </para>
- </listitem>
- </orderedlist>
-
- <para>
- This section is about the latter.
- </para>
-
- <para>
- Just like with the native build, unpack the
- <application>MPD</application> source tarball and change
- into the directory. Then, instead of
- <command>./configure</command>, type:
- </para>
-
- <programlisting>./win32/build.py --64</programlisting>
-
- <para>
- This downloads various library sources, and then configures
- and builds <application>MPD</application> (for x64; to build
- a 32 bit binary, pass <parameter>--32</parameter>). The
- resulting EXE files is linked statically, i.e. it contains
- all the libraries already, and you do not need carry DLLs
- around. It is large, but easy to use. If you wish to have
- a small <filename>mpd.exe</filename> with DLLs, you need to
- compile manually, without the <filename>build.py</filename>
- script.
- </para>
- </section>
-
- <section id="android_build">
- <title>Compiling for Android</title>
-
- <para>
- MPD can be compiled as an Android app. It can be installed
- easily with <link linkend="install_android">Google
- Play</link>, but if you want to build it from source, follow
- this section.
- </para>
-
- <para>
- You need:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- Android SDK
- </para>
- </listitem>
-
- <listitem>
- <para>
- <ulink
- url="https://developer.android.com/ndk/downloads/index.html">Android
- NDK</ulink>
- </para>
- </listitem>
- </itemizedlist>
-
- <para>
- Just like with the native build, unpack the
- <application>MPD</application> source tarball and change
- into the directory. Then, instead of
- <command>./configure</command>, type:
- </para>
-
- <programlisting>./android/build.py SDK_PATH NDK_PATH ABI
-make android/build/mpd-debug.apk</programlisting>
-
- <para>
- <varname>SDK_PATH</varname> is the absolute path where you
- installed the Android SDK; <varname>NDK_PATH</varname> is
- the Android NDK installation path; <varname>ABI</varname> is
- the Android ABI to be built, e.g. "armeabi-v7a".
- </para>
-
- <para>
- This downloads various library sources, and then configures
- and builds <application>MPD</application>.
- </para>
- </section>
- </section>
-
- <section id="systemd_socket">
- <title><filename>systemd</filename> socket activation</title>
-
- <para>
- Using <filename>systemd</filename>, you can launch
- <application>MPD</application> on demand when the first client
- attempts to connect.
- </para>
-
- <para>
- <application>MPD</application> comes with two
- <application>systemd</application> unit files: a "service"
- unit and a "socket" unit. These will only be installed when
- <application>MPD</application> was configured with
- <parameter>--with-systemdsystemunitdir=/lib/systemd/system</parameter>.
- </para>
-
- <para>
- To enable socket activation, type:
- </para>
-
- <programlisting>systemctl enable mpd.socket
-systemctl start mpd.socket</programlisting>
-
- <para>
- In this configuration, <application>MPD</application> will
- ignore the <varname>bind_to_address</varname> and
- <varname>port</varname> settings.
- </para>
- </section>
-
- <section id="systemd_user">
- <title><filename>systemd</filename> user unit</title>
-
- <para>
- You can launch <application>MPD</application> as a
- <filename>systemd</filename> user unit. The service file will
- only be installed when <application>MPD</application> was
- configured with
- <parameter>--with-systemduserunitdir=/usr/lib/systemd/user</parameter>
- or
- <parameter>--with-systemduserunitdir=$HOME/.local/share/systemd/user</parameter>.
- </para>
-
- <para>
- Once the user unit is installed, you can start and stop
- <application>MPD</application> like any other service:
- </para>
-
- <programlisting>systemctl --user start mpd</programlisting>
-
- <para>
- To auto-start <application>MPD</application> upon login, type:
- </para>
-
- <programlisting>systemctl --user enable mpd</programlisting>
- </section>
- </chapter>
-
- <chapter id="config">
- <title>Configuration</title>
-
- <section id="config_file">
- <title>The Configuration File</title>
-
- <para>
- <application>MPD</application> reads its configuration from a
- text file. Usually, that is
- <filename>/etc/mpd.conf</filename>, unless a different path is
- specified on the command line. If you run
- <application>MPD</application> as a user daemon (and not as a
- system daemon), the configuration is read from
- <filename>$XDG_CONFIG_HOME/mpd/mpd.conf</filename> (usually
- <filename>~/.config/mpd/mpd.conf</filename>). On Android,
- <filename>mpd.conf</filename> will be loaded from the
- top-level directory of the data partition.
- </para>
-
- <para>
- Each line in the configuration file contains a setting name
- and its value, e.g.:
- </para>
-
- <programlisting>connection_timeout "5"</programlisting>
-
- <para>
- For settings which specify a filesystem path, the tilde is
- expanded:
- </para>
-
- <programlisting>music_directory "~/Music"</programlisting>
-
- <para>
- Some of the settings are grouped in blocks with curly braces,
- e.g. per-plugin settings:
- </para>
-
- <programlisting>audio_output {
- type "alsa"
- name "My ALSA output"
- device "iec958:CARD=Intel,DEV=0"
- mixer_control "PCM"
-}</programlisting>
-
- <para>
- The <varname>include</varname> directive can be used to
- include settings from another file; the given file name is
- relative to the current file:
- </para>
-
- <programlisting>include "other.conf"</programlisting>
-
- <para>
- You can use <varname>include_optional</varname> instead if you
- want the included file to be optional; the directive will be
- ignored if the file does not exist:
- </para>
-
- <programlisting>include_optional "may_not_exist.conf"</programlisting>
-
- <para>
- Both directives can have a shell pattern (with wildcards
- '<filename>*</filename>' and '<filename>?</filename>') in the
- last path segment, e.g.:
- </para>
-
- <programlisting>include "conf.d/*.conf"</programlisting>
- </section>
-
- <section id="config_music_directory">
- <title>Configuring the music directory</title>
-
- <para>
- When you play local files, you should organize them within a
- directory called the "music directory". This is configured in
- <application>MPD</application> with the
- <varname>music_directory</varname> setting.
- </para>
-
- <para>
- By default, <application>MPD</application> follows symbolic
- links in the music directory. This behavior can be switched
- off: <varname>follow_outside_symlinks</varname> controls
- whether <application>MPD</application> follows links pointing
- to files outside of the music directory, and
- <varname>follow_inside_symlinks</varname> lets you disable
- symlinks to files inside the music directory.
- </para>
-
- <para>
- Instead of using local files, you can use <link
- linkend="storage_plugins">storage plugins</link> to access
- files on a remote file server. For example, to use music from
- the SMB/CIFS server "myfileserver" on the share called
- "Music", configure the music directory
- "<parameter>smb://myfileserver/Music</parameter>". For a
- recipe, read the <link linkend="satellite">Satellite
- MPD</link> section.
- </para>
-
- <para>
- You can also <link linkend="mount">use multiple storage
- plugins to assemble a virtual music directory consisting of
- multiple storages</link>.
- </para>
- </section>
-
- <section id="config_database_plugins">
- <title>Configuring database plugins</title>
-
- <para>
- If a music directory is configured, one database plugin is
- used. To configure this plugin, add a
- <varname>database</varname> block to
- <filename>mpd.conf</filename>:
- </para>
-
- <programlisting>database {
- plugin "simple"
- path "/var/lib/mpd/db"
-}
- </programlisting>
-
- <para>
- The following table lists the <varname>database</varname>
- options valid for all plugins:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>plugin</varname>
- </entry>
- <entry>
- The name of the plugin.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- More information can be found in the <link
- linkend="database_plugins">database plugin reference</link>.
- </para>
- </section>
-
- <section id="config_neighbor_plugins">
- <title>Configuring neighbor plugins</title>
-
- <para>
- All neighbor plugins are disabled by default to avoid unwanted
- overhead. To enable (and configure) a plugin, add a
- <varname>neighbor</varname> block to
- <filename>mpd.conf</filename>:
- </para>
-
- <programlisting>neighbors {
- plugin "smbclient"
-}
- </programlisting>
-
- <para>
- The following table lists the <varname>neighbor</varname>
- options valid for all plugins:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>plugin</varname>
- </entry>
- <entry>
- The name of the plugin.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- More information can be found in the <link
- linkend="neighbor_plugins">neighbor plugin reference</link>.
- </para>
- </section>
-
- <section id="config_input_plugins">
- <title>Configuring input plugins</title>
-
- <para>
- To configure an input plugin, add a <varname>input</varname>
- block to <filename>mpd.conf</filename>:
- </para>
-
- <programlisting>input {
- plugin "curl"
- proxy "proxy.local"
-}
- </programlisting>
-
- <para>
- The following table lists the <varname>input</varname> options
- valid for all plugins:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>plugin</varname>
- </entry>
- <entry>
- The name of the plugin.
- </entry>
- </row>
- <row>
- <entry>
- <varname>enabled</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Allows you to disable a input plugin without
- recompiling. By default, all plugins are enabled.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- More information can be found in the <link
- linkend="input_plugins">input plugin reference</link>.
- </para>
- </section>
-
- <section id="config_decoder_plugins">
- <title>Configuring decoder plugins</title>
-
- <para>
- Most decoder plugins do not need any special configuration.
- To configure a decoder, add a <varname>decoder</varname> block
- to <filename>mpd.conf</filename>:
- </para>
-
- <programlisting>decoder {
- plugin "wildmidi"
- config_file "/etc/timidity/timidity.cfg"
-}
- </programlisting>
-
- <para>
- The following table lists the <varname>decoder</varname>
- options valid for all plugins:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>plugin</varname>
- </entry>
- <entry>
- The name of the plugin.
- </entry>
- </row>
- <row>
- <entry>
- <varname>enabled</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Allows you to disable a decoder plugin without
- recompiling. By default, all plugins are enabled.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- More information can be found in the <link
- linkend="decoder_plugins">decoder plugin reference</link>.
- </para>
- </section>
-
- <section id="config_encoder_plugins">
- <title>Configuring encoder plugins</title>
-
- <para>
- Encoders are used by some of the output plugins (such as <link
- linkend="shout_output"><varname>shout</varname></link>). The
- encoder settings are included in the
- <varname>audio_output</varname> section. More information can
- be found in the <link linkend="encoder_plugins">encoder plugin
- reference</link>.
- </para>
- </section>
-
- <section id="config_audio_outputs">
- <title>Configuring audio outputs</title>
-
- <para>
- Audio outputs are devices which actually play the audio chunks
- produced by <application>MPD</application>. You can configure
- any number of audio output devices, but there must be at least
- one. If none is configured, <application>MPD</application>
- attempts to auto-detect. Usually, this works quite well with
- ALSA, OSS and on Mac OS X.
- </para>
-
- <para>
- To configure an audio output manually, add one or more
- <varname>audio_output</varname> blocks to
- <filename>mpd.conf</filename>:
- </para>
-
- <programlisting>audio_output {
- type "alsa"
- name "my ALSA device"
- device "hw:0"
-}
- </programlisting>
-
- <para>
- The following table lists the <varname>audio_output</varname>
- options valid for all plugins:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>type</varname>
- </entry>
- <entry>
- The name of the plugin.
- </entry>
- </row>
- <row>
- <entry>
- <varname>name</varname>
- </entry>
- <entry>
- The name of the audio output. It is visible to the
- client. Some plugins also use it internally, e.g. as
- a name registered in the PULSE server.
- </entry>
- </row>
- <row id="ao_format">
- <entry>
- <varname>format</varname>
- </entry>
- <entry>
- <para>
- Always open the audio output with the specified
- audio format
- (<replaceable>samplerate:bits:channels</replaceable>),
- regardless of the format of the input file. This is
- optional for most plugins.
- </para>
- <para>
- Any of the three attributes may be an asterisk to
- specify that this attribute should not be enforced,
- example: <parameter>48000:16:*</parameter>.
- <parameter>*:*:*</parameter> is equal to not having
- a <varname>format</varname> specification.
- </para>
- <para>
- The following values are valid for
- <varname>bits</varname>: <varname>8</varname>
- (signed 8 bit integer samples),
- <varname>16</varname>, <varname>24</varname> (signed
- 24 bit integer samples padded to 32 bit),
- <varname>32</varname> (signed 32 bit integer
- samples), <varname>f</varname> (32 bit floating
- point, -1.0 to 1.0), "<varname>dsd</varname>" means
- DSD (Direct Stream Digital). For DSD, there are
- special cases such as "<varname>dsd64</varname>",
- which allows you to omit the sample rate
- (e.g. <parameter>dsd512:2</parameter> for stereo
- DSD512, i.e. 22.5792 MHz).
- </para>
- <para>
- The sample rate is special for DSD:
- <application>MPD</application> counts the number of
- bytes, not bits. Thus, a DSD "bit" rate of 22.5792
- MHz (DSD512) is 2822400 from
- <application>MPD</application>'s point of view
- (44100*512/8).
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <varname>enabled</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Specifies whether this audio output is enabled when
- <application>MPD</application> is started. By
- default, all audio outputs are enabled. This is just
- the default setting when there is no state file; with
- a state file, the previous state is restored.
- </entry>
- </row>
- <row>
- <entry>
- <varname>tags</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- If set to <parameter>no</parameter>, then
- <application>MPD</application> will not send tags to
- this output. This is only useful for output plugins
- that can receive tags, for example the <link
- linkend="httpd_output"><varname>httpd</varname></link>
- output plugin.
- </entry>
- </row>
- <row>
- <entry>
- <varname>always_on</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- If set to <parameter>yes</parameter>, then
- <application>MPD</application> attempts to keep this
- audio output always open. This may be useful for
- streaming servers, when you don't want to disconnect
- all listeners even when playback is accidentally
- stopped.
- </entry>
- </row>
- <row>
- <entry>
- <varname>mixer_type</varname>
- <parameter>hardware|software|null|none</parameter>
- </entry>
- <entry>
- Specifies which mixer should be used for this audio
- output: the hardware mixer (available for <link
- linkend="alsa_output">ALSA</link>, <link
- linkend="oss_output">OSS</link> and <link
- linkend="pulse_output">PulseAudio</link>), the
- software mixer, the "null" mixer
- (<parameter>null</parameter>; allows setting the
- volume, but with no effect; this can be used as a
- trick to implement an <link
- linkend="external_mixer">external mixer</link>) or no
- mixer (<parameter>none</parameter>). By default, the
- hardware mixer is used for devices which support it,
- and none for the others.
- </entry>
- </row>
- <row>
- <entry>
- <varname>replay_gain_handler</varname>
- <parameter>software|mixer|none</parameter>
- </entry>
- <entry>
- Specifies how replay gain is applied. The default is
- <parameter>software</parameter>, which uses an
- internal software volume control.
- <parameter>mixer</parameter> uses the configured
- (hardware) mixer control. <parameter>none</parameter>
- disables replay gain on this audio output.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="config_filters">
- <title>Configuring filters</title>
-
- <para>
- Filters are plugins which modify an audio stream.
- </para>
-
- <para>
- To configure a filter, add a <varname>filter</varname> block
- to <filename>mpd.conf</filename>:
- </para>
-
- <programlisting>filter {
- plugin "volume"
- name "software volume"
-}
- </programlisting>
-
- <para>
- The following table lists the <varname>filter</varname>
- options valid for all plugins:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>plugin</varname>
- </entry>
- <entry>
- The name of the plugin.
- </entry>
- </row>
- <row>
- <entry>
- <varname>name</varname>
- </entry>
- <entry>
- The name of the filter.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="config_playlist_plugins">
- <title>Configuring playlist plugins</title>
-
- <para>
- Playlist plugins are used to load remote playlists (protocol
- commands <command>load</command>,
- <command>listplaylist</command> and
- <command>listplaylistinfo</command>). This is not related to
- <application>MPD</application>'s playlist directory.
- </para>
-
- <para>
- To configure a playlist plugin, add a
- <varname>playlist_plugin</varname> block to
- <filename>mpd.conf</filename>:
- </para>
-
- <programlisting>playlist_plugin {
- name "m3u"
- enabled "true"
-}
- </programlisting>
-
- <para>
- The following table lists the
- <varname>playlist_plugin</varname> options valid for all
- plugins:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>name</varname>
- </entry>
- <entry>
- The name of the plugin.
- </entry>
- </row>
- <row>
- <entry>
- <varname>enabled</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Allows you to disable a input plugin without
- recompiling. By default, all plugins are enabled.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- More information can be found in the <link
- linkend="playlist_plugins">playlist plugin reference</link>.
- </para>
- </section>
-
- <section id="config_audio_format">
- <title>Audio Format Settings</title>
-
- <section id="config_global_audio_format">
- <title>Global Audio Format</title>
-
- <para>
- The setting <varname>audio_output_format</varname> forces
- <application>MPD</application> to use one audio format for
- all outputs. Doing that is usually not a good idea. The
- values are the same as in <link
- linkend="ao_format"><varname>format</varname> in the <link
- linkend="config_audio_outputs"><varname>audio_output</varname></link>
- section</link>.
- </para>
- </section>
-
- <section>
- <title>Resampler</title>
-
- <para>
- Sometimes, music needs to be resampled before it can be
- played; for example, CDs use a sample rate of 44,100 Hz
- while many cheap audio chips can only handle 48,000 Hz.
- Resampling reduces the quality and consumes a lot of CPU.
- There are different options, some of them optimized for high
- quality and others for low CPU usage, but you can't have
- both at the same time. Often, the resampler is the
- component that is responsible for most of
- <application>MPD</application>'s CPU usage. Since
- <application>MPD</application> comes with high quality
- defaults, it may appear that <application>MPD</application>
- consumes more CPU than other software.
- </para>
-
- <para>
- Check the <link linkend="resampler_plugins">resampler plugin
- reference</link> for a list of resamplers and how to
- configure them.
- </para>
- </section>
- </section>
-
- <section id="config_clients">
- <title>Client Connections</title>
-
- <section id="config_listeners">
- <title>Listeners</title>
-
- <para>
- The setting <varname>bind_to_address</varname> specifies
- which addresses <application>MPD</application> listens on
- for connections from clients. The default is
- "<parameter>any</parameter>", which binds to all available
- addresses.
- </para>
-
- <para>
- You can set a port that is different from the global port
- setting, e.g. "<parameter>localhost:6602</parameter>". IPv6
- addresses must be enclosed in square brackets if you want to
- configure a port, e.g. "<parameter>[::1]:6602</parameter>".
- </para>
-
- <para>
- To bind to a local socket (UNIX domain socket), specify an
- absolute path or a path starting with a tilde
- (<parameter>~</parameter>). Some clients default to
- connecting to <filename>/var/run/mpd/socket</filename> so
- this may be a good choice.
- </para>
-
- <para>
- If no port is specified, the default port is
- <parameter>6600</parameter>. This default can be changed
- with the <varname>port</varname> setting.
- </para>
- </section>
-
- <section id="config_permissions">
- <title>Permissions and Passwords</title>
-
- <para>
- By default, all clients are unauthenticated and have a full
- set of permissions. This can be restricted with the
- settings <varname>default_permissions</varname> and
- <varname>password</varname>.
- </para>
-
- <para>
- <varname>default_permissions</varname> controls the
- permissions of a new client. Its value is a comma-separated
- list of permissions:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <parameter>read</parameter>
- </entry>
- <entry>
- Allows reading of the database, displaying the current
- playlist, and current status of MPD.
- </entry>
- </row>
-
- <row>
- <entry>
- <parameter>read</parameter>
- </entry>
- <entry>
- Allows reading of the database, displaying the current
- playlist, and current status of MPD.
- </entry>
- </row>
-
- <row>
- <entry>
- <parameter>add</parameter>
- </entry>
- <entry>
- Allows adding songs and loading playlists.
- </entry>
- </row>
-
- <row>
- <entry>
- <parameter>control</parameter>
- </entry>
- <entry>
- Allows all other player and playlist manipulations.
- </entry>
- </row>
-
- <row>
- <entry>
- <parameter>admin</parameter>
- </entry>
- <entry>
- Allows database updates and allows shutting down MPD.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- <varname>local_permissions</varname> may be used to assign
- other permissions to clients connecting on a local socket.
- </para>
-
- <para>
- <varname>password</varname> allows the client to send a
- password to gain other permissions. This option may be
- specified multiple times with different passwords.
- </para>
-
- <para>
- Note that the <varname>password</varname> option is not
- secure: passwords are sent in clear-text over the
- connection, and the client cannot verify the server's
- identity.
- </para>
-
- <para>
- Example:
- </para>
-
- <programlisting>default_permissions "read"
-password "the_password@read,add,control"
-password "the_admin_password@read,add,control,admin"</programlisting>
- </section>
- </section>
-
- <section id="config_other">
- <title>Other Settings</title>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>metadata_to_use</varname>
- <parameter>TAG1,TAG2,...</parameter>
- </entry>
- <entry>
- Use only the specified tags, and ignore the others.
- This setting can reduce the database size and
- <application>MPD</application>'s memory usage by
- omitting unused tags. By default, all tags but
- <varname>comment</varname> are enabled. The special
- value "none" disables all tags.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <section>
- <title>The State File</title>
-
- <para>
- The <emphasis>state file</emphasis> is a file where
- <application>MPD</application> saves and restores its state
- (play queue, playback position etc.) to keep it persistent
- across restarts and reboots. It is an optional setting.
- </para>
-
- <para>
- <application>MPD</application> will attempt to load the
- state file during startup, and will save it when shutting
- down the daemon. Additionally, the state file is refreshed
- every two minutes (after each state change).
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>state_file</varname>
- <parameter>PATH</parameter>
- </entry>
- <entry>
- Specify the state file location. The parent
- directory must be writable by the
- <application>MPD</application> user
- (<parameter>+wx</parameter>).
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>state_file_interval</varname>
- <parameter>SECONDS</parameter>
- </entry>
- <entry>
- Auto-save the state file this number of seconds
- after each state change. Defaults to
- <parameter>120</parameter> (2 minutes).
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="stickers">
- <title>The Sticker Database</title>
-
- <para>
- "Stickers" are pieces of information attached to songs.
- Some clients use them to store ratings and other volatile
- data. This feature requires <ulink
- url="http://www.sqlite.org/">SQLite</ulink>, compile-time
- configure option <parameter>--enable-sqlite</parameter>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>sticker_file</varname>
- <parameter>PATH</parameter>
- </entry>
- <entry>
- The location of the sticker database.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title>Resource Limitations</title>
-
- <para>
- These settings are various limitations to prevent
- <application>MPD</application> from using too many
- resources (denial of service).
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
-
- <row>
- <entry>
- <varname>connection_timeout</varname>
- <parameter>SECONDS</parameter>
- </entry>
- <entry>
- If a client does not send any new data in this time
- period, the connection is closed. Clients waiting
- in "idle" mode are excluded from this. Default is
- <parameter>60</parameter>.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>max_connections</varname>
- <parameter>NUMBER</parameter>
- </entry>
- <entry>
- This specifies the maximum number of clients that
- can be connected to <application>MPD</application>
- at the same time. Default is
- <parameter>5</parameter>.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>max_playlist_length</varname>
- <parameter>NUMBER</parameter>
- </entry>
- <entry>
- The maximum number of songs that can be in the
- playlist. Default is <parameter>16384</parameter>.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>max_command_list_size</varname>
- <parameter>KBYTES</parameter>
- </entry>
- <entry>
- The maximum size a command list. Default is
- <parameter>2048</parameter> (2 MiB).
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>max_output_buffer_size</varname>
- <parameter>KBYTES</parameter>
- </entry>
- <entry>
- The maximum size of the output buffer to a client
- (maximum response size). Default is
- <parameter>8192</parameter> (8 MiB).
- </entry>
- </row>
-
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title>Buffer Settings</title>
-
- <para>
- Do not change these unless you know what you are doing.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
-
- <row>
- <entry>
- <varname>audio_buffer_size</varname>
- <parameter>KBYTES</parameter>
- </entry>
- <entry>
- Adjust the size of the internal audio buffer.
- Default is <parameter>4096</parameter> (4 MiB).
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>buffer_before_play</varname>
- <parameter>PERCENT</parameter>
- </entry>
- <entry>
- Control the percentage of the buffer which is filled
- before beginning to play. Increasing this reduces
- the chance of audio file skipping, at the cost of
- increased time prior to audio playback. Default is
- <parameter>10%</parameter>.
- </entry>
- </row>
-
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="zeroconf">
- <title>Zeroconf</title>
-
- <para>
- If Zeroconf support (<ulink
- url="http://avahi.org/">Avahi</ulink> or Apple's Bonjour)
- was enabled at compile time with
- <parameter>--with-zeroconf=...</parameter>, MPD can announce
- its presence on the network. The following settings control
- this feature:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
-
- <row>
- <entry>
- <varname>zeroconf_enabled</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Enables or disables this feature. Default is
- <parameter>yes</parameter>.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>zeroconf_name</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- The service name to publish via Zeroconf. The
- default is "<parameter>Music Player</parameter>".
- </entry>
- </row>
-
- </tbody>
- </tgroup>
- </informaltable>
- </section>
- </section>
- </chapter>
-
- <chapter id="advanced_config">
- <title>Advanced configuration</title>
-
- <section id="satellite">
- <title>Satellite setup</title>
-
- <para>
- <application>MPD</application> runs well on weak machines such
- as the <ulink url="http://www.raspberrypi.org/">Raspberry
- Pi</ulink>. However, such hardware tends to not have storage
- big enough to hold a music collection. Mounting music from a
- file server can be very slow, especially when updating the
- database.
- </para>
-
- <para>
- One approach for optimization is running
- <application>MPD</application> on the file server, which not
- only exports raw files, but also provides access to a readily
- scanned database. Example configuration:
- </para>
-
- <programlisting>music_directory "nfs://fileserver.local/srv/mp3"
-#music_directory "smb://fileserver.local/mp3"
-
-database {
- plugin "proxy"
- host "fileserver.local"
-}
- </programlisting>
-
- <para>
- The <link
- linkend="config_music_directory"><varname>music_directory</varname></link>
- setting tells <application>MPD</application> to read files
- from the given NFS server. It does this by connecting to the
- server from userspace. This does not actually mount the file
- server into the kernel's virtual file system, and thus
- requires no kernel cooperation and no special privileges. It
- does not even require a kernel with NFS support, only the
- <link linkend="nfs_storage"><filename>nfs</filename></link>
- storage plugin (using the <filename>libnfs</filename>
- userspace library). The same can be done with SMB/CIFS using
- the <link
- linkend="smbclient_storage"><filename>smbclient</filename></link>
- storage plugin (using <filename>libsmbclient</filename>).
- </para>
-
- <para>
- The <link
- linkend="config_database_plugins"><varname>database</varname></link>
- setting tells <application>MPD</application> to pass all
- database queries on to the <application>MPD</application>
- instance running on the file server (using the <link
- linkend="proxy_database"><filename>proxy</filename></link>
- plugin).
- </para>
- </section>
-
- <section id="realtime">
- <title>Real-Time Scheduling</title>
-
- <para>
- On Linux, <application>MPD</application> attempts to configure
- <ulink
- url="https://en.wikipedia.org/wiki/Real-time_computing">real-time
- scheduling</ulink> for some threads that benefit from it.
- </para>
-
- <para>
- This is only possible you allow <application>MPD</application>
- to do it. This privilege is controlled by
- <varname>RLIMIT_RTPRIO</varname>
- <varname>RLIMIT_RTTIME</varname>. You can configure this
- privilege with <command>ulimit</command> before launching
- <application>MPD</application>:
- </para>
-
- <programlisting>ulimit -HS -r 50; mpd</programlisting>
-
- <para>
- Or you can use the <command>prlimit</command> program from the
- <application>util-linux</application> package:
- </para>
-
- <programlisting>prlimit --rtprio=50 --rttime=unlimited mpd</programlisting>
-
- <para>
- The <application>systemd</application> service file shipped
- with <application>MPD</application> comes with this setting.
- </para>
-
- <para>
- This works only if the Linux kernel was compiled with
- <varname>CONFIG_RT_GROUP_SCHED</varname> disabled. Use the
- following command to check this option for your current
- kernel:
- </para>
-
- <programlisting>zgrep ^CONFIG_RT_GROUP_SCHED /proc/config.gz</programlisting>
-
- <para>
- You can verify whether the real-time scheduler is active with
- the <command>ps</command> command:
- </para>
-
- <programlisting># ps H -q `pidof -s mpd` -o 'pid,tid,cls,rtprio,comm'
- PID TID CLS RTPRIO COMMAND
-16257 16257 TS - mpd
-16257 16258 TS - io
-16257 16259 FF 50 rtio
-16257 16260 TS - player
-16257 16261 TS - decoder
-16257 16262 FF 50 output:ALSA
-16257 16263 IDL 0 update</programlisting>
-
- <para>
- The <varname>CLS</varname> column shows the CPU scheduler;
- <parameter>TS</parameter> is the normal scheduler;
- <parameter>FF</parameter> and <parameter>RR</parameter> are
- real-time schedulers. In this example, two threads use the
- real-time scheduler: the <command>output</command> thread and
- the <command>rtio</command> (real-time I/O) thread; these two
- are the important ones. The database update thread uses the
- idle scheduler ("<parameter>IDL</parameter> in
- <command>ps</command>), which only gets CPU when no other
- process needs it.
- </para>
-
- <note>
- <para>
- There is a rumor that real-time scheduling improves audio
- quality. That is not true. All it does is reduce the
- probability of skipping (audio buffer xruns) when the
- computer is under heavy load.
- </para>
- </note>
- </section>
- </chapter>
-
- <chapter id="use">
- <title>Using <application>MPD</application></title>
-
- <section id="client">
- <title>The client</title>
-
- <para>
- After you have installed, configured and started
- <application>MPD</application>, you choose a client to control
- the playback.
- </para>
-
- <para>
- The most basic client is <filename>mpc</filename>, which
- provides a command line interface. It is useful in shell
- scripts. Many people bind specific <filename>mpc</filename>
- commands to hotkeys.
- </para>
-
- <para>
- The <ulink
- url="http://www.musicpd.org/clients/"><application>MPD</application>
- Wiki</ulink> contains an extensive list of clients to choose
- from.
- </para>
- </section>
-
- <section id="music_directory_and_database">
- <title>The music directory and the database</title>
-
- <para>
- The "music directory" is where you store your music files.
- <application>MPD</application> stores all relevant meta
- information about all songs in its "database". Whenever you
- add, modify or remove songs in the music directory, you have
- to update the database, for example with
- <filename>mpc</filename>:
- </para>
-
- <programlisting>mpc update</programlisting>
-
- <para>
- Depending on the size of your music collection and the speed
- of the storage, this can take a while.
- </para>
-
- <para>
- To exclude a file from the update, create a file called
- <filename>.mpdignore</filename> in its parent directory. Each
- line of that file may contain a list of shell wildcards.
- Matching files in the current directory and all subdirectories
- are excluded.
- </para>
-
- <section id="mount">
- <title>Mounting other storages into the music directory</title>
-
- <para>
- <application>MPD</application> has various <link
- linkend="storage_plugins">storage plugins</link> of which
- multiple instances can be "mounted" into the music
- directory. This way, you can use local music, file servers
- and USB sticks at the same time. Example:
- </para>
-
- <programlisting>mpc mount foo nfs://192.168.1.4/export/mp3
-mpc mount usbstick udisks://by-uuid-2F2B-D136
-mpc unmount usbstick</programlisting>
-
- <para>
- MPD's <link
- linkend="neighbor_plugins">neighbor plugins</link> can be
- helpful with finding mountable storages:
- </para>
-
- <programlisting>mpc listneighbors</programlisting>
-
- <para>
- Mounting is only possible with the <link
- linkend="simple_database"><varname>simple</varname> database
- plugin</link> and a <varname>cache_directory</varname>,
- e.g.:
- </para>
-
- <programlisting>
-database {
- plugin "simple"
- path "~/.mpd/db"
- cache_directory "~/.mpd/cache"
-}
- </programlisting>
-
- <para>
- This requires migrating from the old
- <varname>db_file</varname> setting to a
- <varname>database</varname> section. The cache directory
- must exist, and MPD will put one file per mount there, which
- will be reused when the same storage is used again later.
- </para>
- </section>
- </section>
-
- <section id="tags">
- <title>Metadata</title>
-
- <para>
- When scanning or playing a song,
- <application>MPD</application> parses its metadata. The
- following tags are supported:
- </para>
-
- <xi:include href="include/tags.xml"
- xmlns:xi="http://www.w3.org/2001/XInclude"/>
- </section>
-
- <section id="queue">
- <title>The queue</title>
-
- <para>
- The queue (sometimes called "current playlist") is a list of
- songs to be played by <application>MPD</application>. To play
- a song, add it to the queue and start playback. Most clients
- offer an interface to edit the queue.
- </para>
- </section>
-
- <section id="stored_playlists">
- <title>Stored Playlists</title>
-
- <para>
- Stored playlists are some kind of secondary playlists which
- can be created, saved, edited and deleted by the client. They
- are addressed by their names. Its contents can be loaded into
- the queue, to be played back. The
- <varname>playlist_directory</varname> setting specifies where
- those playlists are stored.
- </para>
- </section>
- </chapter>
-
- <chapter id="advanced_usage">
- <title>Advanced usage</title>
-
- <section id="bit_perfect">
- <title>Bit-perfect playback</title>
-
- <para>
- "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.
- </para>
-
- <para>
- By default, <application>MPD</application> 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,
- <application>MPD</application> attempts to fall back to the
- nearest supported audio format, trying to lose as little
- quality as possible.
- </para>
-
- <para>
- To verify if <application>MPD</application> converts the audio
- format, enable verbose logging, and watch for these lines:
- </para>
-
- <programlisting>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</programlisting>
-
- <para>
- 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.
- </para>
-
- <para>
- However, this does not yet prove bit-perfect playback;
- <application>ALSA</application> may be fooling
- <application>MPD</application> that the audio format is
- supported. To verify the format really being sent to the
- physical sound chip, try:
- </para>
-
- <programlisting>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</programlisting>
-
- <para>
- Obey the "format" row, which indicates that the current
- playback format is 16 bit (signed 16 bit integer, little
- endian).
- </para>
-
- <para>
- Check list for bit-perfect playback:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- Use the <link linkend="alsa_output">ALSA</link> output
- plugin.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable sound processing inside
- <application>ALSA</application> by configuring a
- "hardware" device (<parameter>hw:0,0</parameter> or
- similar).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't use software volume (setting <link
- linkend="config_audio_outputs"><varname>mixer_type</varname></link>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't force <application>MPD</application> to use a
- specific audio format (settings <link
- linkend="config_audio_outputs"><varname>format</varname></link>,
- <link
- linkend="config_global_audio_format"><varname>audio_output_format</varname></link>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Verify that you are really doing bit-perfect playback
- using <application>MPD</application>'s verbose log and
- <filename>/proc/asound/card*/pcm*p/sub*/hw_params</filename>.
- Some DACs can also indicate the audio format.
- </para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="dsd">
- <title>Direct Stream Digital (DSD)</title>
-
- <para>
- DSD (<ulink
- url="https://en.wikipedia.org/wiki/Direct_Stream_Digital">Direct
- Stream Digital</ulink>) is a digital format that stores audio
- as a sequence of single-bit values at a very high sampling
- rate.
- </para>
-
- <para>
- <application>MPD</application> understands the file formats
- <link linkend="dsdiff_decoder"><filename>dff</filename></link>
- and <link
- linkend="dsf_decoder"><filename>dsf</filename></link>. There
- are three ways to play back DSD:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- Native DSD playback. Requires
- <application>ALSA</application> 1.0.27.1 or later, a sound
- driver/chip that supports DSD and of course a DAC that
- supports DSD.
- </para>
- </listitem>
-
- <listitem>
- <para>
- DoP (DSD over PCM) playback. This wraps DSD inside fake
- 24 bit PCM according to the <ulink
- url="http://dsd-guide.com/dop-open-standard">DoP
- standard</ulink>. Requires a DAC that supports DSD. No
- support from ALSA and the sound chip required (except for
- <link linkend="bit_perfect">bit-perfect</link> 24 bit PCM
- support).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Convert DSD to PCM on-the-fly.
- </para>
- </listitem>
- </itemizedlist>
-
- <para>
- Native DSD playback is used automatically if available. DoP
- is only used if enabled explicitly using the <link
- linkend="alsa_output"><varname>dop</varname></link> option,
- because there is no way for <application>MPD</application> to
- find out whether the DAC supports it. DSD to PCM conversion
- is the fallback if DSD cannot be used directly.
- </para>
- </section>
- </chapter>
-
- <chapter id="client_hacks">
- <title>Client Hacks</title>
-
- <section id="external_mixer">
- <title>External Mixer</title>
-
- <para>
- The setting '<varname>mixer_type</varname>
- "<parameter>null</parameter>"' asks
- <application>MPD</application> to pretend that there is a
- mixer, but not actually do something. This allows you to
- implement a <application>MPD</application> client which
- listens for <varname>mixer</varname> events, queries the
- current (fake) volume, and uses it to program an external
- mixer. For example, your client can forward this setting to
- your amplifier.
- </para>
- </section>
- </chapter>
-
- <chapter id="troubleshooting">
- <title>Troubleshooting</title>
-
- <section id="troubleshooting_start">
- <title>Where to start</title>
-
- <para>
- Make sure you have the latest <application>MPD</application>
- version (via <command>mpd --version</command>, not
- <command>mpc version</command>). All the time, bugs are found
- and fixed, and your problem might be a bug that is fixed
- already. Do not ask for help unless you have the latest
- <application>MPD</application> version. The most common
- excuse is when your distribution ships an old
- <application>MPD</application> version - in that case, please
- ask your distribution for help, and not the
- <application>MPD</application> project.
- </para>
-
- <para>
- Check the log file. Configure '<varname>log_level</varname>
- "<parameter>verbose</parameter>"' or pass
- <parameter>--verbose</parameter> to <filename>mpd</filename>.
- </para>
-
- <para>
- Sometimes, it is helpful to run <application>MPD</application>
- in a terminal and follow what happens. This is how to do it:
- </para>
-
- <programlisting>mpd --stdout --no-daemon --verbose</programlisting>
- </section>
-
- <section id="support">
- <title>Support</title>
-
- <section id="help">
- <title>Getting Help</title>
-
- <para>
- The <application>MPD</application> project runs <ulink
- url="https://forum.musicpd.org/">a forum</ulink> and an IRC
- channel (<varname>#mpd</varname> on Freenode) for requesting
- help. Visit <ulink url="https://www.musicpd.org/help/">the
- <application>MPD</application> help page</ulink> for details
- on how to get help.
- </para>
- </section>
-
- <section id="faq">
- <title>Common Problems</title>
-
- <qandaset defaultlabel='qanda'>
- <qandadiv>
- <title>Database</title>
-
- <qandaentry>
- <question>
- <para>
- I can't see my music in the
- <application>MPD</application> database!
- </para>
- </question>
- <answer>
- <itemizedlist>
- <listitem>
- <para>
- Check your <varname>music_directory</varname>
- setting.
- </para>
- </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- Does the <application>MPD</application> user
- have read permission on all music files, and
- read+execute permission on all music directories
- (and all of their parent directories)?
- </para>
- </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- Did you update the database? (<command>mpc
- update</command>)
- </para>
- </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- Did you enable all relevant decoder plugins at
- compile time? <command>mpd --version</command>
- will tell you.
- </para>
- </listitem>
- </itemizedlist>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>
- <application>MPD</application> doesn't read ID3
- tags!
- </para>
- </question>
- <answer>
- <para>
- You probably compiled <application>MPD</application>
- without <filename>libid3tag</filename>.
- <command>mpd --version</command> will tell you.
- </para>
- </answer>
- </qandaentry>
- </qandadiv>
-
- <qandadiv>
- <title>Playback</title>
-
- <qandaentry>
- <question>
- <para>I can't hear music on my client!</para>
- </question>
- <answer>
- <para>
- That problem usually follows a misunderstanding of the
- nature of <application>MPD</application>.
- <application>MPD</application> is a remote-controlled
- music player, not a music distribution system.
- Usually, the speakers are connected to the box where
- <application>MPD</application> runs, and the
- <application>MPD</application> client only sends
- control commands, but the client does not actually
- play your music.
- </para>
-
- <para>
- <application>MPD</application> has output plugins
- which allow hearing music on a remote host (such as
- <link
- linkend="httpd_output"><varname>httpd</varname></link>),
- but that is not <application>MPD</application>'s
- primary design goal.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>"Device or resource busy"</para>
- </question>
- <answer>
- <para>
- This ALSA error means that another program uses your
- sound hardware exclusively. You can stop that
- program to allow <application>MPD</application> to
- use it.
- </para>
- <para>
- Sometimes, this other program is
- <application>PulseAudio</application>, which can
- multiplex sound from several applications, to allow
- them to share your sound chip. In this case, it
- might be a good idea for <link
- linkend="pulse_output"><application>MPD</application>
- to use <application>PulseAudio</application></link>
- as well, instead of using ALSA directly.
- </para>
- </answer>
- </qandaentry>
- </qandadiv>
- </qandaset>
- </section>
- </section>
-
- <section id="bugs">
- <title>Reporting Bugs</title>
-
- <para>
- If you believe you found a bug in
- <application>MPD</application>, report it on <ulink
- url="https://github.com/MusicPlayerDaemon/MPD/issues/">the bug
- tracker</ulink>.
- </para>
-
- <para>
- Your bug report should contain:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- the output of <command>mpd --version</command>
- </para>
- </listitem>
-
- <listitem>
- <para>
- your <link linkend="config_file">configuration file</link>
- (<filename>mpd.conf</filename>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- relevant portions of the log file (--verbose)
- </para>
- </listitem>
-
- <listitem>
- <para>
- be clear about what you expect MPD to do, and what is
- actually happening
- </para>
- </listitem>
- </itemizedlist>
-
- <section id="crash">
- <title><application>MPD</application> crashes</title>
-
- <para>
- All <application>MPD</application> crashes are bugs which
- must be fixed by a developer, and you should write a bug
- report. (Many crash bugs are caused by codec libraries
- used by <application>MPD</application>, and then that
- library must be fixed; but in any case, the
- <application>MPD</application> bug tracker is a good place
- to report it first if you don't know.)
- </para>
-
- <para>
- A crash bug report needs to contain a "backtrace".
- </para>
-
- <para>
- First of all, your <application>MPD</application> executable
- must not be "stripped" (i.e. debug information deleted).
- The executables shipped with Linux distributions are usually
- stripped, but some have so-called "debug" packages (package
- <filename>mpd-dbg</filename> or
- <filename>mpd-dbgsym</filename> on Debian,
- <filename>mpd-debug</filename> on other distributions).
- Make sure this package is installed.
- </para>
-
- <para>
- You can extract the backtrace from a core dump, or by
- running <application>MPD</application> in a debugger, e.g.:
- </para>
-
- <programlisting>gdb --args mpd --stdout --no-daemon --verbose
-run</programlisting>
-
- <para>
- As soon as you have reproduced the crash, type
- "<command>bt</command>" on the <filename>gdb</filename>
- command prompt. Copy the output to your bug report.
- </para>
- </section>
- </section>
- </chapter>
-
- <chapter id="plugin_reference">
- <title>Plugin reference</title>
-
- <section id="database_plugins">
- <title>Database plugins</title>
-
- <section id="simple_database">
- <title><varname>simple</varname></title>
-
- <para>
- The default plugin. Stores a copy of the database in
- memory. A file is used for permanent storage.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>path</varname>
- </entry>
- <entry>
- The path of the database file.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>cache_directory</varname>
- </entry>
- <entry>
- The path of the cache directory for additional
- storages mounted at runtime. This setting is
- necessary for the <command>mount</command> protocol
- command.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>compress</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Compress the database file using
- <filename>gzip</filename>? Enabled by default (if
- built with <filename>zlib</filename>).
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="proxy_database">
- <title><varname>proxy</varname></title>
-
- <para>
- Provides access to the database of another
- <application>MPD</application> instance using
- <filename>libmpdclient</filename>. This is useful when you
- run mount the music directory via NFS/SMB, and the file
- server already runs a <application>MPD</application>
- instance. Only the file server needs to update the
- database.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>host</varname>
- </entry>
- <entry>
- The host name of the "master"
- <application>MPD</application> instance.
- </entry>
- </row>
- <row>
- <entry>
- <varname>port</varname>
- </entry>
- <entry>
- The port number of the "master"
- <application>MPD</application> instance.
- </entry>
- </row>
- <row>
- <entry>
- <varname>password</varname>
- </entry>
- <entry>
- The password used to log in to the "master"
- <application>MPD</application> instance.
- </entry>
- </row>
- <row>
- <entry>
- <varname>keepalive</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Send TCP keepalive packets to the "master"
- <application>MPD</application> instance? This option can
- help avoid certain firewalls dropping inactive
- connections, at the expensive of a very small amount of
- additional network traffic. Disabled by default.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>upnp</varname></title>
-
- <para>
- Provides access to UPnP media servers.
- </para>
- </section>
- </section>
-
- <section id="storage_plugins">
- <title>Storage plugins</title>
-
- <section>
- <title><varname>local</varname></title>
-
- <para>
- The default plugin which gives
- <application>MPD</application> access to local files. It is
- used when <varname>music_directory</varname> refers to a
- local directory.
- </para>
- </section>
-
- <section id="curl_storage">
- <title><varname>curl</varname></title>
-
- <para>
- A WebDAV client using <filename>libcurl</filename>. It is
- used when <varname>music_directory</varname> contains a
- <parameter>http://</parameter> or
- <parameter>https://</parameter> URI, for example
- "<parameter>https://the.server/dav/</parameter>".
- </para>
- </section>
-
- <section id="smbclient_storage">
- <title><varname>smbclient</varname></title>
-
- <para>
- Load music files from a SMB/CIFS server. It is used when
- <varname>music_directory</varname> contains a
- <parameter>smb://</parameter> URI, for example
- "<parameter>smb://myfileserver/Music</parameter>".
- </para>
- </section>
-
- <section id="nfs_storage">
- <title><varname>nfs</varname></title>
-
- <para>
- Load music files from a NFS server. It is used when
- <varname>music_directory</varname> contains a
- <parameter>nfs://</parameter> URI according to <ulink
- url="http://tools.ietf.org/html/rfc2224">RFC2224</ulink>,
- for example "<parameter>nfs://servername/path</parameter>".
- </para>
-
- <para>
- This plugin uses <ulink
- url="https://github.com/sahlberg/libnfs"><filename>libnfs</filename></ulink>,
- which supports only NFS version 3. Since
- <application>MPD</application> is not allowed to bind to
- "privileged ports", the NFS server needs to enable the
- "insecure" setting; example
- <filename>/etc/exports</filename>:
- </para>
-
- <programlisting>/srv/mp3 192.168.1.55(ro,insecure)</programlisting>
-
- <para>
- Don't fear: "insecure" does not mean that your NFS server is
- insecure. A few decades ago, people thought the concept of
- "privileged ports" would make network services "secure",
- which was a fallacy. The absence of this obsolete
- "security" measure means little.
- </para>
- </section>
-
- <section id="udisks_storage">
- <title><varname>udisks</varname></title>
-
- <para>
- Mount file systems (e.g. USB sticks or other removable
- media) using the <varname>udisks2</varname> daemon via
- D-Bus. To obtain a valid <varname>udisks2</varname> URI,
- consult the according <link
- linkend="udisks_neighbor">neighbor plugin</link>.
- </para>
- </section>
- </section>
-
- <section id="neighbor_plugins">
- <title>Neighbor plugins</title>
-
- <section id="smbclient_neighbor">
- <title><varname>smbclient</varname></title>
-
- <para>
- Provides a list of SMB/CIFS servers on the local network.
- </para>
- </section>
-
- <section id="udisks_neighbor">
- <title><varname>udisks</varname></title>
-
- <para>
- Queries the <varname>udisks2</varname> daemon via D-Bus and
- obtain a list of file systems (e.g. USB sticks or other
- removable media).
- </para>
- </section>
-
- <section id="upnp_neighbor">
- <title><varname>upnp</varname></title>
-
- <para>
- Provides a list of UPnP servers on the local network.
- </para>
- </section>
- </section>
-
- <section id="input_plugins">
- <title>Input plugins</title>
-
- <section>
- <title><varname>alsa</varname></title>
-
- <para>
- Allows <application>MPD</application> on Linux to play audio
- directly from a soundcard using the scheme
- <filename>alsa://</filename>. Audio is formatted as 44.1 kHz
- 16-bit stereo (CD format). Examples:
- </para>
-
- <para>
- <filename>mpc add alsa://</filename> plays audio from device hw:0,0
- </para>
- <para>
- <filename>mpc add alsa://hw:1,0</filename> plays audio from device
- hw:1,0
- </para>
- </section>
-
- <section>
- <title><varname>cdio_paranoia</varname></title>
-
- <para>
- Plays audio CDs using <ulink
- url="http://www.gnu.org/software/libcdio/"><filename>libcdio</filename></ulink>.
- The URI has the form:
- "<filename>cdda://[DEVICE][/TRACK]</filename>". The
- simplest form <filename>cdda://</filename> plays the whole
- disc in the default drive.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>default_byte_order</varname>
- <parameter>little_endian|big_endian</parameter>
- </entry>
- <entry>
- If the CD drive does not specify a byte order,
- <application>MPD</application> assumes it is the
- CPU's native byte order. This setting allows
- overriding this.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>curl</varname></title>
-
- <para>
- Opens remote files or streams over HTTP using <ulink
- url="http://curl.haxx.se/"><filename>libcurl</filename></ulink>.
- </para>
-
- <para>
- Note that unless overridden by the below settings (e.g. by
- setting them to a blank value), general curl configuration
- from environment variables such as
- <varname>http_proxy</varname> or specified in
- <filename>~/.curlrc</filename> will be in effect.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>proxy</varname>
- </entry>
- <entry>
- Sets the address of the HTTP proxy server.
- </entry>
- </row>
- <row>
- <entry>
- <varname>proxy_user</varname>,
- <varname>proxy_password</varname>
- </entry>
- <entry>
- Configures proxy authentication.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>verify_peer</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Verify the peer's SSL certificate? <ulink
- url="http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html">More
- information</ulink>.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>verify_host</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Verify the certificate's name against host? <ulink
- url="http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html">More
- information</ulink>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="ffmpeg_input">
- <title><varname>ffmpeg</varname></title>
-
- <para>
- Access to various network protocols implemented by the
- <application>FFmpeg</application> library:
- <filename>gopher://</filename>,
- <filename>rtp://</filename>,
- <filename>rtsp://</filename>,
- <filename>rtmp://</filename>,
- <filename>rtmpt://</filename>,
- <filename>rtmps://</filename>
- </para>
- </section>
-
- <section>
- <title><varname>file</varname></title>
-
- <para>
- Opens local files.
- </para>
- </section>
-
- <section>
- <title><varname>mms</varname></title>
-
- <para>
- Plays streams with the MMS protocol using <ulink
- url="https://launchpad.net/libmms"><filename>libmms</filename></ulink>.
- </para>
- </section>
-
- <section>
- <title><varname>nfs</varname></title>
-
- <para>
- Allows <application>MPD</application> to access files on
- NFSv3 servers without actually mounting them (i.e. in
- userspace, without help from the kernel's VFS layer). All
- URIs with the <filename>nfs://</filename> scheme are used
- according to <ulink
- url="http://tools.ietf.org/html/rfc2224">RFC2224</ulink>.
- Example:
- </para>
-
- <para>
- <filename>mpc add nfs://servername/path/filename.ogg</filename>
- </para>
-
- <para>
- Note that this usually requires enabling the "insecure" flag
- in the server's <filename>/etc/exports</filename> file,
- because <application>MPD</application> cannot bind to
- so-called "privileged" ports. Don't fear: this will not
- make your file server insecure; the flag was named in a time
- long ago when privileged ports were thought to be meaningful
- for security. By today's standards, NFSv3 is not secure at
- all, and if you believe it is, you're already doomed.
- </para>
- </section>
-
- <section>
- <title><varname>smbclient</varname></title>
-
- <para>
- Allows <application>MPD</application> to access files on
- SMB/CIFS servers (e.g. Samba or Microsoft Windows). All
- URIs with the <filename>smb://</filename> scheme are used.
- Example:
- </para>
-
- <para>
- <filename>mpc add smb://servername/sharename/filename.ogg</filename>
- </para>
- </section>
-
- <section id="qobuz_input">
- <title><varname>qobuz</varname></title>
-
- <para>
- Play songs from the commercial streaming service <ulink
- url="https://www.qobuz.com/">Qobuz</ulink>. It plays URLs in the
- form <filename>qobuz://track/ID</filename>, e.g.:
- </para>
-
- <programlisting>mpc add qobuz://track/23601296</programlisting>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>app_id</varname>
- <parameter>ID</parameter>
- </entry>
- <entry>
- The Qobuz application id.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>app_secret</varname>
- <parameter>SECRET</parameter>
- </entry>
- <entry>
- The Qobuz application secret.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>username</varname>
- <parameter>USERNAME</parameter>
- </entry>
- <entry>
- The Qobuz user name.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>password</varname>
- <parameter>PASSWORD</parameter>
- </entry>
- <entry>
- The Qobuz password.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>format_id</varname>
- <parameter>N</parameter>
- </entry>
- <entry>
- The <ulink
- url="https://github.com/Qobuz/api-documentation/blob/master/endpoints/track/getFileUrl.md#parameters">Qobuz
- format identifier</ulink>, i.e. a number which
- chooses the format and quality to be requested from
- Qobuz. The default is "5" (320 kbit/s MP3).
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="tidal_input">
- <title><varname>tidal</varname></title>
-
- <para>
- Play songs from the commercial streaming service <ulink
- url="http://tidal.com/">Tidal</ulink>. It plays URLs in the
- form <filename>tidal://track/ID</filename>, e.g.:
- </para>
-
- <programlisting>mpc add tidal://track/59727857</programlisting>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>token</varname>
- <parameter>TOKEN</parameter>
- </entry>
- <entry>
- The Tidal application token. Since Tidal is
- unwilling to assign a token to MPD, this needs to be
- reverse-engineered from another (approved) Tidal
- client.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>username</varname>
- <parameter>USERNAME</parameter>
- </entry>
- <entry>
- The Tidal user name.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>password</varname>
- <parameter>PASSWORD</parameter>
- </entry>
- <entry>
- The Tidal password.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>audioquality</varname>
- <parameter>Q</parameter>
- </entry>
- <entry>
- The Tidal "audioquality" parameter. Possible
- values: <parameter>HI_RES</parameter>,
- <parameter>LOSSLESS</parameter>,
- <parameter>HIGH</parameter>,
- <parameter>LOW</parameter>. Default is
- <parameter>HIGH</parameter>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
- </section>
-
- <section id="decoder_plugins">
- <title>Decoder plugins</title>
-
- <section id="adplug_decoder">
- <title><varname>adplug</varname></title>
-
- <para>
- Decodes AdLib files using <ulink
- url="http://adplug.sourceforge.net/">libadplug</ulink>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>sample_rate</varname>
- <parameter></parameter>
- </entry>
- <entry>
- The sample rate that shall be synthesized by the
- plugin. Defaults to 48000.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="audiofile_decoder">
- <title><varname>audiofile</varname></title>
-
- <para>
- Decodes WAV and AIFF files using <ulink
- url="http://audiofile.68k.org/"><filename>libaudiofile</filename></ulink>.
- </para>
- </section>
-
- <section id="faad_decoder">
- <title><varname>faad</varname></title>
-
- <para>
- Decodes AAC files using <ulink
- url="http://www.audiocoding.com/"><filename>libfaad</filename></ulink>.
- </para>
- </section>
-
- <section id="ffmpeg_decoder">
- <title><varname>ffmpeg</varname></title>
-
- <para>
- Decodes various codecs using <ulink
- url="https://ffmpeg.org/"><application>FFmpeg</application></ulink>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>analyzeduration</varname>
- <parameter>VALUE</parameter>
- </entry>
- <entry>
- Sets the FFmpeg muxer option
- <varname>analyzeduration</varname>, which specifies
- how many microseconds are analyzed to probe the
- input. The <ulink
- url="https://ffmpeg.org/ffmpeg-formats.html">FFmpeg
- formats documentation</ulink> has more information.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>probesize</varname>
- <parameter>VALUE</parameter>
- </entry>
- <entry>
- Sets the FFmpeg muxer option
- <varname>probesize</varname>, which specifies
- probing size in bytes, i.e. the size of the data to
- analyze to get stream information. The <ulink
- url="https://ffmpeg.org/ffmpeg-formats.html">FFmpeg
- formats documentation</ulink> has more information.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="flac_decoder">
- <title><varname>flac</varname></title>
-
- <para>
- Decodes FLAC files using
- <ulink url="https://xiph.org/flac/"><application>libFLAC</application></ulink>.
- </para>
- </section>
-
- <section id="dsdiff_decoder">
- <title><varname>dsdiff</varname></title>
-
- <para>
- Decodes DFF files containing DSDIFF data (e.g. SACD rips).
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>lsbitfirst</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Decode the least significant bit first. Default is
- <parameter>no</parameter>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="dsf_decoder">
- <title><varname>dsf</varname></title>
-
- <para>
- Decodes DSF files containing DSDIFF data (e.g. SACD rips).
- </para>
-
- </section>
-
- <section>
- <title><varname>fluidsynth</varname></title>
-
- <para>
- MIDI decoder based on <ulink
- url="http://www.fluidsynth.org/"><application>FluidSynth</application></ulink>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>sample_rate</varname>
- </entry>
- <entry>
- The sample rate that shall be synthesized by the
- plugin. Defaults to 48000.
- </entry>
- </row>
- <row>
- <entry>
- <varname>soundfont</varname>
- </entry>
- <entry>
- The absolute path of the soundfont file. Defaults
- to
- <filename>/usr/share/sounds/sf2/FluidR3_GM.sf2</filename>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>gme</varname></title>
-
- <para>
- Video game music file emulator based on <ulink
- url="https://bitbucket.org/mpyne/game-music-emu/wiki/Home"><application>game-music-emu</application></ulink>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>accuracy</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Enable more accurate sound emulation.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="hybrid_dsd_decoder">
- <title><varname>hybrid_dsd</varname></title>
-
- <para>
- <ulink
- url="http://dsdmaster.blogspot.de/p/bitperfect-introduces-hybrid-dsd-file.html">Hybrid-DSD</ulink>
- is a MP4 container file (<filename>*.m4a</filename>) which
- contains both ALAC and DSD data. It is disabled by default,
- and works only if you explicitly enable it. Without this
- plugin, the ALAC parts gets handled by the <link
- linkend="ffmpeg_decoder">FFmpeg decoder plugin</link>. This
- plugin should be enabled only if you have a bit-perfect
- playback path to a DSD-capable DAC; for everybody else,
- playing back the ALAC copy of the file is better.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>gapless</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- This specifies whether to support gapless playback
- of MP3s which have the necessary headers. Useful if
- your MP3s have headers with incorrect information.
- If you have such MP3s, it is highly recommended that
- you fix them using <ulink
- url="http://www.willwap.co.uk/Programs/vbrfix.php"><application>vbrfix</application></ulink>
- instead of disabling gapless MP3 playback. The
- default is to support gapless MP3 playback.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="mad_decoder">
- <title><varname>mad</varname></title>
-
- <para>
- Decodes MP3 files using <ulink
- url="http://www.underbit.com/products/mad/"><application>libmad</application></ulink>.
- </para>
- </section>
-
- <section>
- <title><varname>mikmod</varname></title>
-
- <para>
- Module player based on <ulink
- url="http://mikmod.sourceforge.net/"><application>MikMod</application></ulink>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>loop</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Allow backward loops in modules. Default is
- <parameter>no</parameter>.
- </entry>
- </row>
- <row>
- <entry>
- <varname>sample_rate</varname>
- </entry>
- <entry>
- Sets the sample rate generated by
- <filename>libmikmod</filename>. Default is 44100.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>modplug</varname></title>
-
- <para>
- Module player based on <application>MODPlug</application>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>loop_count</varname>
- </entry>
- <entry>
- Number of times to loop the module if it uses backward loops.
- Default is <parameter>0</parameter> which prevents looping.
- <parameter>-1</parameter> loops forever.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="mpcdec_decoder">
- <title><varname>mpcdec</varname></title>
-
- <para>
- Decodes Musepack files using <ulink
- url="http://www.musepack.net/"><application>libmpcdec</application></ulink>.
- </para>
- </section>
-
- <section id="mpg123_decoder">
- <title><varname>mpg123</varname></title>
-
- <para>
- Decodes MP3 files using <ulink
- url="http://www.mpg123.de/"><application>libmpg123</application></ulink>.
- </para>
- </section>
-
- <section id="opus_decoder">
- <title><varname>opus</varname></title>
-
- <para>
- Decodes Opus files using <ulink
- url="http://www.opus-codec.org/"><application>libopus</application></ulink>.
- </para>
- </section>
-
- <section>
- <title><varname>pcm</varname></title>
-
- <para>
- Read raw PCM samples. It understands the "audio/L16" MIME
- type with parameters "rate" and "channels" according to RFC
- 2586. It also understands the
- <application>MPD</application>-specific MIME type
- "audio/x-mpd-float".
- </para>
- </section>
-
- <section id="sidplay_decoder">
- <title><varname>sidplay</varname></title>
-
- <para>
- C64 SID decoder based on <ulink
- url="http://sidplay2.sourceforge.net/"><application>libsidplay</application></ulink>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>songlength_database</varname>
- <parameter>PATH</parameter>
- </entry>
- <entry>
- Location of your songlengths file, as distributed
- with the HVSC. The <varname>sidplay</varname>
- plugin checks this for matching MD5 fingerprints.
- See <ulink url="http://www.hvsc.c64.org/download/C64Music/DOCUMENTS/Songlengths.faq"/>.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>default_songlength</varname>
- <parameter>SECONDS</parameter>
- </entry>
- <entry>
- This is the default playing time in seconds for
- songs not in the songlength database, or in case
- you're not using a database. A value of 0 means
- play indefinitely.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>filter</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Turns the SID filter emulation on or off.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="sndfile_decoder">
- <title><varname>sndfile</varname></title>
-
- <para>
- Decodes WAV and AIFF files using <ulink
- url="http://www.mega-nerd.com/libsndfile/"><filename>libsndfile</filename></ulink>.
- </para>
- </section>
-
- <section id="vorbis_decoder">
- <title><varname>vorbis</varname></title>
-
- <para>
- Decodes Ogg-Vorbis files using <ulink
- url="http://www.xiph.org/ogg/vorbis/"><application>libvorbis</application></ulink>.
- </para>
- </section>
-
- <section id="wavpack_decoder">
- <title><varname>wavpack</varname></title>
-
- <para>
- Decodes WavPack files using
- <ulink url="http://www.wavpack.com/"><application>libwavpack</application></ulink>.
- </para>
- </section>
-
- <section>
- <title><varname>wildmidi</varname></title>
-
- <para>
- MIDI decoder based on <ulink
- url="http://www.mindwerks.net/projects/wildmidi/"><application>libwildmidi</application></ulink>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>config_file</varname>
- </entry>
- <entry>
- The absolute path of the timidity config file. Defaults
- to
- <filename>/etc/timidity/timidity.cfg</filename>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
- </section>
-
- <section id="encoder_plugins">
- <title>Encoder plugins</title>
-
- <section>
- <title><varname>flac</varname></title>
-
- <para>
- Encodes into <ulink
- url="https://xiph.org/flac/">FLAC</ulink> (lossless).
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>compression</varname>
- </entry>
- <entry>
- Sets the <filename>libFLAC</filename> compression
- level. The levels range from 0 (fastest, least
- compression) to 8 (slowest, most compression).
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>lame</varname></title>
-
- <para>
- Encodes into MP3 using the <ulink
- url="http://lame.sourceforge.net/"><application>LAME</application></ulink>
- library.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>quality</varname>
- </entry>
- <entry>
- Sets the quality for VBR. 0 is the highest quality,
- 9 is the lowest quality. Cannot be used with
- <varname>bitrate</varname>.
- </entry>
- </row>
- <row>
- <entry>
- <varname>bitrate</varname>
- </entry>
- <entry>
- Sets the bit rate in kilobit per second. Cannot be
- used with <varname>quality</varname>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>null</varname></title>
-
- <para>
- Does not encode anything, passes the input PCM data as-is.
- </para>
- </section>
-
- <section>
- <title><varname>shine</varname></title>
-
- <para>
- Encodes into MP3 using the <ulink
- url="https://github.com/savonet/shine"><application>Shine</application></ulink>
- library.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>bitrate</varname>
- </entry>
- <entry>
- Sets the bit rate in kilobit per second.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>twolame</varname></title>
-
- <para>
- Encodes into MP2 using the <ulink
- url="http://www.twolame.org/"><application>TwoLAME</application></ulink>
- library.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>quality</varname>
- </entry>
- <entry>
- Sets the quality for VBR. 0 is the highest quality,
- 9 is the lowest quality. Cannot be used with
- <varname>bitrate</varname>.
- </entry>
- </row>
- <row>
- <entry>
- <varname>bitrate</varname>
- </entry>
- <entry>
- Sets the bit rate in kilobit per second. Cannot be
- used with <varname>quality</varname>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="opus_encoder">
- <title><varname>opus</varname></title>
-
- <para>
- Encodes into <ulink
- url="http://www.opus-codec.org/">Ogg Opus</ulink>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>bitrate</varname>
- </entry>
- <entry>
- Sets the data rate in bit per second. The special
- value "auto" lets <application>libopus</application>
- choose a rate (which is the default), and "max" uses
- the maximum possible data rate.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>complexity</varname>
- </entry>
- <entry>
- Sets the <ulink
- url="https://wiki.xiph.org/OpusFAQ#What_is_the_complexity_of_Opus.3F">Opus
- complexity</ulink>.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>signal</varname>
- </entry>
- <entry>
- Sets the Opus signal type. Valid values are "auto"
- (the default), "voice" and "music".
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>opustags</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Configures how metadata is interleaved into the stream.
- If set to <parameter>yes</parameter>, then metadata
- is inserted using ogg stream chaining, as specified
- in <ulink url="https://tools.ietf.org/html/rfc7845.html#section-7.2">RFC
- 7845</ulink>. If set to <parameter>no</parameter>
- (the default), then ogg stream chaining is avoided
- and other output-dependent method is used, if
- available.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="vorbis_encoder">
- <title><varname>vorbis</varname></title>
-
- <para>
- Encodes into <ulink url="http://www.vorbis.com/">Ogg
- Vorbis</ulink>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>quality</varname>
- </entry>
- <entry>
- Sets the quality for VBR. -1 is the lowest quality,
- 10 is the highest quality. Defaults to 3. Cannot
- be used with <varname>bitrate</varname>.
- </entry>
- </row>
- <row>
- <entry>
- <varname>bitrate</varname>
- </entry>
- <entry>
- Sets the bit rate in kilobit per second. Cannot be
- used with <varname>quality</varname>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>wave</varname></title>
-
- <para>
- Encodes into WAV (lossless).
- </para>
- </section>
- </section>
-
- <section id="resampler_plugins">
- <title>Resampler plugins</title>
-
- <para>
- The resampler can be configured in a block named
- <varname>resampler</varname>, for example:
- </para>
-
- <programlisting>resampler {
- plugin "soxr"
- quality "very high"
-}</programlisting>
-
- <para>
- The following table lists the <varname>resampler</varname>
- options valid for all plugins:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>plugin</varname>
- </entry>
- <entry>
- The name of the plugin.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <section id="internal_resampler">
- <title><varname>internal</varname></title>
-
- <para>
- A resampler built into <application>MPD</application>. Its
- quality is very poor, but its CPU usage is low. This is the
- fallback if <application>MPD</application> was compiled
- without an external resampler.
- </para>
- </section>
-
- <section id="libsamplerate_resampler">
- <title><varname>libsamplerate</varname></title>
-
- <para>
- A resampler using <ulink
- url="http://www.mega-nerd.com/SRC/"><application>libsamplerate</application></ulink>
- a.k.a. Secret Rabbit Code (SRC).
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>type</varname>
- </entry>
- <entry>
- The interpolator type. See below for a list of
- known types.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- The following converter types are provided by
- <application>libsamplerate</application>:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Type
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- "<parameter>Best Sinc Interpolator</parameter>" or
- "<parameter>0</parameter>"
- </entry>
- <entry>
- Band limited sinc interpolation, best quality, 97dB
- SNR, 96% BW.
- </entry>
- </row>
-
- <row>
- <entry>
- "<parameter>Medium Sinc Interpolator</parameter>" or
- "<parameter>1</parameter>"
- </entry>
- <entry>
- Band limited sinc interpolation, medium quality,
- 97dB SNR, 90% BW.
- </entry>
- </row>
-
- <row>
- <entry>
- "<parameter>Fastest Sinc Interpolator</parameter>" or
- "<parameter>2</parameter>"
- </entry>
- <entry>
- Band limited sinc interpolation, fastest, 97dB SNR,
- 80% BW.
- </entry>
- </row>
-
- <row>
- <entry>
- "<parameter>ZOH Sinc Interpolator</parameter>" or
- "<parameter>3</parameter>"
- </entry>
- <entry>
- Zero order hold interpolator, very fast, very poor
- quality with audible distortions.
- </entry>
- </row>
-
- <row>
- <entry>
- "<parameter>Linear Interpolator</parameter>" or
- "<parameter>4</parameter>"
- </entry>
- <entry>
- Linear interpolator, very fast, poor quality.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="soxr_resampler">
- <title><varname>soxr</varname></title>
-
- <para>
- A resampler using <ulink
- url="http://sourceforge.net/projects/soxr/"><application>libsoxr</application></ulink>,
- the SoX Resampler library
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Name
- </entry>
- <entry>
- Description
- </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>quality</varname>
- </entry>
- <entry>
- The <application>libsoxr</application> quality
- setting. Valid values are:
-
- <itemizedlist>
- <listitem>
- <para>
- "<parameter>very high</parameter>"
- </para>
- </listitem>
-
- <listitem>
- <para>
- "<parameter>high</parameter>" (the default)
- </para>
- </listitem>
-
- <listitem>
- <para>
- "<parameter>medium</parameter>"
- </para>
- </listitem>
-
- <listitem>
- <para>
- "<parameter>low</parameter>"
- </para>
- </listitem>
-
- <listitem>
- <para>
- "<parameter>quick</parameter>"
- </para>
- </listitem>
- </itemizedlist>
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>threads</varname>
- </entry>
- <entry>
- The number of <application>libsoxr</application>
- threads. "0" means "automatic". The default is "1"
- which disables multi-threading.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
- </section>
-
- <section id="output_plugins">
- <title>Output plugins</title>
-
- <section id="alsa_output">
- <title><varname>alsa</varname></title>
-
- <para>
- The <ulink
- url="http://www.alsa-project.org/"><application>Advanced
- Linux Sound Architecture</application>
- (<application>ALSA</application>)</ulink> plugin uses
- <filename>libasound</filename>. It is recommended if you
- are using Linux.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>device</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- Sets the device which should be used. This can be
- any valid ALSA device name. The default value is
- "default", which makes
- <filename>libasound</filename> choose a device. It
- is recommended to use a "hw" or "plughw" device,
- because otherwise, <filename>libasound</filename>
- automatically enables "dmix", which has major
- disadvantages (fixed sample rate, poor resampler,
- ...).
- </entry>
- </row>
- <row>
- <entry>
- <varname>buffer_time</varname>
- <parameter>US</parameter>
- </entry>
- <entry>
- Sets the device's buffer time in microseconds.
- Don't change unless you know what you're doing.
- </entry>
- </row>
- <row>
- <entry>
- <varname>period_time</varname>
- <parameter>US</parameter>
- </entry>
- <entry>
- Sets the device's period time in microseconds.
- Don't change unless you really know what you're
- doing.
- </entry>
- </row>
- <row>
- <entry>
- <varname>auto_resample</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- If set to <parameter>no</parameter>, then
- <filename>libasound</filename> will not attempt to
- resample, handing the responsibility over to
- <application>MPD</application>. It is recommended
- to let <application>MPD</application> resample (with
- <application>libsamplerate</application>), because
- ALSA is quite poor at doing so.
- </entry>
- </row>
- <row>
- <entry>
- <varname>auto_channels</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- If set to <parameter>no</parameter>, then
- <filename>libasound</filename> will not attempt to
- convert between different channel numbers.
- </entry>
- </row>
- <row>
- <entry>
- <varname>auto_format</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- If set to <parameter>no</parameter>, then
- <filename>libasound</filename> will not attempt to
- convert between different sample formats (16 bit, 24
- bit, floating point, ...).
- </entry>
- </row>
- <row>
- <entry>
- <varname>dop</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- If set to <parameter>yes</parameter>, then DSD over
- PCM according to the <ulink
- url="http://dsd-guide.com/dop-open-standard">DoP
- standard</ulink> 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
- <parameter>no</parameter> and you can enable the
- option at your own risk.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>allowed_formats</varname>
- <parameter>F1 F2 ...</parameter>
- </entry>
- <entry>
- <para>
- Specifies a list of allowed audio formats, separated
- by a space. All items may contain asterisks as a
- wild card, and may be followed by
- "<parameter>=dop</parameter>" to enable DoP (DSD
- over PCM) for this particular format. The first
- matching format is used, and if none matches, MPD
- chooses the best fallback of this list.
- </para>
- <para>
- Example: "<parameter>96000:16:* 192000:24:*
- dsd64:*=dop *:dsd:*</parameter>".
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- The according hardware mixer plugin understands the
- following settings:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>mixer_device</varname>
- <parameter>DEVICE</parameter>
- </entry>
- <entry>
- <para>
- Sets the ALSA mixer device name, defaulting to
- <parameter>default</parameter> which lets ALSA
- pick a value.
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <varname>mixer_control</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- <para>
- Choose a mixer control, defaulting to
- <parameter>PCM</parameter>. Type <command>amixer
- scontrols</command> to get a list of available
- mixer controls.
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <varname>mixer_index</varname>
- <parameter>NUMBER</parameter>
- </entry>
- <entry>
- Choose a mixer control index. This is necessary if
- there is more than one control with the same name.
- Defaults to <parameter>0</parameter> (the first
- one).
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- The following attributes can be configured at runtime using
- the <command>outputset</command> command:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>dop</varname>
- <parameter>1|0</parameter>
- </entry>
- <entry>
- <para>
- Allows changing the <varname>dop</varname>
- configuration setting at runtime. This takes
- effect the next time the output is opened.
- </para>
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>allowed_formats</varname>
- <parameter>F1 F2 ...</parameter>
- </entry>
- <entry>
- <para>
- Allows changing the
- <varname>allowed_formats</varname> configuration
- setting at runtime. This takes effect the next
- time the output is opened.
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>ao</varname></title>
-
- <para>
- The <varname>ao</varname> plugin uses the portable <ulink
- url="https://www.xiph.org/ao/"><filename>libao</filename></ulink>
- library. Use only if there is no native plugin for your
- operating system.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>driver</varname>
- <parameter>D</parameter>
- </entry>
- <entry>
- The <filename>libao</filename> driver to use for
- audio output. Possible values depend on what libao
- drivers are available. See <ulink
- url="http://www.xiph.org/ao/doc/drivers.html">http://www.xiph.org/ao/doc/drivers.html</ulink>
- for information on some commonly used drivers.
- Typical values for Linux include "oss" and "alsa09".
- The default is "default", which causes libao to
- select an appropriate plugin.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>options</varname>
- <parameter>O</parameter>
- </entry>
- <entry>
- Options to pass to the selected
- <filename>libao</filename> driver.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>write_size</varname>
- <parameter>O</parameter>
- </entry>
- <entry>
- This specifies how many bytes to write to the audio
- device at once. This parameter is to work around a
- bug in older versions of libao on sound cards with
- very small buffers. The default is 1024.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>sndio</varname></title>
-
- <para>
- The <varname>sndio</varname> plugin uses the <ulink
- url="http://www.sndio.org/">sndio</ulink> library. It should normally be used
- on OpenBSD.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>device</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- The audio output device <filename>libsndio</filename>
- will attempt to use. The default is "default" which
- causes libsndio to select the first output device.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>buffer_time</varname>
- <parameter>MS</parameter>
- </entry>
- <entry>
- Set the application buffer time in milliseconds.
- </entry>
- </row>
-
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>fifo</varname></title>
-
- <para>
- The <varname>fifo</varname> plugin writes raw PCM data to a
- FIFO (First In, First Out) file. The data can be read by
- another program.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>path</varname>
- <parameter>P</parameter>
- </entry>
- <entry>
- This specifies the path of the FIFO to write to.
- Must be an absolute path. If the path does not
- exist, it will be created when
- <application>MPD</application> is started, and
- removed when <application>MPD</application> is
- stopped. The FIFO will be created with the same
- user and group as <application>MPD</application> is
- running as. Default permissions can be modified by
- using the builtin shell command
- <filename>umask</filename>. If a FIFO already
- exists at the specified path it will be reused, and
- will not be removed when
- <application>MPD</application> is stopped. You can
- use the "mkfifo" command to create this, and then
- you may modify the permissions to your liking.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="jack_output">
- <title><varname>jack</varname></title>
-
- <para>
- The <varname>jack</varname> plugin connects to a <ulink
- url="http://jackaudio.org/"><application>JACK</application></ulink>
- server.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>client_name</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- The name of the <application>JACK</application>
- client. Defaults to "Music Player Daemon".
- </entry>
- </row>
- <row>
- <entry>
- <varname>server_name</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- Optional name of the <application>JACK</application>
- server.
- </entry>
- </row>
- <row>
- <entry>
- <varname>autostart</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- If set to <parameter>yes</parameter>, then
- <filename>libjack</filename> will automatically
- launch the <application>JACK</application> daemon.
- Disabled by default.
- </entry>
- </row>
- <row>
- <entry>
- <varname>source_ports</varname>
- <parameter>A,B</parameter>
- </entry>
- <entry>
- The names of the <application>JACK</application>
- source ports to be created. By default, the ports
- "left" and "right" are created. To use more ports,
- you have to tweak this option.
- </entry>
- </row>
- <row>
- <entry>
- <varname>destination_ports</varname>
- <parameter>A,B</parameter>
- </entry>
- <entry>
- The names of the <application>JACK</application>
- destination ports to connect to.
- </entry>
- </row>
- <row>
- <entry>
- <varname>ringbuffer_size</varname>
- <parameter>NBYTES</parameter>
- </entry>
- <entry>
- Sets the size of the ring buffer for each channel.
- Do not configure this value unless you know what
- you're doing.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="httpd_output">
- <title><varname>httpd</varname></title>
-
- <para>
- The <varname>httpd</varname> plugin creates a HTTP server,
- similar to <ulink
- url="http://www.shoutcast.com/"><application>ShoutCast</application></ulink>
- / <ulink
- url="http://icecast.org/"><application>IceCast</application></ulink>.
- HTTP streaming clients like
- <application>mplayer</application>, <application>VLC</application>,
- and <application>mpv</application> can connect to it.
- </para>
-
- <para>
- It is highly recommended to configure a fixed
- <varname>format</varname>, because a stream cannot switch
- its audio format on-the-fly when the song changes.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>port</varname>
- <parameter>P</parameter>
- </entry>
- <entry>
- Binds the HTTP server to the specified port.
- </entry>
- </row>
- <row>
- <entry>
- <varname>bind_to_address</varname>
- <parameter>ADDR</parameter>
- </entry>
- <entry>
- Binds the HTTP server to the specified address (IPv4 or
- IPv6). Multiple addresses in parallel are not supported.
- </entry>
- </row>
- <row>
- <entry>
- <varname>encoder</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- Chooses an encoder plugin. A list of encoder
- plugins can be found in the <link
- linkend="encoder_plugins">encoder plugin
- reference</link>.
- </entry>
- </row>
- <row>
- <entry>
- <varname>max_clients</varname>
- <parameter>MC</parameter>
- </entry>
- <entry>
- Sets a limit, number of concurrent clients. When set
- to 0 no limit will apply.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>null</varname></title>
-
- <para>
- The <varname>null</varname> plugin does nothing. It
- discards everything sent to it.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>sync</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- If set to <parameter>no</parameter>, then the timer
- is disabled - the device will accept PCM chunks at
- arbitrary rate (useful for benchmarking). The
- default behaviour is to play in real time.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="oss_output">
- <title><varname>oss</varname></title>
-
- <para>
- The "Open Sound System" plugin is supported on most Unix
- platforms.
- </para>
-
- <para>
- On Linux, <application>OSS</application> has been superseded
- by <application>ALSA</application>. Use the <link
- linkend="alsa_output"><application>ALSA</application> output
- plugin</link> instead of this one on Linux.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>device</varname>
- <parameter>PATH</parameter>
- </entry>
- <entry>
- Sets the path of the PCM device. If not specified,
- then <application>MPD</application> will attempt to
- open <filename>/dev/sound/dsp</filename> and
- <filename>/dev/dsp</filename>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>
- The according hardware mixer plugin understands the
- following settings:
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>mixer_device</varname>
- <parameter>DEVICE</parameter>
- </entry>
- <entry>
- <para>
- Sets the OSS mixer device path, defaulting to
- <filename>/dev/mixer</filename>.
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <varname>mixer_control</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- <para>
- Choose a mixer control, defaulting to
- <parameter>PCM</parameter>.
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="openal_output">
- <title><varname>openal</varname></title>
-
- <para>
- The "OpenAL" plugin uses <ulink
- url="http://kcat.strangesoft.net/openal.html"><filename>libopenal</filename></ulink>.
- It is supported on many platforms. Use only if there is no
- native plugin for your operating system.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>device</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- Sets the device which should be used. This can be
- any valid OpenAL device name. If not specified, then
- <filename>libopenal</filename> will choose a default device.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>osx</varname></title>
-
- <para>
- The "Mac OS X" plugin uses Apple's CoreAudio API.
- </para>
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>device</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- Sets the device which should be used. Uses device names as listed in the
- "Audio Devices" window of "Audio MIDI Setup".
- </entry>
- </row>
- <row>
- <entry>
- <varname>hog_device</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Hog the device. This means that it takes exclusive control of the audio
- output device it is playing through, and no other program can access it.
- </entry>
- </row>
- <row>
- <entry>
- <varname>dop</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- If set to <parameter>yes</parameter>, then DSD over
- PCM according to the <ulink
- url="http://dsd-guide.com/dop-open-standard">DoP
- standard</ulink> 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
- <parameter>no</parameter> and you can enable the
- option at your own risk. Under macOS you must
- make sure to select a physical mode on the output
- device which supports at least 24 bits per channel
- as the Mac OS X plugin only changes the sample rate.
- </entry>
- </row>
- <row>
- <entry>
- <varname>channel_map</varname>
- <parameter>SOURCE,SOURCE,...</parameter>
- </entry>
- <entry><para>
- Specifies a channel map. If your audio device has more than two
- outputs this allows you to route audio to auxillary outputs. For
- predictable results you should also specify a "format" with a fixed
- number of channels, e.g. "*:*:2". The number of items in the channel
- map must match the number of output channels of your output device.
- Each list entry specifies the source for that output channel; use "-1"
- to silence an output. For example, if you have a four-channel output
- device and you wish to send stereo sound (format "*:*:2") to outputs 3
- and 4 while leaving outputs 1 and 2 silent then set the channel map to
- "-1,-1,0,1". In this example '0' and '1' denote the left and right
- channel respectively.
- </para>
- <para>
- The channel map may not refer to outputs that do not exist according
- to the format. If the format is "*:*:1" (mono) and you have a
- four-channel sound card then "-1,-1,0,0" (dual mono output on the
- second pair of sound card outputs) is a valid channel map but
- "-1,-1,0,1" is not because the second channel ('1') does not exist
- when the output is mono.
- </para></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>pipe</varname></title>
-
- <para>
- The <varname>pipe</varname> plugin starts a program and
- writes raw PCM data into its standard input.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>command</varname>
- <parameter>CMD</parameter>
- </entry>
- <entry>
- This command is invoked with the shell.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="pulse_output">
- <title><varname>pulse</varname></title>
-
- <para>
- The <varname>pulse</varname> plugin connects to a <ulink
- url="http://www.freedesktop.org/wiki/Software/PulseAudio/"><application>PulseAudio</application></ulink>
- server. Requires <filename>libpulse</filename>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>server</varname>
- <parameter>HOSTNAME</parameter>
- </entry>
- <entry>
- Sets the host name of the
- <application>PulseAudio</application> server. By
- default, <application>MPD</application> connects to
- the local <application>PulseAudio</application>
- server.
- </entry>
- </row>
- <row>
- <entry>
- <varname>sink</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- Specifies the name of the
- <application>PulseAudio</application> sink
- <application>MPD</application> should play on.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>roar</varname></title>
-
- <para>
- The <varname>roar</varname> plugin connects to a <ulink
- url="http://roaraudio.keep-cool.org/">RoarAudio</ulink>
- server.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>server</varname>
- <parameter>HOSTNAME</parameter>
- </entry>
- <entry>
- The host name of the RoarAudio server. If not
- specified, then <application>MPD</application> will
- connect to the default locations.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>role</varname>
- <parameter>ROLE</parameter>
- </entry>
- <entry>
- The "role" that <application>MPD</application>
- registers itself as in the RoarAudio server. The
- default is "music".
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>recorder</varname></title>
-
- <para>
- The <varname>recorder</varname> plugin writes the audio
- played by <application>MPD</application> to a file. This
- may be useful for recording radio streams.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>path</varname>
- <parameter>P</parameter>
- </entry>
- <entry>
- Write to this file.
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>format_path</varname>
- <parameter>P</parameter>
- </entry>
- <entry>
- <para>
- An alternative to <varname>path</varname> which
- provides a format string referring to tag values.
-
- The special tag <varname>iso8601</varname> emits
- the current date and time in <ulink
- url="https://en.wikipedia.org/wiki/ISO_8601">ISO8601</ulink>
- format (UTC).
- Every time a new song starts or a new tag gets
- received from a radio station, a new file is
- opened. If the format does not render a file
- name, nothing is recorded.
- </para>
-
- <para>
- A tag name enclosed in percent signs ('%') is
- replaced with the tag value. Example:
- <parameter>~/.mpd/recorder/%artist% -
- %title%.ogg</parameter>
- </para>
-
- <para>
- Square brackets can be used to group a substring.
- If none of the tags referred in the group can be
- found, the whole group is omitted. Example:
- <parameter>[~/.mpd/recorder/[%artist% -
- ]%title%.ogg]</parameter> (this omits the dash
- when no artist tag exists; if title also doesn't
- exist, no file is written)
- </para>
-
- <para>
- The operators "|" (logical "or") and "&amp;"
- (logical "and") can be used to select portions of
- the format string depending on the existing tag
- values. Example:
- <parameter>~/.mpd/recorder/[%title%|%name%].ogg</parameter>
- (use the "name" tag if no title exists)
- </para>
- </entry>
- </row>
-
- <row>
- <entry>
- <varname>encoder</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- Chooses an encoder plugin. A list of encoder
- plugins can be found in the <link
- linkend="encoder_plugins">encoder plugin
- reference</link>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section id="shout_output">
- <title><varname>shout</varname></title>
-
- <para>
- The <varname>shout</varname> plugin connects to a <ulink
- url="http://www.shoutcast.com/"><application>ShoutCast</application></ulink>
- or <ulink
- url="http://icecast.org/"><application>IceCast</application></ulink>
- server using <filename>libshout</filename>. It forwards
- tags to this server.
- </para>
-
- <para>
- You must set a <varname>format</varname>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>host</varname>
- <parameter>HOSTNAME</parameter>
- </entry>
- <entry>
- Sets the host name of the <ulink
- url="http://www.shoutcast.com/"><application>ShoutCast</application></ulink>
- / <ulink
- url="http://icecast.org/"><application>IceCast</application></ulink>
- server.
- </entry>
- </row>
- <row>
- <entry>
- <varname>port</varname>
- <parameter>PORTNUMBER</parameter>
- </entry>
- <entry>
- Connect to this port number on the specified host.
- </entry>
- </row>
- <row>
- <entry>
- <varname>timeout</varname>
- <parameter>SECONDS</parameter>
- </entry>
- <entry>
- Set the timeout for the shout connection in seconds.
- Defaults to 2 seconds.
- </entry>
- </row>
- <row>
- <entry>
- <varname>protocol</varname>
- <parameter>icecast2|icecast1|shoutcast</parameter>
- </entry>
- <entry>
- Specifies the protocol that wil be used to connect
- to the server. The default is
- "<parameter>icecast2</parameter>".
-
- </entry>
- </row>
- <row>
- <entry>
- <varname>mount</varname>
- <parameter>URI</parameter>
- </entry>
- <entry>
- Mounts the <application>MPD</application> stream in
- the specified URI.
- </entry>
- </row>
- <row>
- <entry>
- <varname>user</varname>
- <parameter>USERNAME</parameter>
- </entry>
- <entry>
- Sets the user name for submitting the stream to the
- server. Default is "source".
- </entry>
- </row>
- <row>
- <entry>
- <varname>password</varname>
- <parameter>PWD</parameter>
- </entry>
- <entry>
- Sets the password for submitting the stream to the
- server.
- </entry>
- </row>
- <row>
- <entry>
- <varname>name</varname>
- <parameter>NAME</parameter>
- </entry>
- <entry>
- Sets the name of the stream.
- </entry>
- </row>
- <row>
- <entry>
- <varname>genre</varname>
- <parameter>GENRE</parameter>
- </entry>
- <entry>
- Sets the genre of the stream (optional).
- </entry>
- </row>
- <row>
- <entry>
- <varname>description</varname>
- <parameter>DESCRIPTION</parameter>
- </entry>
- <entry>
- Sets a short description of the stream (optional).
- </entry>
- </row>
- <row>
- <entry>
- <varname>url</varname>
- <parameter>URL</parameter>
- </entry>
- <entry>
- Sets a URL associated with the stream (optional).
- </entry>
- </row>
- <row>
- <entry>
- <varname>public</varname>
- <parameter>yes|no</parameter>
- </entry>
- <entry>
- Specifies whether the stream should be "public".
- Default is <parameter>no</parameter>.
- </entry>
- </row>
- <row>
- <entry>
- <varname>encoder</varname>
- <parameter>PLUGIN</parameter>
- </entry>
- <entry>
- Chooses an encoder plugin. Default is <link
- linkend="vorbis_encoder"><parameter>vorbis</parameter></link>.
- A list of encoder plugins can be found in the <link
- linkend="encoder_plugins">encoder plugin
- reference</link>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>solaris</varname></title>
-
- <para>
- The "Solaris" plugin runs only on SUN Solaris, and plays via
- <filename>/dev/audio</filename>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>device</varname>
- <parameter>PATH</parameter>
- </entry>
- <entry>
- Sets the path of the audio device, defaults to
- <filename>/dev/audio</filename>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
- </section>
-
- <section id="playlist_plugins">
- <title>Playlist plugins</title>
-
- <section>
- <title><varname>asx</varname></title>
-
- <para>
- Reads <filename>.asx</filename> playlist files.
- </para>
- </section>
-
- <section>
- <title><varname>cue</varname></title>
-
- <para>
- Reads <filename>.cue</filename> files.
- </para>
- </section>
-
- <section>
- <title><varname>embcue</varname></title>
-
- <para>
- Reads CUE sheets from the "CUESHEET" tag of song files.
- </para>
- </section>
-
- <section>
- <title><varname>m3u</varname></title>
-
- <para>
- Reads <filename>.m3u</filename> playlist files.
- </para>
- </section>
-
- <section>
- <title><varname>extm3u</varname></title>
-
- <para>
- Reads extended <filename>.m3u</filename> playlist files.
- </para>
- </section>
-
- <section>
- <title><varname>flac</varname></title>
-
- <para>
- Reads the <varname>cuesheet</varname> metablock from a FLAC
- file.
- </para>
- </section>
-
- <section>
- <title><varname>pls</varname></title>
-
- <para>
- Reads <filename>.pls</filename> playlist files.
- </para>
- </section>
-
- <section>
- <title><varname>rss</varname></title>
-
- <para>
- Reads music links from <filename>.rss</filename> files.
- </para>
- </section>
-
- <section>
- <title><varname>soundcloud</varname></title>
-
- <para>
- Download playlist from SoundCloud. It accepts URIs starting
- with <filename>soundcloud://</filename>.
- </para>
-
- <informaltable>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Setting</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <varname>apikey</varname>
- <parameter>KEY</parameter>
- </entry>
- <entry>
- An API key to access the SoundCloud servers.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
-
- <section>
- <title><varname>xspf</varname></title>
-
- <para>
- Reads <ulink url="http://www.xspf.org/">XSPF</ulink>
- playlist files.
- </para>
- </section>
- </section>
- </chapter>
-</book>