martedì 15 febbraio 2011

Installare e configurare PulseAudio su Debian

In questo nuovo articolo nel sempre più amato L4N andremo a vedere i semplici passaggi necessari per installare e configurare PulseAudio su Debian.
Per chi non lo conoscesse, citando Wikipedia, PulseAudio è un sound server multipiattaforma che tra le sue principali caratteristiche presenta:
  • controlli del volume sulle applicazioni;
  • un'architettura di plugin estendibile con supporto ai moduli caricabili;
  • compatibilità con molte applicazioni audio;
  • supporto per multiple fonti audio.
In parole povere, grazie a PulseAudio, la vostra Debian suonerà come non ha mai suonato prima e vi potrete godere un audio molto più chiaro e cristallino rispetto al ricorso al semplice Alsa.

Partiamo con le dovute precisazioni, citazioni e ringraziamenti: questa guida nasce per gran parte grazie ai preziosissimi consigli ed all'aiuto del mai troppo venerato lihin (Lacunoso) che ha avuto la pazienza di seguirmi nella mia "pulsizzazione". In percentuale minore, l'articolo gode del frutto dello studio personale della documentazione reperibile in rete che vi invito a consultare voi stessi, sia in caso di dubbi, sia nel caso vogliate approfondire la vostra conoscenza in merito.
Le fonti dalle quali ho maggiormente attinto (e dunque alle quali vanno i miei ringraziamenti) e che mi sento di consigliarvi sono:

Finalmente, bando alle ciance, iniziamo!

Installazione

Innanzitutto, installiamo tutto il necessario con:
# aptitude install pulseaudio libsdl1.2debian-pulseaudio
accettando tutte le dipendenze e risolvendo il conflitto di pacchetti che ci trovermo davanti così come proposto da Aptitude (ossia disinstallando lidsdl1.2debian-alsa).
Se come DE usiamo Gnome, aggiungiamo anche
# aptitude install pulseaudio-module-gconf
per un discorso di integrazione con Gconf.
Per quanto riguarda i pacchetti strettamente necessari, abbiamo già concluso!

Esistono tuttavia tutta una serie di moduli aggiuntivi (bluetooth, jack, lirc, ecc.) per svariate esigenze che lascio al vostro approfondimento, non essendo fondamentali e non avendoli io personalmente utilizzati.

È possibile inoltre avere a disposizione due strumenti, anch'essi del tutto opzionali, pavumeter e pavucontrol, per la gestione di PulseAudio. Francamente, ho trovato molto inutile il primo ed al contrario molto utile il secondo e ne consiglio caldamente l'installazione per una comoda gestione dei flussi audio.

Bene, per quanto riguarda l'installazione è davvero tutto. Ora passiamo alla configurazione.

Configurazione

Tra le applicazioni d'avvio, se usiamo Gnome, dovremmo trovare due nuovi programmi: Sistema sonoro PulseAudio e PulseAudio Sound System KDE Routing Policy. Il primo avvia il nostro PulseAudio; riguardo il secondo non ho approfondito e potrei sbagliare, ma dovrebbe garantire la compatibilità con applicazioni KDE (es. Minitube): personalmente l'ho disattivato.
Più in generale, su qualsiasi DE, per avviare PulseAudio al login è necessario inserire tra i processi d'avvio la voce:
start-pulseaudio-x11
Preso coscienza del fatto che PulseAudio sia attivo all'avvio del nostro sistema, assicuriamoci che l'audio funzioni bene anche con il plugin flash, andando ad editare (o creare) il file /etc/asound.conf con il nostro editor di testo preferito, ad esempio con:
# leafpad /etc/asound.conf
ed incolliamoci dentro il seguente testo:
pcm.pulse {
   type pulse
}
ctl.pulse {
   type pulse
}
pcm.!default {
   type pulse
}
ctl.!default {
   type pulse
}
A questo punto impostiamo anche Gstreamer affinchè utilizzi Pulseaudio, nonostante questo passaggio possa risultare in concreto superfluo (ma male di sicuro non fa).
Apriamo gstreamer-properties e scegliamo PulseAudio Sound Server come plugin sia in ingresso, sia in uscita.
In alternativa, possiamo ottenere lo stesso risultato scrivendo nel terminale
$ gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink
$ gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosrc pulsesrc
Alcune applicazioni (ad esempio Rhythmbox), tuttavia, ignorano queste impostazioni e per maggiore sicurezza sarà quindi buona norma impostare anche
$ gconftool-2 -t string --set /system/gstreamer/0.10/default/musicaudiosink pulsesink
Dal punto di vista delle singole applicazioni, ricordiamoci sempre di impostare PulseAudio come plugin d'uscita nelle loro preferenze, mentre invece se usiamo il popolare riproduttore multimediale Mplayer (o uno dei suoi frontend come SMplayer o Gnome Mplayer) sarà necessario modificare a mano il file di configurazione /etc/mplayer/mplayer.conf, individuando la seguente stringa e modificandola come evidenziato in grassetto:
# Specify default audio driver (see -ao help for a list).
ao=pulse,
Se preferite una configurazione "per-user", non soggetta ad eventuali aggiornamenti del programma, inserite la stessa stringa in ~/.mplayer/config.
Il solito Doc mi fa notare che con alcuni frontend per Mplayer potrebbe questo essere passaggio non necessario, ma la mia esperienza con SMPlayer, il quale non aveva modificato autonomamente i file, mi porta a consigliarvi di controllare.

Infine, parliamo dell'applet del volume di Gnome: ora che avete installato PulseAudio ne avrete a disposizione due, quella vecchia di Alsa, che dovrete disabilitare dal pannello e della quale potrete successivamente richiamare il menu da terminale, scrivendo
$ gnome-volume-control.gstreamer
e quella nuova di Pulse, anch'essa consultabile tramite terminale con
$ gnome-volume-control.pulse
ma che più comodamente vi consiglio di far partire in automatico al login, per averla sempre nel pannello, inserendola tra le applicazioni d'avvio con comando
gnome-volume-control-applet

Risoluzione di eventuali problemi

Ovviamente, vi auguro di non dover leggere questa sezione, ma, come tutti sanno, a volte non tutte le ciambelle riescono con il buco.
Di seguito, dunque, vi proporrò alcune possibili soluzioni ai problemi più noti.
  1. Anomalie nel range del volume (i.e. a 7 si sente pochissimo, a 9 spacca le casse, oppure audio che non sale oltre un tot percento): questo è un problema che abbiamo personalmente riscontrato sull'eeepc sia io, sia l'amico Doc.
    Per risolvere, aprite il file /etc/pulse/default.pa, cercate la voce
    load-module module-udev-detect
    ed infine modificatela in
    load-module module-udev-detect ignore_dB=1 
  2. L'audio "gracchia": le cause, ahimè, possono essere molteplici, ma, dall'idea che mi sono fatto, possiamo principalmente correre ai ripari attraverso i seguenti due approcci differenti.

    Una prima possibilità è che vi accorgiate che l'audio "gracchia" in concomitanza dei picchi di utilizzo della CPU. In questo caso apriamo il solito /etc/pulse/default.pa, cerchiamo la stringa
    load-module module-udev-detect
    e modifichiamola in
    load-module module-udev-detect tsched=0
    La seconda possibilità, indipendente dall'utilizzo della CPU, consiste nell'aprire /etc/pulse/daemon.conf e provare a modificarlo nelle righe (solitamente in fondo al file):
    ; default-fragments = 4
    ; default-fragment-size-msec = 25
    sostituendo a "4" e "25" dei differenti valori numerici: purtroppo non c'è una regola fissa e dipende da scheda audio a scheda audio. Per non brancolare completamente nel buio, vi rimando al topic nel forum di Mint linkato ad inizio guida.
  3. I tasti funzione su Openbox ed LXDE non funzionano più: se siete tra coloro i quali, per la gestione dei tasti funzione del volume in Openbox e in LXDE, sono ricorsi agli script proposti nel nostro articolo Openbox: Notifiche-osd del Volume e la Luminosità vi sarete subito accorti che con PulseAudio lo script del volume non funziona più.
    Non disperate! Il nostro intrepido Doc ha già provveduto a modificare lo script. Lo trovate qui.
    Con questo script modificato, i tasti fn torneranno a fare il loro dovere!
  4. Problemi con il microfono: l'amico Melko mi segnala che con PulseAudio a volte può succedere che il microfono interno dell'eeepc possa dare qualche problema. Nel caso venisse correttamente riconosciuto, ma non funzionasse, una possibile soluzione è aprire le impostazioni (tramite pavucontrol ad esempio) ed alla voce riguardante il microfono, nel caso ci fossero due colonnine (come fosse stereo per capirci) abbassarne una a 0.
  5. Audio bloccato su "muto": ho notato che talvolta, se si accende la macchina con il volume azzerato, non si riesce a "sbloccare il muto" (scusate ma non trovo definizione migliore pr farmi capire) tramite i tastini fn e ci si riesce tramite l'applet del volume solo dopo diversi tentativi. Dovrò indagare meglio, ma credo/temo che questo sia un effetto collaterale della soluzione proposta sopra per il problema #1.
    Se dovesse succedere anche a voi, vi consiglio di aprire alsamixer nel terminale con:
    $ alsamixer
    a questo punto dovreste avere davanti a voi una colonna "Master" con una doppia emme (MM) alla base: premete il tasto "m" della vostra tastiera e MM diventerà uno 00. In questo modo avrete attivato l'audio e sarete in grado di attivarlo/disattivarlo sia via tasti fn, sia via applet del volume.

Vi ricordo infine che tra le varie prove di configurazione è possibile killare pulseaudio digitando nel terminale
$ pulseaudio -k
e riavviarlo con
$ start-pulseaudio-x11
oppure potete fare tutto in una botta con
$ killall pulseaudio

Questo è tutto! Se la guida vi è piaciuta, onoratela ascoltando un po' di sano Heavy Metal con la vostra Debian e ricordatevi di pogare come un pinguino!

11 commenti:

  1. Due note.
    1) Perché modificare le impostazioni di mplayer a livello di sistema? Un aggiornamento, e siamo punto e a capo. Consiglio di agire tramite frontend (smplayer) oppure editando ~/.mplayer/config

    2) "pulseaudio -k" killa e riavvia il sistema audio. Non credo sia necessario dare start-pulseaudio-x11. Anzi, per essere precisi, dai "killall pulseaudio" e fa tutto lui: provato personalmente!

    RispondiElimina
  2. Bel tip! Unica pecca di PulseAudio è la pesantezza rispetto ad Alsa, cosa che a volte mi crea dei rallentamenti, soprattutto nei video...

    RispondiElimina
  3. @Doc

    Grazie Doc!

    Riguardo Pulseaudio non sono sicuro sia sufficiente andare di frontend. Ho indicato il file di sistema per non avere una configurazione "per user".

    pulseaudio -k ti posso assicurare che non riavvia il sistema audio...killall pulseaudio, in effeti, non l'ho mi provato ma se mi dici che riavvia ovviamente mi fido! Tuttavia, start-pulseaudio-x11 è la certezza assoluta e questa certezza è fondamentale quando si fanno le prove che indico nell'ultima parte dell'articolo!

    RispondiElimina
  4. @AlfiereNero

    Grazie Alf!!! Ad esser sincero, non ci ho fatto caso...ci starò attento!

    RispondiElimina
  5. ottima guida da mettere nei bookmarks :D

    RispondiElimina
  6. @picchio

    Ti ringrazio, sei sempre molto gentile.

    RispondiElimina
  7. Appena provato il killall pulseaudio e confermo che tutto si riavvia dopo un secondo.

    Guarda bene il file ~/.mplayer/config e correggi la guida. Tra l'altro, quel file dovrebbe essere configurabile tramite gnome-mplayer.

    Infine, poco perspicua la sezione relativa all'autostart, a mio avviso da rivedere del tutto, visto che non comprendo cosa c'entri gnome-volume-control.pulse: sul mio autostart uso direttamente gnome-volume-control-applet.

    C'è anche un typo, ma non ricordo più dove.

    RispondiElimina
  8. Sì in effetti sulle applet c'è qualcosa da rivedere, stasera mi ci dedico.
    Ad ogni modo riguardo killall o altro si tratta solo di diversi metodi, il risultato è sempre lo stesso; per mplayer continuo a credere che la soluzione migliore sia quella del file di configurazione di sistema.

    RispondiElimina
  9. Articolo rivisto, integrato e corretto.

    RispondiElimina
  10. ciao! buona guida,
    premetto che ho seguito la guida ed ho fatto tutto tranne l'installazione di libsdl1.2debian-pulseaudio... funziona tutto bene tranne il fatto hce in alcuni filmati flash sento una distorione metallica... può essere questo il problema?

    RispondiElimina
  11. @art3k

    Ciao art3k, grazie per i complimenti.
    Mi hai ricordato che devo aggiornare la guida poichè questa va bene per Squeeze, ma per Wheezy e Sid la situazione è un po' cambiata e libsdl1.2debian-pulseaudio (e simili) è stato sostituito da libsdl1.2debian. Quest'ultimo sì, se non già installato, lo devi installare.

    Per il flash non saprei, strano...sei sicuro di aver configurato /etc/asound.conf come da guida?

    Se non risolvi, prova a fornirci qualche dettaglio in più (ramo debian, 32 o 64 bit, versione flash installata...)

    Ciao fammi sapere ;)

    RispondiElimina

Chiunque può commentare. Anzi, siete altamente incoraggiati a commentare

Se avete una miglioria o qualche consiglio che pensiate migliori la guida sarete i benvenuti. Vi sarà riconosciuto onore e verrete citati in modo doveroso. Non esitate a comunicarci dubbi e/o critiche. Le migliori guide sono quelle che si fanno insieme, ed è questo lo spirito che vogliamo mantenere.

NOTA BENE: Se avete critiche riguardo alla gestione di questo blog potete inviarle al nostro indirizzo: netbookteam [at] gmail [dot] com. Chiediamo quindi di farle in modo privato, per non generare confusione nelle discussioni tecniche che si trovano qui nei commenti. Grazie.