aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/developer.xml50
-rw-r--r--doc/mpd.conf.547
-rw-r--r--doc/protocol.xml210
-rw-r--r--doc/user.xml545
4 files changed, 734 insertions, 118 deletions
diff --git a/doc/developer.xml b/doc/developer.xml
index 729e6a513..aa3cc62c0 100644
--- a/doc/developer.xml
+++ b/doc/developer.xml
@@ -10,7 +10,7 @@
<para>
This is a guide for those who wish to hack on the MPD source
code. MPD is an open project, and we are always happy about
- contributions. So far, more than 50 people have contributed
+ contributions. So far, more than 150 people have contributed
patches.
</para>
@@ -155,7 +155,53 @@ foo(const char *abc, int xyz)
<para>
Send your patches to the mailing list:
- mpd-devel@musicpd.org
+ <email>mpd-devel@musicpd.org</email> (<ulink
+ url="http://mailman.blarg.de/listinfo/mpd-devel">subscribe
+ here</ulink>)
</para>
+
+ <para>
+ <command>git pull</command> requests are preferred. Regular
+ contributors can get <ulink
+ url="http://git.musicpd.org/account-policy.html">an account on
+ git.musicpd.org</ulink>, but any public git repository will do.
+ </para>
+ </chapter>
+
+ <chapter>
+ <title>Development Tools</title>
+
+ <section>
+ <title>Clang Static Analyzer</title>
+
+ <para>
+ The <ulink url="http://clang-analyzer.llvm.org/">clang static
+ analyzer</ulink> is a tool that helps find bugs. To run it on
+ the MPD code base, install LLVM and clang. Configure MPD to
+ use clang:
+ </para>
+
+ <programlisting>./configure --enable-debug CXX=clang++ CC=clang ...</programlisting>
+
+ <para>
+ It is recommended to use <option>--enable-debug</option>,
+ because the analyzer takes advantage of
+ <function>assert()</function> calls, which are only enabled in
+ the debug build.
+ </para>
+
+ <para>
+ Now run the analyzer:
+ </para>
+
+ <programlisting>scan-build --use-c++=clang++ --use-cc=clang make</programlisting>
+
+ <para>
+ The options <option>--use-c++</option> and
+ <option>--use-cc</option> are necessary because it invokes
+ <command>cc</command> for actually compiling the sources by
+ default. That breaks, because MPD requires a C99 compiler.
+ </para>
+ </section>
</chapter>
</book>
diff --git a/doc/mpd.conf.5 b/doc/mpd.conf.5
index 6431613d1..6e3bae7b2 100644
--- a/doc/mpd.conf.5
+++ b/doc/mpd.conf.5
@@ -136,53 +136,6 @@ for the format of this parameter. Multiple audio_output sections may be
specified. If no audio_output section is specified, then MPD will scan for a
usable audio output.
.TP
-.B audio_output_format <sample_rate:bits:channels>
-This specifies the sample rate, bits per sample, and number of channels of
-audio that is sent to each audio output. Note that audio outputs may specify
-their own audio format which will be used for actual output to the audio
-device. An example is "44100:16:2" for 44100Hz, 16 bits, and 2 channels. The
-default is to use the audio format of the input file.
-Any of the three attributes may be an asterisk to specify that this
-attribute should not be enforced
-.TP
-.B samplerate_converter <integer or prefix>
-This specifies the libsamplerate converter to use. The supplied value should
-either be an integer or a prefix of the name of a converter. The default is
-"Fastest Sinc Interpolator".
-
-At the time of this writing, the following converters are available:
-.RS
-.TP
-Best Sinc Interpolator (0)
-
-Band limited sinc interpolation, best quality, 97dB SNR, 96% BW.
-.TP
-Medium Sinc Interpolator (1)
-
-Band limited sinc interpolation, medium quality, 97dB SNR, 90% BW.
-.TP
-Fastest Sinc Interpolator (2)
-
-Band limited sinc interpolation, fastest, 97dB SNR, 80% BW.
-.TP
-ZOH Interpolator (3)
-
-Zero order hold interpolator, very fast, very poor quality with audible
-distortions.
-.TP
-Linear Interpolator (4)
-
-Linear interpolator, very fast, poor quality.
-.TP
-internal
-
-Poor quality, no floating point operations. This is the default (and
-only choice) if MPD was compiled without libsamplerate.
-.RE
-.IP
-For an up-to-date list of available converters, please see the libsamplerate
-documentation (available online at <\fBhttp://www.mega\-nerd.com/SRC/\fP>).
-.TP
.B replaygain <off or album or track or auto>
If specified, mpd will adjust the volume of songs played using ReplayGain tags
(see <\fBhttp://www.replaygain.org/\fP>). Setting this to "album" will adjust
diff --git a/doc/protocol.xml b/doc/protocol.xml
index abc74e4e6..cff685060 100644
--- a/doc/protocol.xml
+++ b/doc/protocol.xml
@@ -1213,6 +1213,28 @@ OK
</listitem>
</varlistentry>
+ <varlistentry id="command_rangeid">
+ <term>
+ <cmdsynopsis>
+ <command>rangeid</command>
+ <arg choice="req"><replaceable>ID</replaceable></arg>
+ <arg choice="req"><replaceable>START:END</replaceable></arg>
+ </cmdsynopsis>
+ </term>
+ <listitem>
+ <para>
+ <footnote id="since_0_19"><simpara>Since MPD
+ 0.19</simpara></footnote> Specifies the portion of the
+ song that shall be played. <varname>START</varname> and
+ <varname>END</varname> are offsets in seconds
+ (fractional seconds allowed); both are optional.
+ Omitting both (i.e. sending just ":") means "remove the
+ range, play everything". A song that is currently
+ playing cannot be manipulated this way.
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="command_shuffle">
<term>
<cmdsynopsis>
@@ -1258,6 +1280,44 @@ OK
</para>
</listitem>
</varlistentry>
+
+ <varlistentry id="command_addtagid">
+ <term>
+ <cmdsynopsis>
+ <command>addtagid</command>
+ <arg choice="req"><replaceable>SONGID</replaceable></arg>
+ <arg choice="req"><replaceable>TAG</replaceable></arg>
+ <arg choice="req"><replaceable>VALUE</replaceable></arg>
+ </cmdsynopsis>
+ </term>
+ <listitem>
+ <para>
+ Adds a tag to the specified song. Editing song tags is
+ only possible for remote songs. This change is
+ volatile: it may be overwritten by tags received from
+ the server, and the data is gone when the song gets
+ removed from the queue.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="command_cleartagid">
+ <term>
+ <cmdsynopsis>
+ <command>cleartagid</command>
+ <arg choice="req"><replaceable>SONGID</replaceable></arg>
+ <arg choice="opt"><replaceable>TAG</replaceable></arg>
+ </cmdsynopsis>
+ </term>
+ <listitem>
+ <para>
+ Removes tags from the specified song. If
+ <varname>TAG</varname> is not specified, then all tag
+ values will be removed. Editing song tags is only
+ possible for remote songs.
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</section>
@@ -1455,12 +1515,15 @@ OK
<title>The music database</title>
<variablelist>
+
<varlistentry id="command_count">
<term>
<cmdsynopsis>
<command>count</command>
<arg choice="req"><replaceable>TAG</replaceable></arg>
<arg choice="req"><replaceable>NEEDLE</replaceable></arg>
+ <arg choice="opt">group</arg>
+ <arg choice="opt"><replaceable>GROUPTYPE</replaceable></arg>
</cmdsynopsis>
</term>
<listitem>
@@ -1468,8 +1531,15 @@ OK
Counts the number of songs and their total playtime in
the db matching <varname>TAG</varname> exactly.
</para>
+ <para>
+ The <parameter>group</parameter> keyword may be used to
+ group the results by a tag. The following prints
+ per-artist counts:
+ </para>
+ <programlisting>count group artist</programlisting>
</listitem>
</varlistentry>
+
<varlistentry id="command_find">
<term>
<cmdsynopsis>
@@ -1483,15 +1553,43 @@ OK
<para>
Finds songs in the db that are exactly
<varname>WHAT</varname>. <varname>TYPE</varname> can
- be any tag supported by MPD, or one of the three special
- parameters — <parameter>file</parameter> to search by
+ be any tag supported by MPD, or one of the special
+ parameters:
+ </para>
- full path (relative to the music directory),
- <parameter>in</parameter> to restrict the search to
- songs in the given directory (also relative to the music
- directory) and
- <parameter>any</parameter> to match against all
- available tags. <varname>WHAT</varname> is what to find.
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>any</parameter> checks all tag values
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <parameter>file</parameter> checks the full path
+ (relative to the music directory)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <parameter>base</parameter> restricts the search to
+ songs in the given directory (also relative to the
+ music directory)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <parameter>modified-since</parameter> compares the
+ file's time stamp with the given value (ISO 8601 or
+ UNIX time stamp)
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <varname>WHAT</varname> is what to find.
</para>
</listitem>
</varlistentry>
@@ -1512,27 +1610,42 @@ OK
</para>
</listitem>
</varlistentry>
+
<varlistentry id="command_list">
<term>
<cmdsynopsis>
<command>list</command>
<arg choice="req"><replaceable>TYPE</replaceable></arg>
- <arg><replaceable>ARTIST</replaceable></arg>
+ <arg choice="opt"><replaceable>FILTERTYPE</replaceable></arg>
+ <arg choice="opt"><replaceable>FILTERWHAT</replaceable></arg>
+ <arg choice="opt"><replaceable>...</replaceable></arg>
+ <arg choice="opt">group</arg>
+ <arg choice="opt"><replaceable>GROUPTYPE</replaceable></arg>
+ <arg choice="opt"><replaceable>...</replaceable></arg>
</cmdsynopsis>
</term>
<listitem>
<para>
- Lists all tags of the specified type.
+ Lists unique tags values of the specified type.
<varname>TYPE</varname> can be any tag supported by MPD or
<parameter>file</parameter>.
</para>
<para>
- <varname>ARTIST</varname> is an optional parameter when
- type is album, this specifies to list albums by an
- artist.
+ Additional arguments may specify a filter like the one
+ in the <link
+ linkend="command_find"><command>find</command>
+ command</link>.
</para>
+ <para>
+ The <parameter>group</parameter> keyword may be used
+ (repeatedly) to group the results by one or more tags.
+ The following example lists all album names,
+ grouped by their respective (album) artist:
+ </para>
+ <programlisting>list album group albumartist</programlisting>
</listitem>
</varlistentry>
+
<varlistentry id="command_listall">
<term>
<cmdsynopsis>
@@ -1545,6 +1658,12 @@ OK
Lists all songs and directories in
<varname>URI</varname>.
</para>
+ <para>
+ Do not use this command. Do not manage a client-side
+ copy of MPD's database. That is fragile and adds huge
+ overhead. It will break with large databases. Instead,
+ query MPD whenever you need something.
+ </para>
</listitem>
</varlistentry>
<varlistentry id="command_listallinfo">
@@ -1560,6 +1679,37 @@ OK
returns metadata info in the same format as
<command>lsinfo</command>.
</para>
+ <para>
+ Do not use this command. Do not manage a client-side
+ copy of MPD's database. That is fragile and adds huge
+ overhead. It will break with large databases. Instead,
+ query MPD whenever you need something.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry id="command_listfiles">
+ <term>
+ <cmdsynopsis>
+ <command>listfiles</command>
+ <arg><replaceable>URI</replaceable></arg>
+ </cmdsynopsis>
+ </term>
+ <listitem>
+ <para>
+ Lists the contents of the directory
+ <varname>URI</varname>, including files are not
+ recognized by MPD. <varname>URI</varname> can be a path
+ relative to the music directory or an URI understood by
+ one of the storage plugins. The response contains at
+ least one line for each directory entry with the prefix
+ "file: " or "directory: ", and may be followed by file
+ attributes such as "Last-Modified" and "size".
+ </para>
+ <para>
+ For example, "smb://SERVER" returns a list of all shares
+ on the given SMB/CIFS server; "nfs://servername/path"
+ obtains a directory listing from the NFS server.
+ </para>
</listitem>
</varlistentry>
<varlistentry id="command_lsinfo">
@@ -1580,6 +1730,10 @@ OK
deprecated; use "listplaylists" instead.
</para>
<para>
+ This command may be used to list metadata of remote
+ files (e.g. URI beginning with "http://" or "smb://").
+ </para>
+ <para>
Clients that are connected via UNIX domain socket may
use this command to read the tags of an arbitrary local
file (URI beginning with "file:///").
@@ -1601,6 +1755,10 @@ OK
"file:///foo/bar.ogg".
</para>
<para>
+ This command may be used to list metadata of remote
+ files (e.g. URI beginning with "http://" or "smb://").
+ </para>
+ <para>
The response consists of lines in the form "KEY: VALUE".
Comments with suspicious characters (e.g. newlines) are
ignored silently.
@@ -1952,6 +2110,32 @@ OK
<para>
Shows information about all outputs.
</para>
+ <screen>
+outputid: 0
+outputname: My ALSA Device
+outputenabled: 0
+OK
+ </screen>
+ <para>
+ Return information:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <varname>outputid</varname>: ID of the output. May change between executions
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <varname>outputname</varname>: Name of the output. It can be any.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <varname>outputenabled</varname>: Status of the output. 0 if disabled, 1 if enabled.
+ </para>
+ </listitem>
+ </itemizedlist>
</listitem>
</varlistentry>
</variablelist>
diff --git a/doc/user.xml b/doc/user.xml
index 6357267e4..d70c9ead1 100644
--- a/doc/user.xml
+++ b/doc/user.xml
@@ -80,6 +80,36 @@ cd mpd-version</programlisting>
</para>
<para>
+ For example, the following installs a fairly complete list of
+ build dependencies on Debian Wheezy:
+ </para>
+
+ <programlisting>
+apt-get install g++ automake autoconf \
+ 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 \
+ libsamplerate0-dev \
+ libbz2-dev libcdio-paranoia-dev libiso9660-dev libmms-dev \
+ libzzip-dev \
+ libcurl4-gnutls-dev libyajl-dev \
+ libasound2-dev libao-dev libjack-jackd2-dev libopenal-dev \
+ libpulse-dev libroar-dev libshout3-dev \
+ libmpdclient-dev \
+ libavahi-client-dev \
+ libsqlite3-dev \
+ libsystemd-daemon-dev libwrap0-dev \
+ libcppunit-dev xmlto \
+ libboost-dev \
+ libglib2.0-dev
+ </programlisting>
+
+ <para>
Now configure the source tree:
</para>
@@ -106,29 +136,18 @@ cd mpd-version</programlisting>
<para>
Using <filename>systemd</filename>, you can launch
<filename>mpd</filename> on demand when the first client
- attempts to connect. Create two files in
- <filename>/etc/systemd/system/</filename>; first
- <filename>mpd.socket</filename>:
+ attempts to connect.
</para>
- <programlisting>[Socket]
-ListenStream=/run/mpd.socket
-ListenStream=6600
-[Install]
-WantedBy=sockets.target</programlisting>
-
<para>
- Now create <filename>mpd.service</filename>:
+ MPD comes with two <filename>systemd</filename> unit files: a
+ "service" unit and a "socket" unit. These will only be
+ installed when MPD was configured with
+ <parameter>--with-systemdsystemunitdir=/lib/systemd</parameter>.
</para>
- <programlisting>[Unit]
-Description=Music Player Daemon
-After=sound.target
-[Service]
-ExecStart=/usr/bin/mpd --stdout --no-daemon</programlisting>
-
<para>
- Start the socket:
+ To enable socket activation, type:
</para>
<programlisting>systemctl enable mpd.socket
@@ -162,6 +181,14 @@ systemctl start mpd.socket</programlisting>
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 storage plugins 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>".
+ </para>
</section>
<section>
@@ -393,7 +420,7 @@ systemctl start mpd.socket</programlisting>
a name registered in the PULSE server.
</entry>
</row>
- <row>
+ <row id="ao_format">
<entry>
<varname>format</varname>
</entry>
@@ -417,8 +444,6 @@ systemctl start mpd.socket</programlisting>
(signed 8 bit integer samples),
<varname>16</varname>, <varname>24</varname> (signed
24 bit integer samples padded to 32 bit),
- <varname>24_3</varname> (signed 24 bit integer
- samples, no padding, 3 bytes per sample),
<varname>32</varname> (signed 32 bit integer
samples), <varname>f</varname> (32 bit floating
point, -1.0 to 1.0).
@@ -609,6 +634,202 @@ systemctl start mpd.socket</programlisting>
</tgroup>
</informaltable>
</section>
+
+ <section>
+ <title>Audio Format Settings</title>
+
+ <section>
+ <title>Global Audio Format</title>
+
+ <para>
+ The setting <varname>audio_output_format</varname> forces
+ MPD 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
+ <varname>audio_output</varname> 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 MPD's CPU usage.
+ Since MPD comes with high quality defaults, it may appear
+ that MPD consumes more CPU than other software.
+ </para>
+
+ <para>
+ The following resamplers are available (if enabled at
+ compile time):
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink
+ url="http://www.mega-nerd.com/SRC/">libsamplerate</ulink>
+ a.k.a. Secret Rabbit Code (SRC).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <ulink
+ url="http://sourceforge.net/projects/soxr/">libsoxr</ulink>,
+ the SoX Resampler library
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ internal: low CPU usage, but very poor quality. This is
+ the fallback if MPD was compiled without an external
+ resampler.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ The setting <varname>samplerate_converter</varname> controls
+ how MPD shall resample music. Possible values:
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ Value
+ </entry>
+ <entry>
+ Description
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ "<parameter>internal</parameter>"
+ </entry>
+ <entry>
+ The internal resampler. Low CPU usage, but very
+ poor quality.
+ </entry>
+ </row>
+
+ <row>
+ <entry>
+ "<parameter>soxr very high</parameter>"
+ </entry>
+ <entry>
+ Use libsoxr with "Very High Quality" setting.
+ </entry>
+ </row>
+
+ <row>
+ <entry>
+ "<parameter>soxr high</parameter>" or
+ "<parameter>soxr</parameter>"
+ </entry>
+ <entry>
+ Use libsoxr with "High Quality" setting.
+ </entry>
+ </row>
+
+ <row>
+ <entry>
+ "<parameter>soxr medium</parameter>"
+ </entry>
+ <entry>
+ Use libsoxr with "Medium Quality" setting.
+ </entry>
+ </row>
+
+ <row>
+ <entry>
+ "<parameter>soxr low</parameter>"
+ </entry>
+ <entry>
+ Use libsoxr with "Low Quality" setting.
+ </entry>
+ </row>
+
+ <row>
+ <entry>
+ "<parameter>soxr quick</parameter>"
+ </entry>
+ <entry>
+ Use libsoxr with "Quick" setting.
+ </entry>
+ </row>
+
+ <row>
+ <entry>
+ "<parameter>Best Sinc Interpolator</parameter>" or
+ "<parameter>0</parameter>"
+ </entry>
+ <entry>
+ libsamplerate: 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>
+ libsamplerate: 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>
+ libsamplerate: Band limited sinc interpolation,
+ fastest, 97dB SNR, 80% BW.
+ </entry>
+ </row>
+
+ <row>
+ <entry>
+ "<parameter>ZOH Sinc Interpolator</parameter>" or
+ "<parameter>3</parameter>"
+ </entry>
+ <entry>
+ libsamplerate: 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>
+ libsamplerate: Linear interpolator, very fast, poor
+ quality.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </section>
+ </section>
</chapter>
<chapter>
@@ -704,6 +925,18 @@ systemctl start mpd.socket</programlisting>
The path of the database file.
</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>
@@ -749,62 +982,71 @@ systemctl start mpd.socket</programlisting>
</tgroup>
</informaltable>
</section>
+
+ <section>
+ <title><varname>upnp</varname></title>
+
+ <para>
+ Provides access to UPnP media servers.
+ </para>
+ </section>
</section>
<section>
- <title>Input plugins</title>
+ <title>Storage plugins</title>
<section>
- <title><varname>curl</varname></title>
+ <title><varname>local</varname></title>
<para>
- Opens remote files or streams over HTTP.
+ The default plugin which gives MPD access to local files.
+ It is used when <varname>music_directory</varname> refers to
+ a local directory.
</para>
+ </section>
- <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>
- </tbody>
- </tgroup>
- </informaltable>
+ <section>
+ <title><varname>smbclient</varname></title>
+
+ <para>
+ Load music files from a SMB/CIFS server. It used used when
+ <varname>music_directory</varname> contains a
+ <parameter>smb://</parameter> URI, for example
+ "<parameter>smb://myfileserver/Music</parameter>".
+ </para>
</section>
<section>
- <title><varname>file</varname></title>
+ <title><varname>nfs</varname></title>
<para>
- Opens local files.
+ Load music files from a NFS server. It used 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>
</section>
+ </section>
+
+ <section>
+ <title>Input plugins</title>
<section>
- <title><varname>mms</varname></title>
+ <title><varname>alsa</varname></title>
<para>
- Plays streams with the MMS protocol.
+ Allows MPD 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>
@@ -844,6 +1086,68 @@ systemctl start mpd.socket</programlisting>
</section>
<section>
+ <title><varname>curl</varname></title>
+
+ <para>
+ Opens remote files or streams over HTTP.
+ </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>
<title><varname>despotify</varname></title>
<para>
@@ -902,6 +1206,65 @@ systemctl start mpd.socket</programlisting>
</tgroup>
</informaltable>
</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.
+ </para>
+ </section>
+
+ <section>
+ <title><varname>nfs</varname></title>
+
+ <para>
+ Allows MPD 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 MPD 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 MPD 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>
<section>
@@ -1173,6 +1536,35 @@ systemctl start mpd.socket</programlisting>
</section>
<section>
+ <title><varname>shine</varname></title>
+
+ <para>
+ Encodes into MP3 using the shine 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>
@@ -2214,6 +2606,47 @@ systemctl start mpd.socket</programlisting>
</para>
</section>
+ <section>
+ <title><varname>soundcloud</varname></title>
+
+ <para>
+ Adds <ulink url="https://www.soundcloud.com/">Soundcloud</ulink>
+ playlists. SoundCloud playlists use the <filename>soundcloud://</filename> URI,
+ and with a number of arguments, you may load different playlists with
+ </para>
+
+ <programlisting>
+mpc load soundcloud://track/TRACK_ID
+mpc load soundcloud://playlist/PLAYLIST_ID
+mpc load soundcloud://user/USERNAME
+mpc load soundcloud://search/SEARCH_QUERY
+mpc load soundcloud://url/https://soundcloud.com/ARTIST/TRACK-NAME
+ </programlisting>
+
+ <informaltable>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Setting</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <varname>apikey</varname>
+ <parameter>client_id</parameter>
+ </entry>
+ <entry>
+ User apikey/client_id can override the MPD token provided by SoundCloud.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ </section>
+
</section>
</chapter>
</book>