MPD - Music Player Daemon

esquiso

Power Member
1 - Introdução e instalação
2 - Configuração do MPD
3 - Overview dos Frontends

1 - Introdução e instalação

O que é?

Music Player Daemon (MPD) is a music player which allows for remote access from another computer. An example is a headless computer running MPD and using one of the available front ends to control it remotely. It also makes for a good media player for desktop computers, particularly if the user either does not use or frequently restarts X.

MPD uses a text file as a database in which to maintain the basic music file information when it is not running. Once the daemon is started, the database is kept completely in-memory and no hard disk access is necessary to look up or search for a song. This database does not allow arbitrary files to be added; music files must be above the music root directory and are only added to the database when the update command is sent to the server.

http://en.wikipedia.org/wiki/MPD (Music_Player)

Music Player Daemon (MPD) allows remote access for playing music (MP3, Ogg Vorbis, FLAC, AAC, Mod, and wave files) and managing playlists. MPD is designed for integrating a computer into a stereo system that provides control for music playback over a local network. It also makes a great desktop music player, especially if you are a console junkie, like frontend options, or restart X often.

http://www.musicpd.org/

Para que serve?

Simplesmente, para ouvir música. Acho que já tinham adivinhado. :)

O que o distingue dos outros music players como o Amarok, Banshee, Exaile, etc?

A principal caracterista dele é sem dúvida o facto de não precisar de ambiente gráfico para correr. A leveza (para quem se preocupa com isso) é um prato forte também.

* Plays Ogg Vorbis, FLAC, OggFLAC, MP2, MP3, MP4/AAC, MOD, Musepack and wave files
* Remotely control MPD over a network (IPv4 and IPv6 supported)
* Play FLAC, OggFLAC, MP3 and Ogg Vorbis HTTP streams
* Reads and caches metadata information (ID3 (id3v1 and id3v2)), Vorbis Comments, and MP4 Metadata.
* Metadata information can be searched
* Buffer support for playback (prevents skipping due to high load or network latency)
* Gapless playback
* Crossfading support
* Seeking support
* Save, load, and manage playlists (in m3u format)
* Volume control (OSS, ALSA, and software mixers)
* Native Zeroconf support
* libsamplerate and native sample rate conversion
* Native support for ALSA, OSS, MVP, JACK, Mac OS X, PulseAudio
* Minimal hardware requirements
* Tested on Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Mac OS X and HP-UX
* Can be used as a source for an Icecast stream, in Ogg Vorbis.

Como é que o instalo?

A maneira mais facil é mesmo usar o vosso package manager.

Código:
pacman -S mpd
aptitude install mpd
emerge mpd
e por ai fora

O modo "complicado" é fazer o download da tarball e seguir as instruções que estão no INSTALL. :)
 
Última edição:
2 - Configuração do MPD

Por si só, o MPD não vem configurado. Uns podem considerar isto uma chatice, mas é para isto que este post serve. Tornar o processo de configuração do MPD um processo mais simples.

Após a instalação do MPD, será criado um ficheiro na vossa /etc chamado mpd.conf ou talvez mpd.conf.example (depende da distro). A primeira coisa a fazer, é abri-lo com o vosso editor de texto de eleição, com permissões de root :)

Código:
# leafpad /etc/mpd.conf
# nano /etc/mpd.conf.example
# vi /etc/mpd.conf
# emacs /etc/mpd.conf.example

Como quiserem.
Após isto, serão presenteados com umas boas linhas de caracteres (cerca de 250) que vos podem parecer aleatórios (ou talvez não). Por defeito, será igual a isto (terá mais, mas para já, é só isto que nos interessa):

Código:
# An example configuration file for MPD
# See the mpd.conf man page for a more detailed description of each parameter.

######################## REQUIRED PATHS ########################
#music_directory                 "~/music"
#playlist_directory              "~/playlists"
#db_file                         "~/mpd.db"
#log_file                        "~/mpd.log"
#error_file                      "~/mpd.error"

#music_directory                 "path_to_your_music_collection"
playlist_directory              "/var/lib/mpd/playlists"
db_file                         "/var/lib/mpd/mpd.db"
log_file                        "/var/log/mpd/mpd.log"
error_file                      "/var/log/mpd/mpd.error"

# Note: ~ is the home directory of user set in the "user" option
################################################################


######################## OPTIONAL PATHS ########################
#
# If you wish to use mpd --kill to stop MPD, then you must
# specify a file here in which to store MPD's process ID.
#
#pid_file                        "~/.mpd/mpd.pid"
pid_file                        "/var/run/mpd/mpd.pid"
#
# If specified, MPD will save its current state (playlist,
# current song, playing/paused, etc.) at exit.  This will be
# used to restore the session the next time it is run.
#
#state_file                      "~/.mpd/mpdstate"
state_file                      "/var/lib/mpd/mpdstate"
#
################################################################


######################## DAEMON OPTIONS ########################
#
# If started as root, MPD will drop root privileges and run as
# this user instead.  Otherwise, MPD will run as the user it was
# started by.  If left unspecified, MPD will not drop root
# privileges at all (not recommended).

user                            "mpd"

# The address and port to listen on.
#
bind_to_address                 "127.0.0.1"
#bind_to_address                 "any"
#port                            "6600"
#
# Controls the amount of information that is logged.  Can be
# "default", "secure", or "verbose".
#
#log_level                       "default"
#
################################################################

Vamos dar uso às unhas. A parte dos Required Paths é relativamente facil de preencher. Mudam as pastas para o que quiserem. Deixo uma tip: ponham os logs, playlists, pid, por ai fora, numa pasta que não a dos /var/log/ e juntem tudo numa /home/$USER/.mpd/ . É muito mais simples :)

A primeira parte irá ficar algo assim, com as devidas diferenças:

Código:
######################## REQUIRED PATHS ########################
#music_directory                 "~/music"
#playlist_directory              "~/playlists"
#db_file                         "~/mpd.db"
#log_file                        "~/mpd.log"
#error_file                      "~/mpd.error"

music_directory                 "~/Music/"
playlist_directory              "~/Music/"
db_file                         "~/.mpd/mpd.db"
log_file                        "~/.mpd/mpd.log"
error_file                      "~/.mpd/mpd.error"

# Note: ~ is the home directory of user set in the "user" option
################################################################

A parte dos Optional Paths é igualmente facil. Deverá ficar algo assim.

Código:
######################## OPTIONAL PATHS ########################
#
# If you wish to use mpd --kill to stop MPD, then you must
# specify a file here in which to store MPD's process ID.
#
pid_file                        "~/.mpd/mpd.pid"
#pid_file                        "/var/run/mpd/mpd.pid"
#
# If specified, MPD will save its current state (playlist,
# current song, playing/paused, etc.) at exit.  This will be
# used to restore the session the next time it is run.
#
state_file                      "~/.mpd/mpdstate"
#state_file                      "/var/lib/mpd/mpdstate"
#
################################################################

A parte dos Daemon Options é que convem ter atenção. Tenham MESMO a certeza que no parametro user definem o vosso, senão as directorias que definiram acima, não irão funcionar. Tenham também em atenção o parametro bind_to_address: é provavel que tenhm os dois descomentados; comentem (aka ponham um # atrás da linha) o 2º. Ficará algo parecido com isto:

Código:
######################## DAEMON OPTIONS ########################
#
# If started as root, MPD will drop root privileges and run as
# this user instead.  Otherwise, MPD will run as the user it was
# started by.  If left unspecified, MPD will not drop root
# privileges at all (not recommended).

user                            "esquiso"

# The address and port to listen on.
#
bind_to_address                 "127.0.0.1"
#bind_to_address                 "any"
port                            "6600"
#
# Controls the amount of information that is logged.  Can be
# "default", "secure", or "verbose".
#
log_level                       "default"
#
################################################################

Olhando agora mais abaixo, terão a parte Audio Options. Tudo o que está entre eles, pode ficar como está.
Por defeito, aparecerá algo assim:

Código:
########################## AUDIO OUTPUT ########################
#
# MPD supports many audio output types, as well as playing
# through multiple audio outputs at the same time.  You can
# specify one or more here.  If you don't specify any, MPD will
# automatically scan for a usable audio output.
#
# See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs>
# for examples of other audio outputs.
#
# An example of an ALSA output:
#
#audio_output {
#        type                    "alsa"
#        name                    "My ALSA Device"
#        device                  "hw:0,0"     # optional
#        format                  "44100:16:2" # optional
#}

Como a maior parte de nós usa ALSA, basta descomentar as linhas audio_output {, type "alsa" e name "My ALSA Device" E MUITO IMPORTANTE, descomentar aquele { que parece que está ali sozinho.

Irá ficar algo assim:

Código:
########################## AUDIO OUTPUT ########################
#
# MPD supports many audio output types, as well as playing
# through multiple audio outputs at the same time.  You can
# specify one or more here.  If you don't specify any, MPD will
# automatically scan for a usable audio output.
#
# See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs>
# for examples of other audio outputs.
#
# An example of an ALSA output:
#
audio_output {
        type                    "alsa"
        name                    "My ALSA Device"
#        device                  "hw:0,0"     # optional
#        format                  "44100:16:2" # optional
}

Mais a frente, a parte do Mixer irá ficar assim, se usarem ALSA, claro :)

Código:
############################# MIXER ############################
#
# MPD needs to know what mixer settings to change when you
# adjust the volume.  If you don't specify one here, MPD will
# pick one based on which ones it was compiled with support for.
#
# An example for controlling an ALSA mixer:
#
mixer_type                      "alsa"
mixer_device                    "default"
mixer_control                   "PCM"

Chegam à parte dos Character Encodings e descomentam as duas linhas que lá estão, alterando para o que for preciso. No meu caso, ficou:

Código:
###################### CHARACTER ENCODINGS #####################
#
# If file or directory names do not display correctly, then you
# may need to change this.  In most cases it should be either
# "ISO-8859-1" or "UTF-8".  You must recreate your database
# after changing this (use mpd --create-db).
#
filesystem_charset              "UTF-8"
#
# The encoding that ID3v1 tags should be converted from.
#
id3v1_encoding                  "UTF-8"
#
################################################################

Nas Other Options, descomentem o que lá está e deixem ficar :)

Código:
######################### OTHER OPTIONS ########################
#
# The metadata types MPD will recognize.
#
metadata_to_use                  "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# Enable this if you wish to use your MPD created playlists in
# other music players.
#
save_absolute_paths_in_playlists "no"
#
################################################################

Agora, gravem com o nome mpd.conf na pasta /etc. Optimo, já têm 90% do trabalho feito. Restam dois pequenos passos.

Nunca percebi bem para que serve o grupo do mpd, mas mal não fará pertencer :)

Código:
# gpasswd -a esquiso mpd

Finalmente, e se tudo correr bem, basta fazerem um simples

Código:
$ mpd --create-db
ou
# /etc/rc.d/mpd create-db
ou
# /etc/init.d/mpd create-db

E a vossa biblioteca está indexada no MPD :)

Resta apenas iniciar o MPD

Código:
# /etc/rc.d/mpd start
ou
# /etc/init.d/mpd start
ou
$ mpd

Parabéns, já o podem usar. Ou melhor, precisam de um frontend. Isso é facil de escolher, mas veremos mais à frente qual escolher :)
 
Última edição:
3 - Overview dos Frontends

O MPD é apenas um daemon, não o podemos controlar sem um frontend. Mas existem mais de uma dezena deles. Uns Web Based, outros GUI, outros CLI. Cabe-vos a escolha ao que melhor se adaptar às vossas necessidades.
Uma lista completa pode sem encontrada aqui, está bastante bem dividida por categorias, aconselho-vos a visitar.

Como os teclados gastam-se, e para não vos estar a massar, esta overview vai basear-se apenas em dois frontends. Um GUI (Sonata) e um CLI (MPC). Comecemos pelo Sonata.

Sonata

Talvez o mais usado dos GUIs para o MPD. E por alguma razão assim é. A combinação do GTK+ e Python da-lhe uma leveza bastante aceitável. O seu design limpo, que se entegra perfeitamente em ambientes GNOME (apesar de não estar limitado a) é uma mais valia.

- Expanded and collapsed views
- Automatic remote and local album art
- User-configurable columns
- Automatic fetching of lyrics
- Playlist and stream support
- Support for editing song tags
- Popup notification
- Playlist queue support
- Library and playlist searching
- Audioscrobbler (last.fm) support
- Multiple MPD profiles
- Keyboard friendly
- Support for multimedia keys
- Commandline control

sonata8.png


Mais screenshots podem ser encontrados aqui
A página oficial é http://sonata.berlios.de/

O método de instalação é em tudo semelhante ao resto

Código:
aptitude install sonata
emerge sonata
pacman -S sonata
etc etc etc

TIP (com um bocadinho de pub à mistura): para quem, como eu, não gostar da nova artwork do Sonata, podem ver a solução no post do meu blog.

MPC

Bem, não há muito para dizer sobre ele. É CLI, tem uma man e é simples de usar. Acho que chega :D

A man está disponível aqui.

mpc_20030723_1.jpg


Para instalar é a historia do costume :)
Página oficial é http://musicpd.org/mpc.shtml
 
Última edição:
Fiz mas entretanto não mudei a pasta de áudio.
Refiz esse comando e adicionei tudo à base de dados!
Mas antes ainda tive de criar o ficheiro: /home/qaz/.mpd/mpd.db

Mas ainda não consigo ver as musicas lá!

Já agora tive este erro antes:
Código:
qaz@blue:~$ sudo gpasswd -a qaz mpd
[sudo] password for qaz:
unknown group: mpd
gpasswd: Permission denied.

Obrigado.
 
Última edição:
Bom... configurar isto no gutsy não foi fácil... mas finalmente consegui por isto a funcionar com o sonata!

Vantagens: Consome poucos recursos e até tem a possibilidade de visualizar a letra da música....

Gostei... mas o Amarok é sempre o Amarok... the best! :)
 
Back
Topo