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