Semplificando, ALSA può essere diviso in due componenti: l'API del kernel che fornisce l'accesso alla scheda audio dell'utente per applicazioni e server sonori di più alto livello, e una libreria in spazio utente che fornisce funzioni più generiche (come effetti, mixer, instradamento, ecc.).

Non è possibile "rimpiazzare" ALSA per ciò che riguarda l'API del kernel. In passato esisteva anche OSS (Open Sound System), ma è deprecato da quasi 20 anni. Le cose sono diverse per la libreria in spazio utente di ALSA che può essere sostituita.

Un server sonoro si posiziona tra ALSA e le applicazioni dell'utente. Solitamente sarà PulseAudio (per un audio facile e automatico), JACK (per audio a bassa latenza di levello professionale) o PipeWire (per tutti i casi d'uso, ma è ancora sperimentale). Un server sonoro non è necessario dato che le applicazioni possono inviare l'output audio direttamente ad ALSA, ma alcune applicazioni fanno uso dell'API di un server sonoro e necessitano che sia disponibile per poter produrre suono. Come esempio più tristemente noto Firefox non supporta ALSA direttamente e usa invece l'API PulseAudio, forzando l'uso anche di PulseAudio (o un livello di compatibilità).

PulseAudio, in modo predefinito, prende il controllo di tutti i device ALSA e ridirige tutti i flussi audio a sé stesso. PipeWire, se configurato per farlo, usa un piccolo sottoinsieme delle funzionalità centrali di ALSA nell'API del kernel per accedere alla scheda audio e gestisce tutte le altre funzionalità da sé stesso (rimpiazzando completamente la libreria in spazio utente di ALSA).

Il resto di questo articolo presume che non si stia usando un server audio intermedio e che si stia usando esclusivamente ALSA. Al giorno d'oggi questo è estremamente raro, sebbene possa ancora essere interessante per alcuni. Se si è un utente finale comune, probabilmente si sarà più interessati alla pagina del server sonoro che si sta usando (probabilmente PulseAudio).

Pacchetti

Caricare moduli

ALSA dovrebbe "semplicemente funzionare", con udev che identifica l'hardware e carica il driver appropriato ogni volta che il sistema viene avviato e il device audio è connesso, rendendo l'audio immediatamente funzionante e configurabile attraverso utilità come alsamixer.

A volte è necessario che gli utenti inizializzino prima ALSA manualmente, per far funzionare il proprio audio:

$ sudo alsactl init

Testare

Si può testare l'output audio usando qualsiasi riproduttore e file audio. Un modo tradizionale sarebbe usare aplay che fortunatamente è disponibile nel pacchetto alsa-utils, tuttavia gestisce solamente file WAV non compressi. Probabilmente si vorrà invece usare qualcosa come mpv, che dovrebbe gestire qualsiasi cosa e può comunque essere eseguito senza schermo.

C'è anche un file di rumore bianco generico incluso con ALSA, se non interessa testare la fedeltà o l'accuratezza dell'audio (come la musica) con cui si ha familiarità e si vuole solamente essere sicuri che l'output funzioni. Lo si può riprodurre con:

$ aplay /usr/share/sounds/alsa/Noise.wav

ALSA ha un'implementazione MIDI nel caso si abbiano porte MIDI hardware. Si può usare aplaymidi per riprodurre l'input da una qualunque di queste porte.

Configurazione

I file di configurazione di ALSA possono essere trovati nella directory /etc/alsa/conf.d/. Molti file vi sono già inclusi in modo predefinito. Funzionalità avanzate come il missaggio dovrebbero essere già configurate con valori predefiniti ragionevoli. Se si desidera fare cambiamenti, aggiungervi un nuovo file.

Risoluzione dei problemi

Nessun output audio

Se non si riesce ad ottenere alcun output audio, assicurarsi che il proprio utente sia nel gruppo "audio", poi rifare il login. Si può aggiungere il proprio utente al gruppo eseguendo:

$ sudo adduser nomeutente audio

Sostituendo il proprio nome utente effettivo a "nomeutente".

Scheda audio sbagliata usata in modo predefinito

Per vedere quali indici sono stati assegnati alle schede, eseguire:

$ cat /proc/asound/cards

Alla prima scheda trovata da ALSA viene solitamente dato l'indice 0 e perciò è solitamente quella "predefinita". Se si è sfortunati, la prima scheda audio trovata non è quella adatta a riprodurre i suoni di sistema.

Ci sono due modi di risolvere questo problema.

1. Forzare le schede a caricarsi in un ordine diverso, ad esempio aggiungere quanto segue al mio file /etc/modprobe.d/sound:

  options snd-trident index=0
  options snd-usb-audio index=1

Questo forza la scheda Trident come predefinita (scheda 0) ed il microfono USB come scheda 1.

Nel caso entrambi gli output siano gestiti dallo stesso modulo (es. output HDMI e audio on-board) usare invece:

  options snd_hda_intel index=1,0

2. Cambiare la scheda predefinita modificando il file /etc/asound.conf o ~/.asoundrc. Ulteriori informazioni su questo argomento sono nella pagina Schede multiple di Alsa.

Nessun audio dopo il riavvio

Il reboot bypassa il BIOS e il menu di GRUB? Potrebbe essere causato da kexec-tools che permette appunto di bypassare il BIOS durante il reboot e impedire la corretta inizializzazione dei vari device. Modificare il file /etc/default/kexec come utente root e aggiornare la variabile LOAD_KEXEC a:

LOAD_KEXEC=false

Questa operazione permetterà al BIOS di inizializzare correttamente l'audio e gli altri device ad ogni riavvio.

Lista di controllo

Ulteriori informazioni

Per maggiori informazioni guardare https://www.alsa-project.org and https://alsa.opensrc.org.

Vedere anche: AlsaMidi.


CategorySound CategoryHardware