aboutsummaryrefslogblamecommitdiffstats
path: root/doc/user.xml
blob: 942a56a88889dfbbcecfc3fd6d7220e5c0f5cb14 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                          

                                                                      
           























                                                                      




                               









                                                                      
                                                             


                                                          





                                                                  

              



                                          
                                               
                                                               


                                   
                                               
                               






                                                                     
























                                                                     
                



                       
                                      
             















                                                                  
              






                                                                   
                            

             
            



                                                                        

             
            
                                          










                                                                   




                                
             















                                                                      







                                                                    


              














































                                                                  







                                                                    
                      














































                                                                      























































                                                                      









                                                                     




















                                                                      





































                                                                     
                                



                                         












                                                                       





                                                                      
                                                              

                                                                 
                       












                                                                   

                     











                                                                    






                                                                     
                                                                     



                      

                                                             

                      




                                                                     

                      












                                                                      


                      
              
























































                                                                    









                                                                    
                                             


















































                                                                  















































                                                                           







                                                                          




































                                                                      









                                                               


                                               



























                                                            




                        
























































                                                                       


            

















                                                                    
                                                            





















                                                                    





                                                                      














                                                                     

                                   
             




































                                                                 



                                                                     






























                                                               







                                                


              





















                                                                      











                                                                     


              


                                  
                                              

              





















                                                                             
               











                                          

                                                               

                        


                                                                    




                        


                
                                              

              
                                                  
               











                                          
                                          

                        









                                                            




                        
                



























































                                                                                              

               
                                              

              
                            
               



                                             

              
                                              

                

               




























                                                                         
                                                   

              


                                                                    


               
                                                                              

                


              

                                    
               


                                                
                                                                    
               






















                                                                     


                








                                                                    
















                                                    








                                                                  













                                                                            
















                                                









                                                              










                                                                    






























                                                                               






























                                                                          


              

















































































                                                                      




























                                                          

























































































                                                                      









































































































                                                                      







                                                                     

                                                                                  






                                                                      











                                                            




















































                                                                                                               









                                                                     































                                                                      








                                                               





















                                                                  








                                                   










                                                                 











                                                                     
                                                      


                                            
                                                                        















                                                                    


                






























                                                                      










                                                                          































                                                                  









                                                                      





                        



































































                                                                     
































                                                                              













                                                                 





















                                                         








                                                                      

































                                                                      


                












































                                                                 


































































                                                                    





                                                                     











































                                                                      











                                                                    























































                                                                     








                                                                   






















                                                                    
                































                                                                      
              




                                     







                                                                 







                                                         







                                                                  














                                                              




















                                                                                                         








































                                                                                          
              

            
<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
               "docbook/dtd/xml/4.2/docbookx.dtd">
<book>
  <title>The Music Player Daemon - User's Manual</title>

  <chapter>
    <title>Introduction</title>

    <para>
      This document is work in progress.  Most of it may be incomplete
      yet.  Please help!
    </para>

    <para>
      MPD (Music Player Daemon) is, as the name suggests, a server
      software allowing you to remotely play your music, handle
      playlists, deliver music (HTTP STREAMS with various
      sub-protocols) and organizze playlists.
    </para>

    <para>
      It has been written with minimal resource usage and stability in
      mind!  Infact, it runs fine on a Pentium 75, allowing you to use
      your cheap old PC to create a stereo system!
    </para>

    <para>
      MPD supports also Gapless playback, buffered audio output, and
      crossfading!
    </para>

    <para>
      The separate client and server design allows users to choose a
      user interface that best suites their tastes independently of
      the underlying daemon, which actually plays music!
    </para>
  </chapter>

  <chapter>
    <title>Installation</title>

    <para>
      We recommend that you use the software installation routines of
      your distribution to install MPD.  Most operating systems have a
      MPD package, which is very easy to install.
    </para>

    <section>
      <title>Installing on Debian/Ubuntu</title>

      <para>
        Install the package <filename>mpd</filename> via APT:
      </para>

      <programlisting>apt-get install mpd</programlisting>

      <para>
        When installed this way, MPD by default looks for music in
        /var/lib/mpd/music/; this may not be correct. Look at your
        /etc/mpd.conf file...
      </para>
    </section>

    <section>
      <title>Compiling from source</title>

      <para>
        Download the source tarball from <ulink
        url="http://www.musicpd.org/download.html">the MPD home
        page</ulink> and unpack it:
      </para>

      <programlisting>tar xf mpd-version.tar.xz
cd mpd-version</programlisting>

      <para>
        Make sure that all the required libraries and build tools are
        installed.  The <filename>INSTALL</filename> file has a list.
      </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>

      <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>

    <section>
      <title><filename>systemd</filename> socket activation</title>

      <para>
        Using <filename>systemd</filename>, you can launch
        <filename>mpd</filename> on demand when the first client
        attempts to connect.
      </para>

      <para>
        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>

      <para>
        To enable socket activation, type:
      </para>

      <programlisting>systemctl enable mpd.socket
systemctl start mpd.socket</programlisting>

      <para>
        In this configuration, <filename>mpd</filename> will ignore
        the <varname>bind_to_address</varname> and
        <varname>port</varname> settings.
      </para>
    </section>
  </chapter>

  <chapter>
    <title>Configuration</title>

    <section>
      <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
        MPD with the <varname>music_directory</varname> setting.
      </para>

      <para>
        By default, MPD follows symbolic links in the music directory.
        This behavior can be switched off:
        <varname>follow_outside_symlinks</varname> controls whether
        MPD 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 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>
      <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>
    </section>

    <section>
      <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 "despotify"
    user "foo"
    password "bar"
}
      </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>
    </section>

    <section>
      <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>
    </section>

    <section>
      <title>Configuring encoder plugins</title>

      <para>
        Encoders are used by some of the output plugins (such as
        <varname>shout</varname>).  The encoder settings are included
        in the <varname>audio_output</varname> section.
      </para>
    </section>

    <section>
      <title>Configuring audio outputs</title>

      <para>
        Audio outputs are devices which actually play the audio chunks
        produced by MPD.  You can configure any number of audio output
        devices, but there must be at least one.  If none is
        configured, MPD 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 an
        <varname>audio_output</varname> block 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 (samplerate:bits:channels), 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).
                </para>
              </entry>
            </row>
            <row>
              <entry>
                <varname>enabled</varname>
                  <parameter>yes|no</parameter>
              </entry>
              <entry>
                Specifies whether this audio output is enabled when
                MPD is started.  By default, all audio outputs are
                enabled.
              </entry>
            </row>
            <row>
              <entry>
                <varname>tags</varname>
                <parameter>yes|no</parameter>
              </entry>
              <entry>
                If set to "no", then MPD will not send tags to this
                output.  This is only useful for output plugins that
                can receive tags, for example the
                <varname>httpd</varname> output plugin.
              </entry>
            </row>
            <row>
              <entry>
                <varname>always_on</varname>
                  <parameter>yes|no</parameter>
              </entry>
              <entry>
                If set to "yes", then MPD 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|none</parameter>
              </entry>
              <entry>
                Specifies which mixer should be used for this audio
                output: the hardware mixer (available for ALSA, OSS
                and PulseAudio), the software mixer or no mixer
                ("none").  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
                "software", which uses an internal software volume
                control.  "mixer" uses the configured (hardware) mixer
                control.  "none" disables replay gain on this audio
                output.
              </entry>
            </row>
          </tbody>
        </tgroup>
      </informaltable>
    </section>

    <section>
      <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>
      <title>Configuring playlist plugins</title>

      <para>
        Playlist plugins are used to load remote playlists.  This is
        not related to MPD'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>
    </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>
    <title>Using MPD</title>

    <section>
      <title>The client</title>

      <para>
        After you have installed, configured and started MPD, 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/">MPD
        Wiki</ulink> contains an extensive list of clients to choose
        from.
      </para>
    </section>

    <section>
      <title>The music directory and the database</title>

      <para>
        The "music directory" is where you store your music files.
        MPD 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.
      </para>
    </section>

    <section>
      <title>The queue</title>

      <para>
        The queue (sometimes called "current playlist") is a list of
        songs to be played by MPD.  To play a song, add it to the
        queue and start playback.  Most clients offer an interface to
        edit the queue.
      </para>
    </section>
  </chapter>

  <chapter>
    <title>Plugin reference</title>

    <section>
      <title>Database plugins</title>

      <section>
        <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>
            </tbody>
          </tgroup>
        </informaltable>
      </section>

      <section>
        <title><varname>proxy</varname></title>

        <para>
          Provides access to the database of another MPD 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 MPD 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" MPD instance.
                </entry>
              </row>
              <row>
                <entry>
                  <varname>port</varname>
                </entry>
                <entry>
                  The port number of the "master" MPD instance.
                </entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </section>

      <section>
        <title><varname>upnp</varname></title>

        <para>
          Provides access to UPnP media servers.
        </para>
      </section>
    </section>

    <section>
      <title>Storage plugins</title>

      <section>
        <title><varname>local</varname></title>

        <para>
          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>

      <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>nfs</varname></title>

        <para>
          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>alsa</varname></title>

        <para>
          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>

      <section>
        <title><varname>cdio_paranoia</varname></title>

        <para>
          Plays audio CDs.  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, MPD
                  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.
        </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>
            </tbody>
          </tgroup>
        </informaltable>
      </section>

      <section>
        <title><varname>despotify</varname></title>

        <para>
          Plays <ulink url="http://www.spotify.com">Spotify</ulink> tracks using the despotify
          library. The despotify plugin uses a <filename>spt://</filename> URI and a Spotify
          URL. So for example, you can add a song with:
        </para>
        
        <para>
          <filename>mpc add spt://spotify:track:5qENVY0YEdZ7fiuOax70x1</filename>
        </para>
        
        <para>
          You need a Spotify premium account to use this plugin, and you need
          to setup username and password in the configuration file. The
          configuration settings are global since the despotify playlist plugin
          use the same settings.
        </para>

        <informaltable>
          <tgroup cols="2">
            <thead>
              <row>
                <entry>Setting</entry>
                <entry>Description</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry>
                  <varname>despotify_user</varname>
                </entry>
                <entry>
                  Sets up the Spotify username (required)
                </entry>
              </row>
              <row>
                <entry>
                  <varname>despotify_password</varname>
                </entry>
                <entry>
                  Sets up the Spotify password (required)
                </entry>
              </row>
              <row>
                <entry>
                  <varname>despotify_high_bitrate</varname>
                </entry>
                <entry>
                  Set up if high bitrate should be used for Spotify tunes.
                  High bitrate sounds better but slow systems can have problems
                  with playback (default yes).
                </entry>
              </row>
            </tbody>
          </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>
      <title>Decoder plugins</title>

      <section>
        <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
                  "no".
                </entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </section>

      <section>
        <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 libfluidsynth.
        </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>mikmod</varname></title>

        <para>
          Module player based on MikMod.
        </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 MODPlug.
        </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>
        <title><varname>wildmidi</varname></title>

        <para>
          MIDI decoder based on libwildmidi.
        </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>
      <title>Encoder plugins</title>

      <section>
        <title><varname>flac</varname></title>

        <para>
          Encodes into FLAC (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 LAME 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 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>
          Encodes into MP2 using the <filename>twolame</filename>
          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>vorbis</varname></title>

        <para>
          Encodes into Ogg Vorbis.
        </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.  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>
      <title>Output plugins</title>

      <section>
        <title><varname>alsa</varname></title>

        <para>
          The "Advanced Linux Sound Architecture" 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>use_mmap</varname>
                  <parameter>yes|no</parameter>
                </entry>
                <entry>
                  If set to <parameter>yes</parameter>, then
                  <filename>libasound</filename> will try to use
                  memory mapped I/O.
                </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 MPD.
                  It is recommended to let MPD resample (with
                  libsamplerate), 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>dsd_usb</varname>
                  <parameter>yes|no</parameter>
                </entry>
                <entry>
                  If set to <parameter>yes</parameter>, then DSD over
                  USB according to the <ulink
                  url="http://www.sonore.us/DoP_openStandard_1v1.pdf">pro
                  posed standard by dCS and others</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>
            </tbody>
          </tgroup>
        </informaltable>
      </section>

      <section>
        <title><varname>ao</varname></title>

        <para>
          The <varname>ao</varname> plugin uses the portable
          <filename>libao</filename> library.
        </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>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 MPD is started, and
                  removed when MPD is stopped.  The FIFO will be
                  created with the same user and group as MPD is
                  running as.  Default permissions can be modified by
                  using the builtin shell command "umask".  If a FIFO
                  already exists at the specified path it will be
                  reused, and will not be removed when MPD 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>
        <title><varname>jack</varname></title>

        <para>
          The <varname>jack</varname> plugin connects to a JACK
          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 JACK client.  Defaults to "Music
                  Player Daemon".
                </entry>
              </row>
              <row>
                <entry>
                  <varname>server_name</varname>
                  <parameter>NAME</parameter>
                </entry>
                <entry>
                  Optional name of the JACK 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 JACK daemon.  Disabled by default.
                </entry>
              </row>
              <row>
                <entry>
                  <varname>source_ports</varname>
                  <parameter>A,B</parameter>
                </entry>
                <entry>
                  The names of the JACK 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 JACK 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>
        <title><varname>httpd</varname></title>

        <para>
          The <varname>httpd</varname> plugin creates a HTTP server,
          similar to ShoutCast / IceCast.  HTTP streaming clients like
          <filename>mplayer</filename> can connect to it.
        </para>

        <para>
          You must configure either <varname>quality</varname> or
          <varname>bitrate</varname>.  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,
                  e.g. <parameter>vorbis</parameter>.
                </entry>
              </row>
              <row>
                <entry>
                  <varname>quality</varname>
                  <parameter>Q</parameter>
                </entry>
                <entry>
                  Configures the encoder quality (for VBR) in the
                  range -1 .. 10.
                </entry>
              </row>
              <row>
                <entry>
                  <varname>bitrate</varname>
                  <parameter>BR</parameter>
                </entry>
                <entry>
                  Sets a constant encoder bit rate, in kilobit per
                  second.
                </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>
        <title><varname>oss</varname></title>

        <para>
          The "Open Sound System" plugin is supported on most Unix
          platforms.
        </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 MPD will attempt to open
                  <filename>/dev/sound/dsp</filename> and
                  <filename>/dev/dsp</filename>.
                </entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </section>

      <section>
        <title><varname>openal</varname></title>

        <para>
          The "OpenAL" plugin uses <filename>libopenal</filename>.
          It is supported on many platforms.
        </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>
      </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>
        <title><varname>pulse</varname></title>

        <para>
          The <varname>pulse</varname> plugin connects to a PulseAudio
          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>
                  Sets the host name of the PulseAudio server.  By
                  default, MPD connects to the local PulseAudio
                  server.
                </entry>
              </row>
              <row>
                <entry>
                  <varname>sink</varname>
                  <parameter>NAME</parameter>
                </entry>
                <entry>
                  Specifies the name of the PulseAudio sink MPD 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 MPD will connect to the default
                  locations.
                </entry>
              </row>

              <row>
                <entry>
                  <varname>role</varname>
                  <parameter>ROLE</parameter>
                </entry>
                <entry>
                  The "role" that MPD 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 MPD to a file.  This may be useful for recording
          radio streams.
        </para>

        <para>
          You must configure either <varname>quality</varname> or
          <varname>bitrate</varname>.
        </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>encoder</varname>
                  <parameter>NAME</parameter>
                </entry>
                <entry>
                  Chooses an encoder plugin,
                  e.g. <parameter>vorbis</parameter>.
                </entry>
              </row>
              <row>
                <entry>
                  <varname>quality</varname>
                  <parameter>Q</parameter>
                </entry>
                <entry>
                  Configures the encoder quality (for VBR) in the
                  range -1 .. 10.
                </entry>
              </row>
              <row>
                <entry>
                  <varname>bitrate</varname>
                  <parameter>BR</parameter>
                </entry>
                <entry>
                  Sets a constant encoder bit rate, in kilobit per
                  second.
                </entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </section>

      <section>
        <title><varname>shout</varname></title>

        <para>
          The <varname>shout</varname> plugin connects to a ShoutCast
          or IceCast server.  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 Shoutcast/Icecast 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 icecast/shoutcast server.  The default
                  is "<parameter>icecast2</parameter>".

                </entry>
              </row>
              <row>
                <entry>
                  <varname>mount</varname>
                  <parameter>URI</parameter>
                </entry>
                <entry>
                  Mounts the MPD 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 "no".
                </entry>
              </row>
              <row>
                <entry>
                  <varname>encoder</varname>
                  <parameter>PLUGIN</parameter>
                </entry>
                <entry>
                  Sets the name of the encoder plugin.  Default is
                  "vorbis".  "vorbis" and "lame" are valid encoder
                  plugins (provided that you enabled them at compile
                  time).
                </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>
      <title>Playlist plugins</title>

      <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>pls</varname></title>

        <para>
          Reads <filename>.pls</filename> playlist files.
        </para>
      </section>

      <section>
        <title><varname>xspf</varname></title>

        <para>
          Reads <ulink url="http://www.xspf.org/">XSPF</ulink>
          playlist files.
        </para>
      </section>

      <section>
        <title><varname>despotify</varname></title>

        <para>
          Adds <ulink url="http://www.spotify.com/">Spotify</ulink>
          playlists. Spotify playlists use the <filename>spt://</filename> URI,
          and a Spotify playlist URL. So for example, you can load a playlist
          with
        </para>
        
        <para>
          <filename>mpc load spt://spotify:user:simon.kagstrom:playlist:3SUwkOe5VbVHysZcidEZtH</filename>
        </para>
        
        <para>
          See the despotify input plugin for configuration options (username
          and password needs to be setup)
        </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>