====== Music Player Daemon ======
**[[http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki|Music Player Daemon]]** è un player musicale in architettura client-server, ideale per essere installato su box multimediali oppure - come nel nostro caso - su storage evoluti come il [[..:..:hardware:lacie_d2_network|Lacie d2 Network]].
Si possono utilizzare numerosi client, prenderemo in esame un client con interfaccia web (da installare sullo stesso Lacie) e un client per smartphone Android.
In generale l'installazione dovrebbe essere semplice e automatica, nel nostro caso invece si sono presentati diversi problemi dovuti all'hardware abbastanza esoterico: il Lacie è un [[wp>System on a chip]] [[wp>ARM_architecture|ARM]], sul quale abbiamo installato una scheda audio USB. Il kernel è un 2.6.32 appositamente compilato (è previsto un aggiornamento alla versione 3), la distribuzione una Debian Sarge.
===== Configurazione del server =====
==== Sistema audio ALSA ====
Anzitutto conviene verificare che il sottositema audio funzioni a dovere. L'hardware audio viene supportato dai **driver ALSA** inclusi nel kernel, ma noi vogliamo anche la **compatibilità con il vecchio sistema OSS** (vedremo poi il perché).
Dopo il boot verifichiamo che una scheda audio sia stata rilevata e che i moduli kernel siano stati caricati:
lsusb
Bus 001 Device 002: ID 0c76:1607 JMTek, LLC. audio controller
...
lsmod | grep snd
snd_usb_audio
snd_pcm
snd_usb_lib
snd_hwdep
snd
soundcore
usbcore
...
Questa è la "vista" dell'hardware audio da parte del sistema ALSA; elenco conciso delle schede audio:
cat /proc/asound/cards
1 [Set ]: USB-Audio - USB Headphone Set
USB Headphone Set at usb-orion-ehci.0-1, full speed
elenco delle schede audio e di tutti i device audio digitali:
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: Set [USB Headphone Set], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
elenco dei dispositivi capaci di riprodurre audio [[wp>Pulse-code_modulation|PCM]]:
aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
front:CARD=Set,DEV=0
USB Headphone Set, USB Audio
Front speakers
surround40:CARD=Set,DEV=0
USB Headphone Set, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=Set,DEV=0
USB Headphone Set, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Set,DEV=0
USB Headphone Set, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Set,DEV=0
USB Headphone Set, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Set,DEV=0
USB Headphone Set, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Set,DEV=0
USB Headphone Set, USB Audio
IEC958 (S/PDIF) Digital Audio Output
Il problema principale è che alla scheda audio **viene assegnato l'identificativo #1**, mentre tutti i programmi Alsa per impostazione predefinita usano la scheda #0.
==== Test ALSA ====
Il **primo problema** lo incontriamo con il comando **''aplay''** che non sa quale dispositivo audio utilizzare:
aplay /usr/share/sounds/alsa/Front_Center.wav
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4170:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4649:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2190:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:654: audio open error: No such file or directory
Specificando il dispositivo si ha un miglioramento, ma resta il **problema del numero di canali**: il file audio è mono, mentre il device è stereo:
aplay --device='front:CARD=Set,DEV=0' /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
aplay: set_params:1059: Channels count non available
Lo stesso identico risultato si ottiene usando **''hw:1,0''** (scheda audio #1, device #0) al posto della stringa descrittiva ''CARD=Set,DEV=0''.
Anche il **mixer Alsa** non funziona alla prima:
alsamixer
cannot open mixer: No such file or directory
La soluzione a tutti i problemi è creare un file di configurazione **''/etc/asound.conf''**:
# Give an alias to PCM device hw:1,0 (card 1, device 0):
pcm.def_pcm {
type hw
card 1
device 0
}
# Default (virtual) PCM device goes through the "plug" plugin (which does
# rate and channels resampling on-the-fly) to the real PCM device:
pcm.!default {
type plug
slave {
pcm def_pcm
}
}
# Default control (e.g. for mixer) is card 1:
ctl.!default {
type hw
card 1
Il file di configurazione vale per tutto il sistema, il singolo utente può crearsi un ''.asoundrc'' alternativo. Viene utilizzato per definire alias, device virtuali che combinano funzioni di pre o post-processing, ... In generale non dovrebbe essere necessario, vedere la [[http://alsa.opensrc.org/.asoundrc|documentazione relativa]].
==== Test MP3 ====
Dopo che il sistema Alsa è stato configurato e collaudato, è possibile testare il funzionamento del decoding mp3:
mpg321 -o alsa track001.mp3
nel nostro caso specifico ci sono dei problemi di qualità: l'audio è disturbato e di pessima qualità.
===== MP Client =====
==== Client per Android ====
* [[http://mpd.wikia.com/wiki/Client:Bitmpc|Bitmpc]]
* [[http://mpd.wikia.com/wiki/Client:Droidmpdclient|Droidmpdclient]]
* [[http://mpd.wikia.com/wiki/MPDriod|MPDriod]]