ALSA (Italiano)

From ArchWiki

Jump to: navigation, search
i18n
English
Español
Deutsch
Italiano
Nederlands
Русский
Slovensky
Česky
中文(简体)
עברית
Рolski
Português do Brasil
ไทย

Contents

Introduzione

Advanced Linux Sound Architecture (ALSA) è un componente del kernel Linux progettato per fornire i driver di schede audio.

Guardare OSS per vedere le possibili alternative.

Questo documento spiega come utilizzare ALSA con il kernel 2.6. Guardare anche come permettere ai programmi di riprodurre il suono immediatamente.

Installazione

Driver del kernel

Alsa è stato incluso nei kernel 2.6 e in tutti i pacchetti kernel26* di archlinux. Se avete un kernel personalizzato, non dimenticate di abilitare il corretto driver di alsa.

Tutti i moduli necessari dovrebbero essere rilevati e caricati automaticamente da udev. Non deve essere fatta nessuna configurazione speciale a meno che usiate schede ISA. Non usate mai alsaconf se avete una scheda audio PCI o ISAPNP, perchè alsaconf la aggiunge nel file modprobe.conf e ciò potrebbe causare problemi con l'autorilevamento di udev.

Utility

  • Richiesto per i programmi e la gestione nativa di alsa
# pacman -Sy alsa-lib alsa-utils
  • Raccomandato se volete usare applicazioni con il supporto audio OSS in combinazione con dmix
# pacman -S alsa-oss

Tutti i programmi di alsa avranno molto probabilmente alsa-lib come dipendenza.

Configurazione

Assicurarsi che il modulo snd_pcsp sia caricato per ultimo

Di default, il kernel viene fornito con il modulo snd_pcsp. Nella maggioranza dei casi questo modulo viene caricato prima del modulo della vostra scheda, e ciò può creare dei problemi. snd_pcsp è in pratica il modulo che gestisce lo speaker della scheda madre.

Per far si che snd_pcsp sia caricato per ultimo, aggiungete il codice seguente al file

/etc/modprobe.conf

options snd-pcsp index=2

Oppure se preferite, potete anche non caricare del tutto questo modulo aggiungendo questo al vostro

/etc/rc.conf

MODULES=(... !snd_pcsp)
Note: Sarà necessario scaricare tutti i moduli relativi al sonoro per poi ricaricarli, per far si che la modifica abbia effetto. O più semplicemente, basterà un riavvio del sistema.

Assicurarsi che i moduli audio siano caricati

Potete verificare che udev abbia rilevato automaticamente il vostro audio, compreso i moduli di compatibilità di OSS, con il comando

$ lsmod|grep '^snd'
snd_usb_audio          69696  0 
snd_usb_lib            13504  1 snd_usb_audio
snd_rawmidi            20064  1 snd_usb_lib
snd_hwdep               7044  1 snd_usb_audio
snd_seq_oss            29412  0 
snd_seq_midi_event      6080  1 snd_seq_oss
snd_seq                46220  4 snd_seq_oss,snd_seq_midi_event
snd_seq_device          6796  3 snd_rawmidi,snd_seq_oss,snd_seq
snd_pcm_oss            45216  0 
snd_mixer_oss          15232  1 snd_pcm_oss
snd_intel8x0           27932  0 
snd_ac97_codec         87648  1 snd_intel8x0
snd_ac97_bus            1792  1 snd_ac97_codec
snd_pcm                76296  4 snd_usb_audio,snd_pcm_oss,snd_intel8x0,snd_ac97_codec
snd_timer              19780  2 snd_seq,snd_pcm
snd                    43776  12 snd_usb_audio,snd_rawmidi,snd_hwdep,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer
snd_page_alloc          7944  2 snd_intel8x0,snd_pcm

Se l'output è simile, i vostri driver audio sono stati autorilevati con successo (nota che in questo caso, snd_intel8x0 e snd_usb_audio sono i driver per le periferiche hardware). Potreste anche voler controllare la directory /dev/snd per i giusti file del dispositivo:

$ ls -l /dev/snd/
total 0
crw-rw----  1 root audio 116,  0 Apr  8 14:17 controlC0
crw-rw----  1 root audio 116, 32 Apr  8 14:17 controlC1
crw-rw----  1 root audio 116, 24 Apr  8 14:17 pcmC0D0c
crw-rw----  1 root audio 116, 16 Apr  8 14:17 pcmC0D0p
crw-rw----  1 root audio 116, 25 Apr  8 14:17 pcmC0D1c
crw-rw----  1 root audio 116, 56 Apr  8 14:17 pcmC1D0c
crw-rw----  1 root audio 116, 48 Apr  8 14:17 pcmC1D0p
crw-rw----  1 root audio 116,  1 Apr  8 14:17 seq
crw-rw----  1 root audio 116, 33 Apr  8 14:17 timer

Se avete almeno i dispositivi controlC0 e pcmC0D0p o simili, allora i vostri moduli audio sono stati rilevati e caricati correttamente.


Se non è questo il caso, i vostri moduli audio non sono stati rilevati correttamente. Se volete qualche aiuto su IRC o sui forum, per favore postate l'output dei comandi di sopra. Per risolvere questo, potete provare caricando i moduli manualmente:

 # modprobe snd-NAME-OF-MODULE
 # modprobe snd-pcm-oss
  • Controllare i file del dispositivo in /dev/snd (vedi sopra) e/o provare se alsamixer o amixer hanno una ragionevole uscita.
  • Aggiungere snd-NOME-DEL-MODULO e snd-pcm-oss alla lista dei MODULI in /etc/rc.conf per assicurarsi che essi siano caricati la prossima volta (assicuratevi che snd-NOME-DEL-MODULO stia prima di snd-pcm-oss).

Attivare i canali e testare la scheda audio

In questa sezione, supponiamo che siate loggati come root. Se volete compiere questi passi come un utente non privilegiato, dovete prima passare alla prossima sezione Setup dei permessi.

  • Attiva scheda audio

L'attuale versione di ALSA imposta tutti i canali disattivati di default, anche se l'installazione è eseguita con successo e tutti i dispositivi sono impostati correttamente voi non sentirete suoni. Bisognerà attivare i canali manualmente. E' consigliato l'uso di 'alsamixer' per farlo. Da alsamixer, l'etichetta "MM" prima di un canale indica che quel canale è disabilitato, e "00" indica che è attivo. Premi il tasto 'm' per passare da MM/00. Usa i tasti freccia sinistra e freccia destra per muoverti nei canali e i tasti freccia sopra e freccia sotto per impostare il volume.

NOTA: Quando usate amixer, assicuratevi di attivare i canali, e alzate i volumi ad uno specifico livello in percentuale, il che significa che dovrete usare il simbolo "%". Questo vuol dire che amixer è in grado di comprendere solo valori in percentuale, e non numerici. Infatti, specificando un valore come 90, amixer lo assumerà come 100%, rischiando così di danneggiare i vostri altoparlanti.

 # amixer set Master 90% unmute
 # amixer set PCM 85% unmute
  • Prova a far partire un file WAV
 # aplay /usr/share/sounds/alsa/Front_Center.wav

NOTE: Alcune schede (come, la Soundblaster Audigy LS) deve avere l'output digitale disabilitato per riprodurre qualsiasi suono.

If you cannot hear anything, double check your mixer settings, being sure to unmute PCM, MASTER (and some machines such as the IBM Thinkpad have an additional 'SPEAKER' channel) and try the alsaconf utility as root:

# alsaconf

Setup dei permessi

Per poter usare la scheda audio come utente normale, seguite questi passi:

  • Aggiungere il vostro utente al gruppo audio:
# gpasswd -a USERNAME audio
  • Terminare la sessione e rifare il login per essere sicuri che il gruppo audio sia caricato.

Ripristina le impostazioni di Alsa Mixer all'avvio

  • Avviare 'alsactl' una volta per creare '/etc/asound.state'
alsactl store
  • Editare '/etc/rc.conf' e aggiungere 'alsa' alla lista dei demoni da far partire all'avvio. Questo salverà le regolazioni del mixer a ogni arresto del sistema e le ripristinerà all'avvio.
  • If the mixer settings are not loaded on boot-up, add the following line to '/etc/rc.local'
alsactl restore

Ottenere un output SPDIF

(da gralves dai forum di Gentoo)

  • Nel Controllo Volume di GNOME, sotto il tab delle opzioni, cambiate IEC958 in PCM. Questa opzione può essere abilitata nelle preferenze.
  • Se non avete installato il Controllo Volume di GNOME,
    • Editate /etc/asound.state. Questo file è dove alsasound salva le regolazioni del tuo mixer.
    • Trovate una riga che dice: 'IEC958 Playback Switch'. Vicino ad essa troverete una riga che dice value:false. Cambiatela in value:true.
    • Adesso trovate questa riga: 'IEC958 Playback AC97-SPSA'. Cambiate il suo valore in 0.
    • Riavviate alsa.

Un modo alternativo per abilitare un output SPDIF automaticamente al login (testato su una SoundBlaster Audigy):

  • aggiungere le seguenti righe in /etc/rc.local:
 # Use COAX-digital output
 amixer set 'IEC958 Optical' 100 unmute
 amixer set 'Audigy Analog/Digital Output Jack' on

Potete vedere il nome dell'uscita digitale della vostra scheda con:

 amixer scontrols

Impostazioni KDE

  • Avvia KDE:
# startx
  • Regolate i volumi come li preferite per questo utente (ogni utente ha le proprie regolazioni):
# alsamixer

Esci e rientra come utente xyz per far funzionare il suono (io ho dovuto terminare X, uscire e rientrare come user xyz, quindi far partire X e aprire firefox e l'audio ha funzionato su youtube)

  • KDE 3.3 Andare al Menu K > Multimedia > KMix
    • Impostazioni > Configura KMix...
    • Leva la spunta all'opzione "Ripristina i volumi al prossimo riavvio"
    • Premere OK, dovrebbe essere tutto a posto. Ora i volumi saranno identici sia dalla linea di comando sia all'interno di KDE.

Equalizzatore di sistema (per tutti gli utenti)

Note: Questo metodo richiede l'utilizzo del plugin ladspa che può comportare un utilizzo un po' più alto della CPU quando si esegue un suono. Inoltre, questo metodo è pensato per l'utilizzo di un suono stereofonico (ad esempio, ottimizzato per un ascolto tramite cuffie)
  • sarà necessario, oltre alle utility precedentemente menzionate, anche il pacchetto alsa-plugins
pacman -S alsa-plugins
  • installate i pacchetti ladspa e swh-plugins se già non li avete
pacman -S ladspa swh-plugins
  • se non lo avete ancora fatto, sarà necessario avere uno dei file fra ~/.asoundrc oppure /etc/asound.conf, dunque create uno dei due
nano ~/.asoundrc
  • inserite le righe seguenti nel vostro file di configurazione di ALSA (~/.asoundrc oppure /etc/asound.conf)
pcm.eq {
 type ladspa
 # The output from the EQ can either go direct to a hardware device
 # (if you have a hardware mixer, e.g. SBLive/Audigy) or it can go
 # to the software mixer shown here.
 #slave.pcm "plughw:0,0"
 slave.pcm "plug:dmix"
# Sometimes you may need to specify the path to the plugins, # especially if you've just installed them. Once you've logged # out/restarted this shouldn't be necessary, but if you get errors # about being unable to find plugins, try uncommenting this. #path "/usr/lib/ladspa"
plugins [ { label mbeq id 1197 input { #this setting is here by example, edit to your own taste #bands: 50hz, 100hz, 156hz, 220hz, 311hz, 440hz, 622hz, 880hz, 1250hz, 1750hz, 25000hz, #50000hz, 10000hz, 20000hz controls [ -5 -5 -5 -5 -5 -10 -20 -15 -10 -10 -10 -10 -10 -3 -2 ] } } ] } # Redirect the default device to go via the EQ - you may want to do # this last, once you're sure everything is working. Otherwise all # your audio programs will break/crash if something has gone wrong.
pcm.!default { type plug slave.pcm "eq" }
# Redirect the OSS emulation through the EQ too (when programs are running through "aoss")
pcm.dsp0 { type plug slave.pcm "eq" }
  • ricaricate le impostazioni di alsa (da utente root)
/etc/rc.d/alsa restart
  • ora tutto dovrebbe essere sistemato

Soluzione dei problemi

L'audio continua a non funzionare?

Ricorda, ALSA viene installato con tutti i canali disabilitati di default (guarda la sezione precendete, attivare la scheda audio). Comunque, se sei sicuro che tutto è attivo, che i tuoi driver sono installati correttamente, e che il volume è giusto, ma non senti ancora nessun suono, prova ad aggiungere le seguenti linee di codice in /etc/modprobe.conf che dovrebbero risolvere il problema:

options snd-NAME-OF-MODULE ac97_quirk=0

La sopracitata correzione funziona con via82xx

options snd-NAME-OF-MODULE ac97_quirk=1

La sopracitata correzione funziona con snd_intel8x0

Nessun suono con Onboard Intel Sound Card

Ci potrebbe essere un conflitto tra due moduli caricati, chiamati snd_intel8x0 e snd_intel8x0m. In questo caso, modifica rc.conf e nell'array MODULES metti in blacklist l'ultimo in modo tale da avere !snd_intel8x0m.

La qualità dell'audio è bassa?

Se hai una bassa qualità d'audio, prova ad impostare il volume di PCM (in alsamixer) ad un livello di gain 0.

Rumore di scarica quando inizi e finisci di riprodurre un suono?

Alcuni moduli posso spegnere la scheda audio quando questa non è utilizzata. Questo può creare un rumore quando spegne la scheda audio. Se questo non ti piace prova "modinfo snd-MY-MODULE", e cerca un'opzione dei moduli che modifica o disabilita questa caratteristica.

per esempio: per disabilitare il risparmio energetico utilizzando snd-hda-intel aggiungi "options snd-hda-intel power_save=0" in /etc/modprobe.conf o prova con "modprobe snd-hda-intel power_save=0"

Alsamixer non si avvia

Se avvii alsamixer, non funziona e ricevi il seguente errore:

alsamixer: function snd_ctl_open failed for default: No such device

Reinstalla il kernel. Esegui 'pacman -S kernel26' o qualsiasi il patchset che preferisci usare.

Link esterni

Altre informazioni possono essere trovate ai seguenti link:

Personal tools