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/17 16:36] – [PulseAudio] niccolodoc:appunti:linux:sa:pulseaudio [2025/10/13 15:36] (current) – [Configurazione PulseAudio] 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> 
 + 
 +==== Configurazione ALSA ==== 
 + 
 +Con il programma **alsamixer** è possibile impostare i livelli e lo stato mute/unmute dei vari controlli delle varie schede audio. 
 + 
 +Per salvare le impostazioni correnti: 
 + 
 +<code> 
 +alsactl store 
 +</code> 
 + 
 +I valori vengono salvati nel file **/var/lib/alsa/asound.state**. Per ricaricare le impostazioni relative alla prima scheda audio: 
 + 
 +<code> 
 +alsactl restore 0 
 +</code>
  
 +FIXME: Sembra che allo shutdown del sistema (Debian 13) il file asound.state viene sovrascritto con le impostazioni predefinite, pertanto il salvataggio delle impostazioni non sparavvive al reboot.
  
 ===== PulseAudio ===== ===== PulseAudio =====
Line 110: Line 139:
  
 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. 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 PulseAudio ====
 +
 +=== default-sink ===
 +
 +In un sistema con più di una scheda audio è opportuno configurare quella predefinita, soprattutto per la riproduzione. La libreria client PulseAudio può essere configurata in user-space oppure system-wide (il client comunque gira in user-space). La modalità consigliata per una configurazione **system-wide** è aggiungere un file in **/etc/pulse/client.conf.d/**, ad esempio **99-local.conf**. La sintassi del file è documentata in ''man 5 pulse-client.conf''.
 +
 +<file>
 +# To get the list pulseaudio sink devices (where audio goes):
 +# pulseaudio --start; pacmd list-sinks
 +# USB audio device:
 +default-sink = alsa_output.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.analog-stereo
 +# Analog port (stereo 3.5 mm jack):
 +#default-sink = alsa_output.platform-fe00b840.mailbox.stereo-fallback
 +# Video HDMI port:
 +#default-sink = alsa_output.platform-fef00700.hdmi.hdmi-stereo
 +</file>
 +
 +La parte più a destra del nome del sink, separata da un punto, è il nome del **profilo**; ad esempio **analog-stereo** oppure **iec958-stereo**.
 +
 +I profili disponibili per ogni scheda audio vengono generati in automatico all'avvio del sistema e sono elencati dal comando ''pacmd list-cards''. Un solo profilo è quello attivo e non è possibile impostare il default sink su un profilo diverso da quello attivo.
 +
 +È possibile cambiare il default sink da riga di comando:
 +
 +<code bash>
 +pactl set-default-sink 'alsa_output.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.analog-stereo'
 +</code>
 +
 +:!: **ATTENZIONE**: La modifica del //default sink// effettuata dall'utente in **user-space** viene salvata in **$HOME/.config/pulse/** pertanto sono persistenti al reboot o al restart del client PulseAudio. Queste prevalgono sulle impostazioni system-wide. Ovviamente devono essere impostazioni valide all'avvio del client, ad esempio il profilo richiesto deve essere quello attivo.
 +
 +=== Profilo attivo ===
 +
 +Per elencare i profili disponibili e quello attivo per ciascuna scheda audio:
 +
 +<code bash>
 +pacmd list-cards
 +</code>
 +
 +<code>
 +3 card(s) available.
 +    index: 0
 +        name: <alsa_card.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00>
 +        ...
 +        profiles:
 +                input:analog-stereo: Analog Stereo Input (priority 65, available: unknown)
 +                ...
 +                output:analog-stereo: Analog Stereo Output (priority 6500, available: unknown)
 +                ...
 +                output:iec958-stereo: Digital Stereo (IEC958) Output (priority 5500, available: unknown)
 +                ...
 +        active profile: <output:iec958-stereo>
 +        ...
 +        ports:
 +                analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: unknown)
 +                ...
 +                analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
 +                ...
 +                iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
 +                ...
 +</code>
 +
 +Per cambiare il profilo attivo da riga di comando:
 +
 +<code bash>
 +pactl set-card-profile 'alsa_card.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00' 'output:analog-stereo'
 +</code>
 +
 +Per cambiare **system-wide** il profilo attivo di una scheda si può creare un file **/etc/pulse/default.pa.d/99-local.pa** (attenzione all'estensione che deve essere ''.pa''). Vedere la documentazione ''man 5 default.pa'' e ''man 5 pulse-cli-syntax''. Per impostare il profilo si indica:
 +
 +<file>
 +set-card-profile alsa_card.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00 output:analog-stereo
 +</file>
 +
 +Questa impostazione viene letta dal client PulseAudio al suo avvio.
 +
 +:!: **ATTENZIONE**: La modifica dell'//active profile// effettuata dall'utente in **user-space** **non è persistente** al reboot o al restart del client PulseAudio. Le impostazioni system-wide (es. ''/etc/pulse/default.pa.d/99-local.pa'') prevalgono.
 +
 +
 +=== Stato dei controlli ===
 +
 +Per vedere/cambiare lo stato di mute/unmute da riga di comando:
 +
 +<code>
 +pactl get-sink-mute 'alsa_output.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.iec958-stereo'
 +pactl set-sink-mute 'alsa_output.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.iec958-stereo' 0
 +</code>
 +
 +Per vedere/cambiare il volume da riga di comando:
 +
 +<code>
 +pactl get-sink-volume 'alsa_output.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.iec958-stereo'
 +pactl set-sink-volume 'alsa_output.usb-C-Media_Electronics_Inc._USB_Advanced_Audio_Device-00.iec958-stereo' 100% 100%
 +</code>
 +
 +  * **[[https://wiki.archlinux.org/title/PulseAudio/Examples|ArckWiki - PulseAudio Examples]]**
 +
 +===== 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.1571322966.txt.gz · Last modified: by niccolo