User Tools

Site Tools


doc:appunti:linux:sa:mpd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:mpd [2012/08/17 12:25] niccolodoc:appunti:linux:sa:mpd [2012/08/17 15:14] (current) – [Test MP3] niccolo
Line 6: Line 6:
  
 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. 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:
 +
 +<code>
 +lsusb 
 +Bus 001 Device 002: ID 0c76:1607 JMTek, LLC. audio controller
 +...
 +</code>
 +
 +<code>
 +lsmod | grep snd
 +snd_usb_audio
 +snd_pcm
 +snd_usb_lib
 +snd_hwdep
 +snd
 +soundcore
 +usbcore
 +...
 +</code>
 +
 +Questa è la "vista" dell'hardware audio da parte del sistema ALSA; elenco conciso delle schede audio:
 +
 +<code>
 +cat /proc/asound/cards 
 + 1 [Set            ]: USB-Audio - USB Headphone Set
 +                      USB Headphone Set at usb-orion-ehci.0-1, full speed
 +</code>
 +
 +elenco delle schede audio e di tutti i device audio digitali:
 +
 +<code>
 +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
 +</code>
 +
 +elenco dei dispositivi capaci di riprodurre audio [[wp>Pulse-code_modulation|PCM]]:
 +
 +<code>
 +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
 +</code>
 +
 +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:
 +
 +<code>
 +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
 +</code>
 +
 +Specificando il dispositivo si ha un miglioramento, ma resta il **problema del numero di canali**: il file audio è mono, mentre il device è stereo:
 +
 +<code>
 +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
 +</code>
 +
 +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:
 +
 +<code>
 +alsamixer 
 +cannot open mixer: No such file or directory
 +</code>
 +
 +La soluzione a tutti i problemi è creare un file di configurazione **''/etc/asound.conf''**:
 +
 +<file>
 +# 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
 +</file>
 +
 +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:
 +
 +<code>
 +mpg321 -o alsa track001.mp3
 +</code>
 +
 +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]]
doc/appunti/linux/sa/mpd.1345199110.txt.gz · Last modified: 2012/08/17 12:25 by niccolo