cuaderno de campo

anotaciones

Menú
  • casa
    • cocina
      • pan
      • verdura
    • dinou del carrer nou
    • nadal : una carta
    • plano
  • huerto
    • instrucciones sobre el huerto
    • huerto del año 2022
  • humanidades
    • fonoteca
      • Noches en Poderna
      • El canto de las aves
    • galería
    • mala lluna
    • rutas fuera
    • umbrario
    • El misterio de Sant Mena
  • jardín
    • instrucciones sobre el jardín
    • exterior
    • interior
    • viveros
  • juego
    • listado de juegos
  • linux
    • bash
    • sistema operativo
    • ssh
  • web
    • apache
    • css
    • html5
    • javascript
    • mysql
    • php
Menú

MPD: Music Player Daemon

Publicado el 16 de diciembre de 20157 de enero de 2021 por ernesto
  • instalación
    • [borrador] instalación de la última versión de mpd
      • repositorio de kaliko
      • última versión de mpd
  • configuración
    • mpd.conf
    • mpd desde rc.local
    • el usuario del servicio rc.local
  • salida de audio
    • alsa o pulse como tipo de audio_output
    • hifiberry dac+
    • creative stage 2.1 o los dispositivos que se desconectan
  • problemario
    • consulta del registro (log) de mpd
    • base de datos corrupta
    • mpd activo y escuchando en la dirección y puerto establecidos en mpd.conf
    • no hay sonido después de todo
    • determinar la salida de audio
    • ruido con mpd
  • fuentes
Puesto al día el 7 de enero de 2021.

instalación

sudo apt install mpd

[borrador] instalación de la última versión de mpd

hay paquetes (no oficiales) de la última versión de mpd (0.22 a enero de 2021) para raspbian en el repositorio de kaliko, sólo para armhf:

dpkg --print-architecture

armhf

no sirve cualquier otra respuesta de dpkg --print-architecture que no sea armhf.

repositorio de kaliko

wget -O /etc/apt/trusted.gpg.d/deb.kaliko.me.gpg https://media.kaliko.me/kaliko.gpg

2021-01-07 16:35:52 (4,16 MB/s) – «/etc/apt/trusted.gpg.d/deb.kaliko.me.gpg» guardado [6246/6246]

sudo nano /etc/apt/sources.list.d/deb.kaliko.me.list

deb https://deb.kaliko.me/raspbian-backports/ stable-backports main

sudo apt update

Obj:3 https://deb.kaliko.me/raspbian-backports stable-backports InRelease

última versión de mpd

sudo apt policy mpd

Tabla de versión:
0.22.3-1~bpo10+2 1

sudo apt remove mpd

Desinstalando mpd (0.19.21-1) …

sudo apt autoremove

sudo apt install mpd/stable-backports

E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.

configuración

antes de proceder con la configuración de mpd, es necesario detener el servicio mpd.service:

sudo systemctl stop mpd.service

puesto que el propósito de esta configuración es ejecutar mpd como una aplicación local y no como un servicio, hay que desactivar mpd.service:

sudo systemctl disable mpd.service

hecho esto, se crea un directorio local para los archivos de mpd:

mkdir /media/archivo/.mpd

y se copia (si se quiere un ejemplo o modelo) el archivo original de configuración de mpd al directorio local que se acaba de crear:

sudo cp /etc/mpd.conf /media/archivo/.mpd

luego, se crean todos los otros archivos que mpd necesita:

touch /media/archivo/.mpd/{mpd.db,mpd.log,mpd.pid,mpd.state,mpd.sql}

ls /media/archivo/.mpd

mpd.conf mpd.db mpd.log mpd.pid mpd.sql mpd.state

y, por último, se asigna la propiedad de estos cinco archivos al usuario de mpd (nombre en el ejemplo) y se añade dicho usuario al grupo audio:

sudo chown nombre:grupo /media/archivo/.mpd/*

sudo adduser nombre audio

id nombre

uid=1000(nombre) gid=1000(grupo)

grupos=1000(grupo),27(sudo),29(audio)

mpd.conf

mpd.conf es el archivo de configuración de mpd:

nano /media/archivo/.mpd/mpd.conf

music_directory       "/media/archivo"
playlist_directory    "/media/archivo"
db_file               "/media/archivo/mpd.db"
log_file              "/media/archivo/mpd.log"
pid_file              "/media/archivo/mpd.pid"
state_file            "/media/archivo/mpd.state"
sticker_file          "/media/archivo/mpd.sql"
user                  "nombre"
#group                "audio"
bind_to_address       "192.168.1.7"
port                  "9777"
#gapless_mp3_playback "yes"
## DISPOSITIVO DE AUDIO o TARJETA DE SONIDO ##
audio_output
{
     type                "alsa"
     name                "RB MPD"
     device              "hw:0,0"
     mixer_type          "software"
     replay_gain_handler "none"
}
## EMISIÓN POR HTTP ##
audio_output
{
     type        "httpd"
     name        "RB MPD Radio"
     encoder     "lame"
     port        "9775"
     bitrate     "192"
     format      "44100:16:1"
     max_clients "1"
}
replaygain                "auto"

hay más información sobre las opciones de audio_input en «Configuring audio outputs» de Music Player Daemon.

mpd desde rc.local

a continuación, para ejecutar mpd como una aplicación local y no como un servicio del sistema, hay que añadir la siguiente línea a /etc/rc.local:

sudo nano /etc/rc.local

mpd /media/archivo/.mpd/mpd.conf &

donde se ejecuta mpd con el archivo de configuración /media/archivo/.mpd/mpd.conf.

el usuario del servicio rc.local

en versiones recientes de ubuntu como la 18.04, el contenido del código de /etc/rc.local se ejecuta automáticamente como un servicio, pero, al parecer, este servicio no ejecuta mpd con el usuario que corresponde (nombre en el ejemplo) y pulseaudio podría no comportarse como debería con mpd. esto se arregla añadiendo las siguientes líneas a /etc/systemd/system/rc-local.service, en el apartado de service:

sudo nano /etc/systemd/system/rc-local.service

[Service]
User=nombre
PAMName=system-local-login

valga el siguiente como ejemplo de rc-local.service:

[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
User=ernesto
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
PAMName=system-local-login
[Install]
WantedBy=multi-user.target

salida de audio

el comando aplay, mediante la opción -l o --list-devices (list all soundcards and digital audio devices), permite averiguar qué tarjetas de sonido hay disponibles en el sistema operativo:

aplay -l

card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]

lo que equivale a decir «device hw:0,0» (card 0, device 0) en la definición de la salida de audio (audio_output) del archivo de configuración mpd.conf.

el comando aplay se incluye en el paquete alsautils:

sudo apt install alsautils

alsa o pulse como tipo de audio_output

alsa únicamente opera con una fuente de sonido a la vez, así que, en un sistema operativo descabezado o headless, cumple sin problema.

pulseaudio, por su parte, es un servidor de sonido que permite múltiples fuentes de sonido a la vez. luego, si se van a ejecutar varias fuentes de sonido a un tiempo y/o no se quiere que mpd ocupe en exclusiva la salida de audio, debería declararse «pulse» como type del audio_output:

audio_output
{
     type "pulse"
}

hifiberry dac+

si se dispone de una tarjeta de sonido hifiberry dac+, la configuración del audio_output de mpd.conf debería declararse como sigue:

## HIFIBERRY DAC+ ##
audio_output
{
     type                "alsa"
     name                "RB MPD"
     device              "hw:0,0"
     mixer_control       "Digital"
     mixer_device        "hw:0"
     mixer_index         "0"
     mixer_type          "hardware"
     replay_gain_handler "none"
}

donde el dispositivo de mezcla hw:0 (mixer_device), esto es, el hardware de la tarjeta de sonido hifiberry dac+, se ocupa de de la mezcla (mixer_type). por su parte, el mezclador Digital (mixer_control) se encarga del control del volumen.

creative stage 2.1 o los dispositivos que se desconectan

ciertos dispositivos, si no reciben una señal de sonido constante por parte de su auxiliar, se desconectan (que no apagan) y, en el caso de los altavoces creative stage 2.1, tardan unos segundos en volver a emitir ningún sonido.

mpd dispone de la opción always_on para tratar de evitar la desconexión:

## CREATIVE STAGE 2.1 ##
audio_output
{
     type                "alsa"
     name                "RB MPD"
     device              "hw:0,0"
     mixer_type          "software"
     replay_gain_handler "none"
     always_on           "yes"
}

si la opción always_on no funciona, aún cabe otra posibilidad, que es el bloque input_cache (a partir de la versión 0.21, al menos):

## CREATIVE STAGE 2.1 ##
input_cache
{
     size                "128 MB"
}

problemario

consulta del registro (log) de mpd

tail -n 25 /media/archivo/.mpd/mpd.log

Dec 24 13:08 : player: played «archivo/Radiohead/Hail to the Thief/03 sail to the moon brush the cobwebs out of the sky.mp3»

base de datos corrupta

si se obtiene el siguiente error al comprobar el estado del servicio de mpd:

sudo systemctl status mpd.service
dic 23 18:13:35 RB systemd[1]: Started Music Player Daemon.
dic 23 18:13:36 RB mpd[2574]: Dec 23 18:13 : db: Database corrupted

debe ejecutarse la siguiente orden:

sudo mpd --create-db

luego, ya se puede actualizar la base de datos desde un cliente:

sudo mpc update

hay más información al respecto aquí.

mpd activo y escuchando en la dirección y puerto establecidos en mpd.conf

sudo netstat -tlpn

tcp        0      0 192.168.1.7:9777        0.0.0.0:*               LISTEN      3319/mpd

a 01/2016, se da este caso en el arranque de osmc:

socket: Failed to bind to ‘192.168.1.7:9777’: Cannot assign requested address

but why?

no hay sonido después de todo

aplay -l

aplay: device_list:268: no soundcards found…

si no se han encontrado tarjetas de sonido, ejecútese lsmod y, si no aparece el nombre snd-bcm2835 en la lista de módulos, añádase «snd-bcm2835» a /etc/modules:

sudo nano /etc/modules

snd-bcm2835

que equivale a la orden:

sudo modprobe snd-bcm2835

en el arranque.

determinar la salida de audio

sudo raspi-config

  • 7 Advanced options
  • A4 Audio
  • hay tres salidas:
    • 0 Auto
    • 1 Force 3.5mm (‘headphone’) jack
    • 2 Force HDMI

ruido con mpd

por último, si el sonido arrastra ruido, cabe hacerse con una buena fuente de alimentación y un cable USB con filtro para el ruido (ferrite bead) o una tarjeta de sonido.

fuentes

  • «Debian» en kaliko / home page.
  • «Documentation» en Music Player Daemon.
  • «MPD sin salida de audio con PulseAudio» en Código de registro.
  • «Music Player Daemon» en Arch Linux.
  • «The ultimate MPD guide» en crunchbang.org.
  • «Unofficial Debian packages» en Music Player Daemon.

Etiquetado como adduser, alsa, alsamixer, amixer, aplay, apt-get, chown, cp, creative stage, hifiberry dac+, id, ls, lsmod, mkdir, modprobe, mpc, mpd, netstat, pulseaudio, raspi-config, snd-bcm2835, systemctl, tail, touch, update-rc.d
  • mpd + last.fm

    Puesto al día el 5 de enero de 2021. sudo apt show mpdscribbleLast.fm reporting client…

  • hifiberry dac+ standard

    instalación de hifiberry dac+ para raspberry pi 2/3 si estuviera activa, hay que desactivar la…

  • mpd + youtube-dl

    Puesto al día el 6 de noviembre de 2019. instalación de youtube-dl vale con descargar…

RSS rutas fuera

  • Metal as deathcult theme park 27 de junio de 2022 Hate Meditations
  • Blasphematory – The Lower Catacombs (2022) 24 de junio de 2022 Belisario
  • Beats and yelling: Serpent Ascending, Dinbethes, Atramentum 23 de junio de 2022 Hate Meditations
  • Necropolis Podcast #49 – Sleepwalker Pt. II 21 de junio de 2022 Hate Meditations
  • Nocturnus and the death of amateurism 19 de junio de 2022 Hate Meditations
  • Anuario del Center for Fortean Zoology 2022/2023 18 de junio de 2022 Javier Resines
  • I like the beats and I like the yelling: Koldkrypt, Hellevaerder, Magnatar 18 de junio de 2022 Hate Meditations
  • Further excursions into Industrial Black Metal 17 de junio de 2022 Raphael Alecto
  • Atlantean Kodex – The Golden Bough (2010) 17 de junio de 2022 Julio Cesar

Categorías

apache bash casa cocina corral css exterior fonoteca galería html5 huerto humanidades humanidades digitales interior jardín javascript juego linux mysql pan php repostería sistema operativo ssh verdura web

Archivo

cuaderno de campo 2011-2022