Translation(s): English - Français - Italiano - Русский
Advanced Linux Sound Architecture (ALSA) è un'infrastruttura software e una parte del kernel Linux che fornisce un'interfaccia di programmazione per applicazioni (API) per driver per device per schede audio.
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).
Contents
Pacchetti
libasound2 - Questo pacchetto contiene la libreria in spazio utente di ALSA e i suoi plugin standard, oltre ai file di configurazione richiesti.
libasound2-plugins - Questo pacchetto contiene plugin aggiuntivi per la libreria in spazio utente di ALSA, inclusi convertitori di rate e plugin per upmixing/downmixing. Quasi certamente si vorrà installare questo pacchetto in un ambiente in puro ALSA.
libasound2-doc - Questo pacchetto contiene la documentazione HTML per la libreria ALSA, che descrive l'API di sviluppo per le applicazioni in spazio utente che desiderano utilizzare ALSA.
alsa-utils - Una manciata di strumenti CLI per configurare e utilizzare ALSA in spazio utente. Vedere la descrizione del pacchetto per informazioni più specifiche.
alsa-oss - Wrapper ALSA per applicazioni OSS obsolete.
alsamixergui - Frontend con GUI per l'applicazione alsamixer.
apulse - Emulazione dell'API di PulseAudio per ALSA. Necessaria per eseguire Firefox e altre applicazioni che fanno uso direttamente di PulseAudio, se si utilizza una configurazione in puro ALSA.
alsa-firmware-loaders - Richiede la componente contrib di Debian per essere abilitata. Può aiutare a far funzionare qualche hardware audio specifico.
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.
Usare MIDI con ALSA
L'uso di dispositivi MIDI (Musical Instrument Digital Interface) virtuali o hardware con ALSA è descritto nella pagina AlsaMidi.
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".
Il microfono non funziona
Controllare in alsamixer:
che il microfono non sia muto;
- che il volume del microfono sia sufficientemente alto;
che sia attivata la cattura (capture) nei parametri relativi al microfono;
- se il boost del microfono ha un effetto.
$ arecord -vv -f dat /dev/null
assicurandosi che il terminale sia sufficientemente largo da vedere la barra orizzontale di simboli # che mostrano il volume rilevato (es. ridurre la dimensione dei caratteri con Ctrl +). Prima della barra di '#' si dovrebbero vedere molte righe che descrivono le attuali impostazioni di ALSA. Fare rumori forti vicino al microfono. In risposta ai suoni, la lunghezza della barra di # dovrebbe oscillare e il numero dovrebbe cambiare. Un'assenza di risposta conferma che è presente un problema relativo al microfono.
Distinguere se si tratti di un problema hardware del microfono o di un bug software testandolo con un'altra installazione, es. Debian in un LiveCD (computer desktop) o Mobian su una scheda SD (smartphone mainline-linux).
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
- Il proprio utente è nel gruppo "audio"? (Vedere la prima sezione "Risoluzione dei problemi")
- Usare alsamixer e controllare che i canali non siano impostati a muto ed alzare i loro livelli (provare anche a impostare come *muti* alcuni canali come s/pdif e commutare l'opzione per rilevare l'inserimento dello spinotto)
- È stato fermato arts o esound?
- Gli altoparlanti sono accesi? Sono connessi?
- "aplay /usr/share/sounds/alsa/Noise.wav" funziona per l'utente root? Testare il proprio audio con aplay e un file wav in modo che problemi riguardo ai codec non confondano la situazione
- Se l'audio non funziona dopo un riavvio del sistema, disabilitare kexec-tools
Ulteriori informazioni
Per maggiori informazioni guardare https://www.alsa-project.org and https://alsa.opensrc.org.