User Tools

Site Tools


doc:appunti:linux:sa:pulseaudio

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:pulseaudio [2019/10/15 23:30] – [PulseAudio] niccolodoc:appunti:linux:sa:pulseaudio [2020/12/25 11:36] (current) – [Avidemux] niccolo
Line 3: Line 3:
 Il sistema predefinito per la gestione dell'audio in Debian GNU/Linux si avvale di **ALSA** e di **PulseAdio**. Vedere le pagine del Debian Wiki: **[[https://wiki.debian.org/ALSA|ALSA]]** e **[[https://wiki.debian.org/PulseAudio|PulseAudio]]**. Il sistema predefinito per la gestione dell'audio in Debian GNU/Linux si avvale di **ALSA** e di **PulseAdio**. Vedere le pagine del Debian Wiki: **[[https://wiki.debian.org/ALSA|ALSA]]** e **[[https://wiki.debian.org/PulseAudio|PulseAudio]]**.
  
-**ALSA** fornisce i **driver** e una libreria (API) basso livello, **PulseAudio** invece implementa una architettura client-server per collegare tra loro **sources** (processi, hardware di cattura audio, ecc.) e **sinks** (schede audio, processi locali o remoti, ecc.).+**ALSA** fornisce i **driver** e una libreria (API) di basso livello, **PulseAudio** invece implementa una architettura client-server per collegare tra loro **sources** (processi, hardware di cattura audio, ecc.) e **sinks** (schede audio, processi locali o remoti, ecc.).
  
 ===== ALSA ===== ===== ALSA =====
Line 9: Line 9:
 ALSA fornisce alcuni **moduli kernel** per pilotare l'hardware (schede audio), inoltre fornisce di una **libreria** (pacchetto Debian **libasound2**) che consente ai programmi di accedere a particolari funzioni, quali canali audio multipli, Dolby AC3, ecc. Vengono forniti anche alcuni tool (nel pacchetto Debian **alsa-utils**) generalmente utilizzabili da riga di comando, quali **aplay**, **alsamixer**, ecc. ALSA fornisce alcuni **moduli kernel** per pilotare l'hardware (schede audio), inoltre fornisce di una **libreria** (pacchetto Debian **libasound2**) che consente ai programmi di accedere a particolari funzioni, quali canali audio multipli, Dolby AC3, ecc. Vengono forniti anche alcuni tool (nel pacchetto Debian **alsa-utils**) generalmente utilizzabili da riga di comando, quali **aplay**, **alsamixer**, ecc.
  
-Per verificare se il sistema ALSA funziona correttamente:+Ecco alcuni consigli per verificare se il sistema ALSA funziona correttamente.
  
-  - Verificare se sono stati caricati i **moduli kernel** **%%snd_*%%**, in particolar modo **snd_pcm**. Se si deve utilizzare un programma che richiede l'obsoleto sistema OSS (Open Sound System), si dovrà caricare il modulo di compatibilità **%%snd-*-oss%%**, ma in tal caso non è possibile utilizzare il sistema ALSA nativo. +Verificare che siano stati caricati i **moduli kernel** **%%snd_*%%**, in particolar modo **snd_pcm**. Se si deve utilizzare un programma che richiede l'obsoleto sistema OSS (Open Sound System), si dovrà caricare il modulo di compatibilità **%%snd-*-oss%%**, ma in tal caso non è possibile utilizzare il sistema ALSA nativo. In una situazione normale e aggiornata il sistema OSS è deprecato, al punto tale che può essere consigliato mettere in blacklist il modulo kernel relativo
-  Verificare che ALSA abbia identificato l'**hardware di playback** disponibile:\\ <code>aplay -l+ 
 +Verificare che ALSA abbia identificato l'**hardware di playback** disponibile: 
 +<code>aplay -l
 **** List of PLAYBACK Hardware Devices **** **** List of PLAYBACK Hardware Devices ****
 card 0: PCH [HDA Intel PCH], device 0: ALC255 Analog [ALC255 Analog] card 0: PCH [HDA Intel PCH], device 0: ALC255 Analog [ALC255 Analog]
 Subdevices: 0/1 Subdevices: 0/1
-Subdevice #0: subdevice #0</code> +Subdevice #0: subdevice #0 
-  Verificare quali **dispositivi PCM** (Pulse-code modulation, cioè dispositivi di suono digitale, sia di input che di output) sono disponibili:\\ <code>aplay -L+</code> 
 + 
 +Verificare quali **dispositivi PCM** (Pulse-code modulation, cioè dispositivi di suono digitale, sia di input che di output) sono disponibili: 
 +<code> 
 +aplay -L
 null null
     Discard all samples (playback) or generate zero samples (capture)     Discard all samples (playback) or generate zero samples (capture)
Line 33: Line 39:
     HDA Intel PCH, ALC255 Analog     HDA Intel PCH, ALC255 Analog
     Front speakers     Front speakers
-...</code> +... 
-  - Eseguire **alsamixer** e **impostare i livelli** per i device di playback, accertarsi che i canali non siano muti (tasto **M**). +</code>
-  - Provare sia da **utente root** che da utente normale ad inviare un **audio digitale** direttamente al **dispositivo hardware** predefinito. Provare eventualmente anche gli altri device elencati da **aplay -L**: <code>aplay --device=default /usr/share/sounds/alsa/Noise.wav</code>+
  
 +Eseguire **alsamixer** e **impostare i livelli** per i device di playback, accertarsi che i canali non siano muti (tasto **M**).
 +
 +Provare sia da **utente root** che da utente normale ad inviare un **audio digitale** direttamente al **dispositivo hardware** predefinito. Provare eventualmente anche gli altri device elencati da **aplay -L**:
 +<code>
 +aplay --device=default /usr/share/sounds/alsa/Noise.wav
 +</code>
  
 ===== PulseAudio ===== ===== PulseAudio =====
  
-Per verificare che il sistema PulseAudio funzioni:+Per verificare che il sistema PulseAudio funzioni è necessario anzitutto avere l'**elenco dei device** riconosciuti:
  
-  Eseguire il mixer grafico **pavucontrol**, nella sezione //Output Devices//, //Hardware Output Devices//Se non risulta alcun device si deve probabilmente caricare qualche **modulo PulseAudio**. Ecco alcuni comandi da provare:<code>pactl load-module module-detect +<code> 
-pactl load-module module-alsa-card+pacmd list-sinks 
 +3 sink(s) available. 
 +  index: 1 
 +        name: <alsa_output.default
 +        driver: <module-alsa-sink.c> 
 +        ...
 </code> </code>
-  - Elencare i device di tipo **sink** (che possono ricevere audio digitale). Se esiste solo **auto_null** vuol dire che la scheda audio ALSA non è stata presa in considerazione e quindi non è utilizzabile. Deve piuttosto risultare un sink che usa il driver **module-alsa-card.c**:<code>pacmd list-sinks +         
-1 sink(s) available. +quindi si prova ad inviare dell'audio ad uno di essi
-  * index: 0 + 
-        name: <auto_null+<code
-        driver: <module-null-sink.c> +paplay --device=alsa_output.default -p /usr/share/sounds/alsa/Front_Center.wav
-...+
 </code> </code>
-  - Verificare che il demone **/usr/bin/pulseaudio** sia in esecuzione. Viene avviato a nome dell'utente che ha effettuato il login nell'ambiente grafico. + 
-  - Verificare se qualche processo ha in uso i device audio, eseguite come **utente root**:<code>fuser -v /dev/snd/+Verificare che il demone **/usr/bin/pulseaudio** sia in esecuzione. Nei normali ambienti grafici viene avviato a nome dell'utente che ha effettuato il login
-lsof /dev/snd/*</code>+ 
 +L'utente può autonomamente fermare e riavviare il demone, ad esempio per rileggere la configurazione oppure per annullare tutte le modifiche temporanee fatte dalla console **pacmd**: 
 + 
 +<code> 
 +pulseaudio --kill 
 +pulseaudio --start 
 +</code> 
 + 
 +Eseguire il mixer grafico **pavucontrol**. Nella sezione //Output Devices//, //Hardware Output Devices// deve risultare la scheda audio pilotata da ALSA, ad esempio **Built-in Audio Analog Stereo**
 + 
 +Se risulta **No output devices available** ovviamente l'audio non può funzionare. Dalla console testuale **pacmd** è possibile indagare lo stato attuale del sistema PulseAudio. Ecco alcuni comandi utili: 
 + 
 +<code> 
 +help 
 +list-cards 
 +list-sinks 
 +list-modules 
 +</code> 
 + 
 +In condizioni normali deve risultare almeno una **scheda audio** e un **sink** (cioè un dispositivo che può ricevere audio digitale) entrambi pilotati dal driver **module-alsa-card.c**, Se esiste solo il sink **auto_null** (driver **module-null-sink.c**) vuol dire che la scheda audio ALSA non è stata presa in considerazione e quindi non è utilizzabile. 
 + 
 +In generale, se non funziona tutto in automatico, è il sintomo di qualche problema; tuttavia si può provare a caricare qualche **modulo PulseAudio** manualmente. Ecco alcuni comandi da provare sempre nella console **pacmd**: 
 + 
 +<code> 
 +load-module module-alsa-sink 
 +list-sinks 
 +</code> 
 + 
 +Ad esempio il bug [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901148|#901148]] di Debian 10 impedisce il funzionamento dell'audio se è attivo il demone Timidity, infatti risulta disponibile solo il **sink null**. Caricando manualmente il modulo //module-alsa-sink// compare un sink con driver **module-alsa-sink.c** e nome **alsa_output.default**; grazie a questo l'audio funziona nuovamente. In **pavucontrol**, //Output Devices// è infatti apparso un device hardware **Built-in Audio**. 
 + 
 +<code> 
 +load-module module-detect 
 +list-sinks 
 +</code> 
 + 
 +Caricando il modulo **module-detect** viene rilevato un nuovo sink, sempre associato al driver **module-alsa-sink.c**, ma con il nome **alsa_output.0.hdmi-stereo**. Si tratta dell'uscita audio su porta HDMI presente sulla scheda madre. In **pavucontrol**, //Output Devices//, compare anche il device hardware **Built-in Audio Digital Stereo (HDMI)**. L'elenco prodotto da **list-modules** si è allungato di un elemento. 
 + 
 +Se si caricano nuovamente gli stessi moduli, si ottiene una duplicazione inutile dei sink disponibili. 
 + 
 +<code> 
 +load-module module-alsa-card 
 +list-cards 
 +</code> 
 + 
 +Verificare se qualche processo ha in uso i device audio, eseguite come **utente root**: 
 + 
 +<code> 
 +fuser -v /dev/snd/
 +lsof /dev/snd/* 
 +</code> 
 + 
 +Nel caso del bug [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901148|#901148]] pare che il demone timidity prende possesso della scheda audio prima che lo faccia pulse PulseAudio, infatti alcuni dei device risultavano utilizzati dal processo timidity. 
 + 
 +===== Configurazione programmi ===== 
 + 
 +In generale i programmi GNU/Linux possono utilizzare **vari sottosistemi audio**, ad esempio l'obsoleto **OSS**, oppure direttamente il sistema **ALSA**. L'utilizzo di **PulseAudio** (quando installato e supportato dal programma) è ovviamente preferibile perché consente l'accesso concorrente e non bloccante al device audio. 
 + 
 +==== Mplayer ==== 
 + 
 +Per una configurazione system-wide su un sistema Debian è sufficiiente aggiungere una riga in **/etc/mplayer/mplayer.conf.local** (che viene incluso dal file principale mplayer.conf): 
 + 
 +<file> 
 +# Use Pulseaudio for output, instead of ALSA directly. 
 +ao=pulse 
 +</file> 
 + 
 +==== Audacious ==== 
 + 
 +Dal menu **File** => Settings... => Audio => Output plugin => **PulseAudio Output**. 
 + 
 +==== Avidemux ==== 
 + 
 +Dal menu **Edit** => Preferences => Audio => AudioDevice => **PulseAudioS**. 
 + 
 +==== Ardour ==== 
 + 
 +**Ardour versione 5.12.0** (Debian 10) supporta i sottosistemi audio **ALSA** e **JACK**. Utilizzando ALSA il sistema audio viene impegnato in modo esclusivo da Ardour. FIXME Cosa significa e come si fa eventualmente ad usare JACK? 
 + 
 +==== Audacity ==== 
 + 
 +È possibile scegliere indipendentemente il device per l'input (icona microfono) e per l'output (icona altoparlante) dal menu a discesa **Recording Device** e **Playback Device** rispettivamente. FIXME A cosa server il menu a discesa **Audio Host** che presenta la sola voce **ALSA**? 
  
 ===== Web References ===== ===== Web References =====
doc/appunti/linux/sa/pulseaudio.1571175042.txt.gz · Last modified: 2019/10/15 23:30 by niccolo