Difference between revisions of "Music Player Daemon (Italiano)"

From ArchWiki
Jump to: navigation, search
(rm'ed from english cats)
Line 4: Line 4:
 
{{Nota|Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.}}
 
{{Nota|Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.}}
  
'''MPD''' (music player daemon) is an audio player that has a server-client architecture. MPD runs in the background as a daemon, manages playlists and a music database, and uses very few resources. In order to interface with it, you need a separate client. More information can be found on their [http://www.musicpd.org/ website].
+
'''MPD''' (music player daemon) è un player audio con struttura client-server. MPD lavora in background come demone. gestisce le playlist e il database della musica utilizzando pochissime risorse. Per interfacciarsi con il demone è necessario un client. Maggiori informazioni possono essere reperite sul sito di MPD [http://www.musicpd.org/ website].
  
''Please'' have a look at the official page for setup and troubleshooting instructions, the main developer called our wiki page in its current state ''"full of symptom killers"'', hence the official pages should contain better instructions.
+
''Attenzione'' leggere anche la pagina ufficiale per l'installazione e la risoluzione dei problemi, lo sviluppatore principale ha indicato la nostra pagina wiki al suo stato attuale come piena di problemi (''"full of symptom killers"''), per cui la pagina ufficiale dovrebbe contenere informazioni più complete.
  
==Daemon install procedure==
+
==Installare il demone==
Install with [[pacman]]:
+
Il demone è disponibile nel repository "extra", è quindi possibile installarlo con [[Pacman_(Italiano)|pacman]]:
 
  # pacman -S mpd
 
  # pacman -S mpd
  
==Setup instructions==
+
==Configurazione==
For more information about MPD configuration visit http://mpd.wikia.com/wiki/Configuration.
+
Per maggiori informazioni sulla configurazione di MPD visitare http://mpd.wikia.com/wiki/Configuration.
  
===Timeline of MPD's behavior on a typical working setup===
+
===Comportamento di MPD in una configurazione tipica===
# MPD is started on boot by {{Filename|/etc/rc.conf}}, by including it in the {{Codeline|DAEMONS}} array. (Or, this can be done manually each session by running {{Codeline|/etc/rc.d/mpd start}} with root privileges).
+
# MPD viene avviato al boot da {{Filename|/etc/rc.conf}}, includendolo nell'array {{Codeline|DAEMONS}}. (In alternativa può essere avviato manualmente lanciando  {{Codeline|/etc/rc.d/mpd start}} con privilegi di root).
# Since MPD is now started as root, it first reads the {{Filename|/etc/mpd.conf}} file.
+
# Essendo stato lanciato come root, MPD per prima cosa legge il file {{Filename|/etc/mpd.conf}}.
# MPD reads the user variable in the {{Filename|/etc/mpd.conf}} file, and changes from root to this user.
+
# MPD individua l'utente di esecuzione dal file {{Filename|/etc/mpd.conf}}, e cambia la proprietà del processo da root a questo utente.
# MPD then reads the contents of the {{Filename|/etc/mpd.conf}} file and configures itself accordingly.
+
# Una volta cambiata la proprietà, MPD analizza i contenuti di {{Filename|/etc/mpd.conf}} si configura di conseguenza.
  
Notice that MPD changes the running user from root to the one named in the {{Filename|/etc/mpd.conf}} file. This way, uses of {{Codeline|~}} in the configuration file point correctly to the home user's directory, and not root's directory. It may be worthwhile to change all uses of {{Codeline|~}} to {{Codeline|/home/username}} to avoid any confusion over this aspect of MPD's behavior.
+
Si noti che MPD cambia l'utente attivo da root a quello menzionato in {{Filename|/etc/mpd.conf}}. In questo modo, l'uso di {{Codeline|~}} nel file di configurazione punta correttamente alla directory home dell'utente, e non a quella di root. Potrebbe valer la pena di sostituire tutte le occorrenze di {{Codeline|~}} con {{Codeline|/home/username}} per evitare ogni confusione con questo particolare comportamento di MPD.
  
===A clean configuration file===
+
===File di configurazione minimo===
* As root, check if {{Filename|/etc/mpd.conf}} exists and delete the file if it does. This is safe.
+
* Come root, verificare se il file {{Filename|/etc/mpd.conf}} esiste e, nel caso, eliminarlo. Questo è sicuro e consigliato.
  
Mpd comes with an example configuration file, available at {{Filename|/usr/share/doc/mpd/mpd.conf.example}}. This file holds an abundance of information on MPD configuration, and holds default mixer values you can simply uncomment.
+
MPD crea un file di configurazione di esempio, situato in {{Filename|/usr/share/doc/mpd/mpd.conf.example}}. Questo file contiene moltissime informazioni sulla configurazione di MPD, oltre ad alcuni valori del mixer di default che possono semplicemente essere commentati.
  
* As root, copy this example file to {{Filename|/etc/mpd.conf}}.
+
* Come root, copiare questo file di esempio in {{Filename|/etc/mpd.conf}}.
 
  # cp /usr/share/mpd/mpd.conf.example /etc/mpd.conf
 
  # cp /usr/share/mpd/mpd.conf.example /etc/mpd.conf
(/usr/share/doc/mpd/mpd.conf.example is good for userspace setup)
+
(/usr/share/doc/mpd/mpd.conf.example è un ottimo punto di partenza per una orientata al singolo utente)
  
Never put this file in the user's directory like some tutorials suggest. This would complicate things and most of the time doing this is useless (notice you're reading a quick installation howto). If you previously created a {{Filename|.mpdconf}} file in your home, remove it now. This is important to prevent conflicts. When placing it in {{Filename|/etc}}, like we do here, MPD will be able to run as a daemon at boot. Otherwise, a script would be needed to run MPD ''after'' the user has logged (like kdm or {{Filename|~/.fluxbox/startup}}) or it would require a manual move each time. For a single music collection, the method used here is simply better, even while the collection is shared to multiple users. Also, don't be afraid about root privileges: even while MPD runs as a daemon, it never completely runs as root since it automatically drops its root privileges after execution.
+
Mai mettere questo file nella home dell'utente come suggerito in altri tutorial. Questo complicherrebe le cose e molte volte è anche inutile (notare come si stia leggendo una guida per l'installazione veloce). Se è stato precedentemente creato un file {{Filename|.mpdconf}} nella propria home, cancellarlo adesso. Questo è importante per evitare conflitti di configurazione. Copiandolo in {{Filename|/etc}}, come fatto in questa guida, MPD sarà in grado di operare come demone all'avvio. Altrimenti sarebbe necessario uno script per lanciare MPD ''dopo'' il login dell'utente (ad esempio in kdm o {{Filename|~/.fluxbox/startup}}) oppure un avviamento manuale. Per una singola collezione musicale, il metodo qui descritto è semplicemente migliore, anche se la collezione è condivisa con più utenti. Inoltre, non bisogna preoccuparsi dei privilegi di root: anche quando MPD opera come demone, non opererà mai completamente come root in quanto automaticamente scarica i suoi privilegi di root dopo l'esecuzione.
  
===Sound setup correctly===
+
===Configurare correttamente il suono===
To make audio output actually work ensure that you have setup audio card and mixer correctly. See [[ALSA]]. Do not forget to unmute the required channels in alsamixer, raise the volume and save changes with alsactl store. See {{Filename|~/.mpd/error}} if it still doesn't work.
+
Per far funzionare l'audio assicurarsi di aver correttamente configurato la scheda audio e il mixer. Visitare [[ALSA_(Italiano)]]. Non dimenticarsi di rimuovere il muto dai canali necessari in alsamixer, alzare il volume e salvare i cambiamenti con alsactl store. Visitare {{Filename|~/.mpd/error}} se ancora l'audio non funziona.
  
Make sure your card can do hardware mixing (most of them can, including onboard audio). Or else this could cause problems with multiple sound playback. For example, this can prevent Mplayer from playing back sound while the mpd daemon is running, returning an audio error message stating the device is busy.
+
Assicurarsi che la propria scheda audio possa effettuare il mixing hardware (molte di esse possono, incluse quelle integrate). In caso contrario questo potrebbe causare problemi con le riproduzioni multiple. Per esempio, impedirebbe ad Mplayer di riprodurre il suono mentre il demone MPD è attivo, restituendo un messaggio di errore audio comunicante che il dispositivo è occupato.
  
===Software mixing===
+
===Mixing software===
To change the volume of audio from mpd independent of other programs, uncomment or add the switch in mpd.conf:
+
Per cambiare il volume dell'audio di MPD indipendentemente da altri programmi, decommentare o aggiungere in mpd.conf:
  
 
{{File|name=/etc/mpd.conf|content=
 
{{File|name=/etc/mpd.conf|content=
Line 46: Line 46:
 
}}
 
}}
  
===Editing {{Filename|mpd.conf}}===
+
===Modifica di {{Filename|mpd.conf}}===
  
 
'''Keeps the setup in /var and uses "mpd" as default user instead of cluttering up ~/. This is the way the arch package is installed.'''
 
'''Keeps the setup in /var and uses "mpd" as default user instead of cluttering up ~/. This is the way the arch package is installed.'''

Revision as of 13:50, 7 January 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Music Player Daemon (Italiano)#)
Nota: Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.

MPD (music player daemon) è un player audio con struttura client-server. MPD lavora in background come demone. gestisce le playlist e il database della musica utilizzando pochissime risorse. Per interfacciarsi con il demone è necessario un client. Maggiori informazioni possono essere reperite sul sito di MPD website.

Attenzione leggere anche la pagina ufficiale per l'installazione e la risoluzione dei problemi, lo sviluppatore principale ha indicato la nostra pagina wiki al suo stato attuale come piena di problemi ("full of symptom killers"), per cui la pagina ufficiale dovrebbe contenere informazioni più complete.

Installare il demone

Il demone è disponibile nel repository "extra", è quindi possibile installarlo con pacman:

# pacman -S mpd

Configurazione

Per maggiori informazioni sulla configurazione di MPD visitare http://mpd.wikia.com/wiki/Configuration.

Comportamento di MPD in una configurazione tipica

  1. MPD viene avviato al boot da Template:Filename, includendolo nell'array Template:Codeline. (In alternativa può essere avviato manualmente lanciando Template:Codeline con privilegi di root).
  2. Essendo stato lanciato come root, MPD per prima cosa legge il file Template:Filename.
  3. MPD individua l'utente di esecuzione dal file Template:Filename, e cambia la proprietà del processo da root a questo utente.
  4. Una volta cambiata la proprietà, MPD analizza i contenuti di Template:Filename si configura di conseguenza.

Si noti che MPD cambia l'utente attivo da root a quello menzionato in Template:Filename. In questo modo, l'uso di Template:Codeline nel file di configurazione punta correttamente alla directory home dell'utente, e non a quella di root. Potrebbe valer la pena di sostituire tutte le occorrenze di Template:Codeline con Template:Codeline per evitare ogni confusione con questo particolare comportamento di MPD.

File di configurazione minimo

  • Come root, verificare se il file Template:Filename esiste e, nel caso, eliminarlo. Questo è sicuro e consigliato.

MPD crea un file di configurazione di esempio, situato in Template:Filename. Questo file contiene moltissime informazioni sulla configurazione di MPD, oltre ad alcuni valori del mixer di default che possono semplicemente essere commentati.

# cp /usr/share/mpd/mpd.conf.example /etc/mpd.conf

(/usr/share/doc/mpd/mpd.conf.example è un ottimo punto di partenza per una orientata al singolo utente)

Mai mettere questo file nella home dell'utente come suggerito in altri tutorial. Questo complicherrebe le cose e molte volte è anche inutile (notare come si stia leggendo una guida per l'installazione veloce). Se è stato precedentemente creato un file Template:Filename nella propria home, cancellarlo adesso. Questo è importante per evitare conflitti di configurazione. Copiandolo in Template:Filename, come fatto in questa guida, MPD sarà in grado di operare come demone all'avvio. Altrimenti sarebbe necessario uno script per lanciare MPD dopo il login dell'utente (ad esempio in kdm o Template:Filename) oppure un avviamento manuale. Per una singola collezione musicale, il metodo qui descritto è semplicemente migliore, anche se la collezione è condivisa con più utenti. Inoltre, non bisogna preoccuparsi dei privilegi di root: anche quando MPD opera come demone, non opererà mai completamente come root in quanto automaticamente scarica i suoi privilegi di root dopo l'esecuzione.

Configurare correttamente il suono

Per far funzionare l'audio assicurarsi di aver correttamente configurato la scheda audio e il mixer. Visitare ALSA_(Italiano). Non dimenticarsi di rimuovere il muto dai canali necessari in alsamixer, alzare il volume e salvare i cambiamenti con alsactl store. Visitare Template:Filename se ancora l'audio non funziona.

Assicurarsi che la propria scheda audio possa effettuare il mixing hardware (molte di esse possono, incluse quelle integrate). In caso contrario questo potrebbe causare problemi con le riproduzioni multiple. Per esempio, impedirebbe ad Mplayer di riprodurre il suono mentre il demone MPD è attivo, restituendo un messaggio di errore audio comunicante che il dispositivo è occupato.

Mixing software

Per cambiare il volume dell'audio di MPD indipendentemente da altri programmi, decommentare o aggiungere in mpd.conf:

Template:File

Modifica di Template:Filename

Keeps the setup in /var and uses "mpd" as default user instead of cluttering up ~/. This is the way the arch package is installed.

Edit Template:Filename to reflect as such.

Template:File

Read steps below carefully, permissions need to be set correctly.

  • Now as root create the files you specified in Template:Filename, if directories do not exist, create those as well. This is not required if you use the defaults in the arch package.
  • If your music collection is contained under multiple dir. you can make symbolic link under /var/lib/mpd then set 'music_dir' in mpd.conf to the directory holding the symbolic links. Remember to set permissions accordingly on the directories being linked.
  • Creating the database is now accomplished via the update feature of the client, for example if you were running ncmpcpp you would just enter 'u'.
    • The previous method, creating the MPD database as root (# mpd --create-db), is deprecated.

Alternative setup

MPD need not be started with root permissions. The only reason why MPD needs to be started as root (by being called from Template:Filename) is because the default files and folders in the default configuration file points to directories owned by root (the /var directory). A less common, but perhaps more sensible, approach is to make MPD work with files and directories owned by a normal user. Running MPD as a normal user has several advantages:

  1. You can easily have a single directory ~/.mpd (or any other directory under /home/username) for all MPD configuration files
  2. No read/write permission errors
  3. More flexible calls to MPD by using Template:Filename instead of including 'mpd' in the Template:Filename DAEMONS array.

The following steps shows how to run MPD as a normal user. Note: this approach will not work if you want multiple users to have access to MPD.

"~/.mpd/playlists"
"~/.mpd/db"
"~/.mpd/mpd.log"
"~/.mpd/mpd.error"
"~/.mpd/mpd.pid"
"~/.mpd/mpdstate"
# this starts mpd as normal user
mpd /home/username/.mpd/mpd.conf
Note: that you don't have to put a "&" at the end of the line here, since MPD will automatically daemonize itself.

Lastly, delete the entry 'mpd' from your DAEMONS array in Template:Filename, as you are not running it as root anymore.

Quick setup

The fastest way to do set up the structure is to do this:

$ mkdir -p ~/.mpd/playlists && touch ~/.mpd/database && cp /usr/share/doc/mpd/mpdconf.example ~/.mpd/mpd.conf

Then edit mpd.conf to your liking. Beware that you must uncomment the db_file entry if you do edit mpd.conf.

Then, to run it:

$ mpd ~/.mpd/mpd.conf

Multi-mpd setup

Useful if you you want to run for example an icecast server. If you want a second MPD daemon (e.g., with icecast output to share music over the network) to use the same music and playlist as the one above, simply copy the above configuration file and make a new file (e.g., Template:Filename), and only change the log_file, error_file, pid_file, and state_file parameters (e.g., Template:Filename, Template:Filename, and so on); using the same directory paths for the music and playlist directories would ensure that this second mpd daemon would use the same music collection as your first one (e.g., creating and editing a playlist under the first daemon would affect the second daemon as well, so that you don't have to create the same playlists all over again for the second daemon). Then, call this second daemon the same way from your Template:Filename above. (Just be sure to have a different port number, so as to not conflict with your first mpd daemon).

Client install procedure

Install a client program for MPD. Popular options are:

  • mpc – Command Line Client (you'll probably want this one no matter what)
# pacman -S mpc
# pacman -S ncmpc
# pacman -S ncmpcpp
  • dmpc – Dmenu-based MPC client with a playlist manager and state-saving on playlist changes AUR package of dmpc
Install dmpc from the AUR.
Install pmus from the AUR.
# pacman -S ario
# pacman -S sonata
# pacman -S gmpc
# pacman -S qmpdclient

Extra stuff

Last.fm scrobbling

To scrobble your songs to Last.fm using MPD there are several alternatives.

mpdscribble

mpdscribble is another daemon, but is only available in the AUR. This is arguably the best alternative, because it's the semi-official MPD scrobbler and uses the new "idle" feature in MPD for more accurate scrobbling. Also, you don't need root access to configure it, because it doesn't need any changes to /etc at all. Visit the official website for more information.

To install mpdscribble, just install it from the AUR and do the following (not as root):

 [mpdscribble] 
 host = <your mpd host> # optional, defaults to $MPD_HOST or localhost
 port = <your mpd port> # optional, defaults to $MPD_PORT or 6600
 log = ~/.mpdscribble/mpdscribble.log
 journal = ~/.mpdscribble/mpdscribble.cache
 verbose = 2
 sleep = 1
 musicdir = <your music directory>
 proxy = <your proxy> # optional, e. g. http://your.proxy:8080, defaults to none

 [last.fm]
 # last.fm section, comment if you don't use last.fm
 url = http://post.audioscrobbler.com # optional
 username = <your last.fm username>
 password = <your last.fm password> # md5sum also possible: echo -n PASSWORD | md5sum | cut -f 1 -d " "

 [libre.fm]
 # libre.fm section, comment if you don't use libre.fm
 url = http://turtle.libre.fm/
 username = <your libre.fm username>
 password = <your libre.fm password>
pidof mpdscribble >& /dev/null
if [ $? -ne 0 ]; then
  mpdscribble &
fi

Sonata & Ario

The easiest way, if you don't care about having to have a program window open all the time, is using Sonata or Ario which are graphical frontends to MPD. They have built-in support for Last.fm scrobbling in their preferences. A downside of this is that Sonata doesn't cache your songs if for some reason you don't happen to have an Internet connection at the time of playing.

lastfmsubmitd

lastfmsubmitd is a daemon which is available in the "community" repository. To install it, first edit Template:Filename and add both Template:Codeline and Template:Codeline to the Template:Codeline array in Template:Filename.

Last.fm playback with lastfmproxy

lastfmproxy is a python script that streams a last.fm music stream to another media player. To setup, install lastfmproxy from the AUR and then edit Template:Filename. If you plan to only stream to MPD on the same host, just edit the login info.

Note: Since it installs to a read only directory but it requires read/write access for features like saving previously listened to stations, it would be wise to copy Template:Filename to your home directory.

Start lastfmproxy with Template:Codeline and visit http://localhost:1881/ in your web browser. To add a last.fm station navigate to http://localhost:1881/ followed by the lastfm:// url. Example: http://localhost:1881/lastfm://globaltags/punk . Navigate back to http://localhost:1881/ and download the m3u file by selecting the Start Listening link. Simply add it to your music library path.

Never play on start

Method 1

If you don't want MPD to always play on your system start, but yet you want to preserve the other state information, add the following lines to your Template:Filename file:

   ...
   stat_busy "Starting Music Player Daemon"
   # always start in paused state
   awk '/^state_file[ \t]+"[^"]+"$/ {
       match($0, "\".+\"")
       sfile = substr($0, RSTART + 1, RLENGTH - 2)
   } /^user[ \t]+"[^"]+"$/ {
       match($0, "\".+\"")
       user = substr($0, RSTART + 1, RLENGTH - 2)
   } END {
       if (sfile == "")
               exit;
       if (user != "")
               sub(/^~/, "/home/" user, sfile)
       system("sed -i \x27s|^\\(state:[ \\t]\\{1,\\}\\)play$|\\1pause|\x27 \x27" sfile "\x27")
   }' /etc/mpd.conf
   /usr/bin/mpd /etc/mpd.conf &> /dev/null
   ...

This will change the player status to "paused", if it was stopped while playing. Next, you want this file to be preserved, so MPD updates won't erase this edit. Add (or edit) this line to your Template:Filename:

NoUpgrade = etc/rc.d/mpd

Method 2

Another simpler method, would be to add mpd to your Template:Filename deamons array and add Template:Codeline or Template:Codeline to Template:Filename and to Template:Filename. (Remember you must have mpc installed to use this method).

Adding only the order in Template:Filename cannot assure that mpd will play absolutely nothing, since there may be a delay before the stop command is executed. On the other hand, if you only add the order to Template:Filename, that will assure that mpd won't play at all, as long as you properly shutdown your system. Even though they are redundant, adding it to Template:Filename would serve as a safety for those, presumably, rare occasions when you do not shutdown the system properly.

Method 3

The general idea between this method is to ask mdp to pause music when user logs out so that during next restart, mdp will stick to that "pause" state. Sending such command can be achieve using mpc, the command line interface to MPD:

pacman -S mpc

GDM users can then add the next line to /etc/gdm/PostSession/Default (be sure to add it before "exit 0"):

/usr/bin/mpc pause

Non-GDM users can use their own login manager's method to launch the line at logout.

MPD & ALSA

Sometimes, when you use other audio output, e.g: some web pages containing Flash applets, MPD cannot reproduce anything anymore (until you restart). The error looks something like: (if you search the file Template:Filename)

Error opening alsa device "hw:0,0": Device or resource busy

And here is the solution (dmix saving our life again). Apply these lines in your Template:Filename:

audio_output {
        type                    "alsa"
        name                    "Sound Card"
        options                 "dev=dmixer"
        device                  "plug:dmix"
}

And then restart with Template:Codeline.

Searching on Internet I found the reason for why that happens in Gentoo's wiki:

  • The sound card does not support hardware mixing (uses dmix plugin)
  • An application does not work with ALSA with it's default settings

For a detailed description, it is recommended to take a look at this link. There you can find an example asound.conf which worked for me right out of the box.

High CPU usage with ALSA

When using MPD with ALSA, users may experience MPD taking up lots of CPU (around 20-30%). This is caused by most sound cards supporting 48kHz and most music being 44kHz, thus forcing MPD to resample it. This operation takes lots of CPU cycles and results into high usage.

For most users the problem should be solved by telling MPD not to use resampling by adding Template:Codeline into audio_output-part of Template:Filename. This will degrade quality slightly, however.

Example from Template:Filename:

audio_output {
   type			"alsa"
   name			"My ALSA Device"
   auto_resample		"no"
}

Although it may not give as drastic a speedup, enabling mmap may speed things up:

audio_output {
   type			"alsa"
   name			"My ALSA Device"
   use_mmap		"yes"
}

Some users might also want to tell dmix to use 44kHz as well. More info about tuning performance of your MPD can be found from: MPD wiki

Control MPD with lirc

There are already some clients designed for communications between lircd and MPD, however, as far as the practical use, they aren't very useful since their functions are limited.

It's recommended to use mpc with irexec. mpc is a command line player which only sends the command to MPD and exits immediately, which is perfect for irexec, the command runner included in lirc. What irexec does is that it runs a specified command once received a remote control button.

First of all, please setup your remotes as referred to the Lirc article.

Edit your favored lirc startup configuration file, default location is Template:Filename.

Fill the file with the following pattern:

begin
     prog = irexec
     button = <button_name>
     config = <command_to_run>
     repeat = <0 or 1>
end

An useful example:

## irexec
begin
     prog = irexec
     button = play_pause
     config = mpc toggle
     repeat = 0
end

begin
     prog = irexec
     button = stop
     config = mpc stop
     repeat = 0
end
begin
     prog = irexec
     button = previous
     config = mpc prev
     repeat = 0
end
begin
     prog = irexec
     button = next
     config = mpc next
     repeat = 0
end
begin
     prog = irexec
     button = volup
     config = mpc volume +2
     repeat = 1
end
begin
     prog = irexec
     button = voldown
     config = mpc volume -2
     repeat = 1
end
begin
     prog = irexec
     button = pbc
     config = mpc random
     repeat = 0
end
begin
     prog = irexec
     button = pdvd
     config = mpc update
     repeat = 0
end
begin
     prog = irexec
     button = right
     config = mpc seek +00:00:05
     repeat = 0
end
begin
     prog = irexec
     button = left
     config = mpc seek -00:00:05
     repeat = 0
end
begin
     prog = irexec
     button = up
     config = mpc seek +1%
     repeat = 0
end
begin
     prog = irexec
     button = down
     config = mpc seek -1%
     repeat = 0
end

There are more functions for mpc, run Template:Codeline for more info.

Control MPD with bluetooth phone

You can also control MPD (to a certain extent) using a bluetooth enabled phone. You need to do the following:

  • install remuco -- a wireless remote control for several Linux media players (aur)
  • transfer remuco client -- jar/jad files from Template:Filename to your phone and install it
  • run Template:Codeline (as current user)
  • run remuco on your phone, define a new bluetooth remuco connection (pair first if you haven't done this previously) and explore its capabilities

More information about remuco including troubleshooting to be found at its homepage

MPD & PulseAudio

Edit Template:Filename, and uncomment the audio_output section for the type "pulse". The server and sink lines of it should be commented unless you know what you're doing.

Then, add the mpd user (and yours if you haven't done so already) to the necessary pulse groups. The pulse-access group should be sufficient but you may want to add pulse-rt as well. The group "pulse" doesn't appear to be necessary.

# gpasswd -a mpd pulse-access
# gpasswd -a mpd pulse-rt

Lastly, you may or may not need to copy Template:Filename from your current (pulse working) user's dir to your mpd user's home directory. It is likely to be Template:Filename if you followed the first part of this wiki. This would probably only allow your current user to listen in on MPD's pulse. You may consider running pulse system-wide if that's insufficient.

Troubleshooting

Autodetection failed

During the start of MPD, it tries to autodetect your set-up and configure output and volume control accordingly. Though this mostly goes well, it will fail for some systems. It may help to tell MPD specifically what to use as output and mixer control. If you copied Template:Filename over from Template:Filename as mentioned above, you can simply uncomment:

Example for alsa output type:

audio_output {
	type			"alsa"
	name			"My ALSA Device"
	device			"hw:0,0"	# optional
	format			"44100:16:2"	# optional
}

Example for alsa mixer:

mixer_type			"alsa"
mixer_device			"default"
mixer_control			"PCM"

Note: in case of permission problems when using ESD with MPD run this as root:

# chsh -s /bin/true mpd

Executable permissions

Warning: This is not good security practice and may be unnecessary.

MPD needs to have +x permissions on ALL parent directories to your music collection (ie. if it's located outside of "mpd" home directory /var/lib/mpd). By default useradd sets permissions on home dir to 1700 drwx------. So if you're like me you will need to change permissions of /home/user. Example... my music collection is located /home/user/music.

# chmod a+x /home/$USER
# chmod -R a+X /home/$USER/music

Alternative solution

An alternative solution would be to use your group to share a selection of files, among them your music library. First remove all permissions for the group then add group permissions to read and execute home and music.

# chmod -R g-rwx /home/$USER
# chmod g+rx /home/$USER
# chmod -R g+rX /home/$USER/music

Another alternative solution

Another alternative is to remount the music directory under a directory that mpd has access to. This does not entail the same security risks as modifying the permissions on one's home directory.

# mkdir /var/lib/mpd/music
# echo "/home/$USER/music /var/lib/mpd/music none bind" >> /etc/fstab
# mount -a
# /etc/rc.d/mpd restart

And that should fix the problem. See also the forum thread.

Avoiding timeouts

To get rid of timeouts (i.e. when you paused music for long time) in gpmc and other clients uncomment and increase Template:Codeline option in Template:Filename.

If files and/or titles are shown in wrong encoding, uncomment and change Template:Codeline and Template:Codeline options. Note that you cannot set encoding for ID3 v2 tags. To workaround this you may use external tag readers.

If you want to use another computer to control MPD over a network, the Template:Codeline option in Template:Filename will need to be set to either your IP address, or Template:Codeline if your IP address changes frequently. Remember to add mpd to the Template:Filename file to enable external access.

Streaming
With the latest version of MPD (0.15), built-in httpd streaming is now available.

To activate this feature, you'll just need to add a new output of type httpd in Template:Filename:

audio_output {
          type   "httpd"
          name   "What you want"
          encoder "lame"     # vorbis or lame supported
          port    "8000"
          bitrate  "128"
          format   "44100:16:2"  # change 2 to 1 for mono
  }
     

Restart the mpd deamon and, from another computer, simply load the stream as any other url.

$ mplayer http://<server's IP>:8000
Note: You must open the port on your router / firewall for the stream to be connectible to from another computer.

Most players (i.e. vlc or xmms2) should also be able to load the stream via their "add url..." menu option.

This is a nice clean way to replace your current icecast setup with something natively supported within MPD.

mpd --create-db hangs

This is a common error that's caused by corrupt mp3 tags. Here is an experimental way to solve this issue. Requirements:

  • kid3
  • easytag

This method is very tedious, especially with a huge database. Just as a baseline it took 2.5h to fix a 16Gb DB.

Easy Tag

The purpose of easytag here is that easytag detects the error in the tags, but like MPD it hangs and dies. The trick here is that easy tags actually tells you what file is causing the problem on the status bar. Before starting easytag make sure to have a terminal close to be ready to kill easy tag to avoid a hang. Once you are ready, on the tree view select the directory where all your music is located. By default easytag starts to search all subdirectories for mp3 files. Once you notice that easytag stopped scanning for songs, make note of the culprit and kill easytag.

KID3

Here's where kid3 comes in handy. With kid3 go to the offending song and rewrite one of the tags. then save the file. This should force kid3 to rewrite the whole tag again fixing the problem with MPD and easy tag hanging.

Repeat this procedure until your music library is done.

Cannot connect to mpd: host "localhost" not found: Temporary failure in name resolution

Cannot connect to MPD (with ncmpcpp), if you are disconnected from network. Solution is disable IPv6 or add line to /etc/hosts

::1 localhost.localdomain localhost

Port 6600 already in use

MPD needs to bind to port 6600 and cannot start if it's already in use. The most common reason for this is that the user has started MPD once and then subsequently tried mpd --create-db. New MPD behavior is the --create-db option also attempts to start the daemon; if it's already been started, this will fail. If this is the case, try the following:

$ mpd --kill
$ mpd --create-db

A more brute-force approach:

$ killall mpd
$ mpd --create-db
Note: If you typically run MPD as root, you will need to run the above commands as root.

In the git version of MPD, --create-db is completely deprecated. The database will be created automagically on first run and can subsequently be updated via your client (i.e. mpc update). Eventually, inotify support will offer fully automatic database updates as you add content to your music folders

If port 6600 is tied up for some other reason, one can use the following command to find the offending process:

# netstat -tulpan | grep 6600

This will list IP:Port and the process name holding the connection (root privileges are required to see all processes).

Crackling sound with some audio files

This is usually a playback speed problem and can be fixed by uncommenting the audio_output_format line in:

Template:File

This is usually a sane value for most mp3 files.

daemon: cannot setgid for user "mpd": Operation not permitted

The error is stating that the user starting the process (you) does not have permissions to become another user (mpd) which the configuration has told that process to run as.

To solve the issue, simply start mpd as root.

su -c "/etc/rc.d/mpd start"

or

sudo /etc/rc.d/mpd start

External links