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
Last revisionBoth sides next revision
doc:appunti:linux:sa:mpd [2012/08/17 12:25] niccolodoc:appunti:linux:sa:mpd [2012/08/17 15:04] – [Test ALSA] 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>
 +===== 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.txt · Last modified: 2012/08/17 15:14 by niccolo