Přeskočit na obsah

Advanced Linux Sound Architecture

Z Wikiverzity

Advanced Linux Sound Architecture (zkratka ALSA) je Linuxový podsystém, zahrnující ovladače, knihovny a další nástroje pro práci s audio zařízeními (zvukové karty). V nové řadě 2.6 nahrazuje zastaralý Open Sound System, s nímž je víceméně zpětně kompatibilní. Je určený především k záznamu zvuku.

Nejen zvuk

[editovat]

Zvuk, jakožto chvění vzduchu, ovšem musí být nejdříve (obvykle pomocí mikrofonu) převeden na elektrický signál, který teprve může být počítačem (resp. zvukovou kartou či jiným elektronickým zařízením) zpracován. Přesněji řečeno, celý zvukový systém počítače je zařízený na zpracování signálu, jehož frekvenční spektrum leží v oblasti zvukových kmitočtů, tj. zpravidla 20 Hz až 20 kHz i více. Tím pádem může být celý tento zvukový systém počítače využitý nejen ke zpracování různých zvuků, ale i různých dalších signálů, které se do daného frekvenčního pásma vejdou.

O zvukových kartách by mělo být pojednáno na jiném místě. Pokud používáme operační systém Microsoft Windows, musíme hledat potřebné znalosti jinde. Zde se zaměříme na využití zvukového systému v počítači, na kterém běží Linux.

Instalace

[editovat]

Aby mohly nejrůznější aplikace zvukovou kartu (resp. zvukový systém na některém čipu základní desky) využívat, musí být zvuková karta do systému řádně nainstalována. Linux k ní může přistupovat různými způsoby: jedním z nich je systém OSS, který je však v současné době již poněkud zastaralý. Preferovaným zvukovým systémem je právě ALSA.

Debian

[editovat]

V distribuci Debian nainstalujeme balík alsa-base (nachází se v sekci /sound/main). (Aptitude nám přitom automaticky zajistí, aby byly nainstalovány balíky alsa-utils, linux-sound-base, pc-utils a případně ještě několik dalších.)

alsaconf

[editovat]

alsaconf je debianí utilita pro konfiguraci alsa. Stačí (jako root) spustit:

 alsaconf

která se pokusí detekovat všechny zvukové karty na počítači. Najde dejme tomu

 intel8x0 nVidia Corporation CK804 AC'97 Audio Controller (rev a2)

Typický průběh potom je:

Unloading ALSA sound driver modules: snd-intel8x0 snd-ac97-codec snd-ac97-bus snd-pcm-oss snd-mixer-oss snd-pcm snd-timer snd-page-alloc.
Building card database...

Running update-modules...
Loading driver...
Setting default volumes...

===================================================

 Now ALSA is ready to use.
 For adjustment of volumes, use your favorite mixer.

 Have a lot of fun!

Problémy

[editovat]

Může se stát, že přehrávač nepřehrává a na konzoli se začnou valit hlášky typu:

ALSA lib confmisc.c:670:(snd_func_card_driver) cannot find card '0'
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_card_driver returned error: Takové zařízení neexistuje
ALSA lib confmisc.c:391:(snd_func_concat) error evaluating strings
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_concat returned error: Takové zařízení neexistuje
ALSA lib confmisc.c:1070:(snd_func_refer) error evaluating name
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_refer returned error: Takové zařízení neexistuje
ALSA lib conf.c:3968:(snd_config_expand) Evaluate error: Takové zařízení neexistuje
ALSA lib pcm.c:2143:(snd_pcm_open_noupdate) Unknown PCM default
snd_pcm_open: Takové zařízení neexistuje (default)
Failed to initialize plugin!
Failed to register plugin: /usr/lib/alsaplayer/output/libalsa_out.so
Failed to load output plugin "alsa". Trying defaults.
ALSA lib confmisc.c:670:(snd_func_card_driver) cannot find card '0'
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_card_driver returned error: Takové zařízení neexistuje
ALSA lib confmisc.c:391:(snd_func_concat) error evaluating strings
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_concat returned error: Takové zařízení neexistuje
ALSA lib confmisc.c:1070:(snd_func_refer) error evaluating name
ALSA lib conf.c:3500:(_snd_config_evaluate) function snd_func_refer returned error: Takové zařízení neexistuje
ALSA lib conf.c:3968:(snd_config_expand) Evaluate error: Takové zařízení neexistuje
ALSA lib pcm.c:2143:(snd_pcm_open_noupdate) Unknown PCM default
snd_pcm_open: Takové zařízení neexistuje (default)
Failed to initialize plugin!
/usr/lib/alsaplayer/output/libalsa_out.so failed to load
NOTE: THIS IS THE NULL PLUGIN.      YOU WILL NOT HEAR SOUND!!

Co teď?


Zkusíme na to jít po pořádku.

Balík alsa-utils

[editovat]

Obsahuje utility:

  • alsamixer
  • amidi
  • amixer
  • aplay
  • iecset
  • aconnect
  • aplaymidi
  • arecordmidi
  • aseqdump
  • aseqnet
  • speaker-test
  • asoundconf

V README se uvádí:

  • alsaconf- the ALSA driver configurator script
  • alsactl - an utility for soundcard settings management
  • aplay - an utility for the playback / capture of .wav,.voc,.au files
  • arecord - an utility for the capture of .wav,.voc,.au files
  • amixer - a command line mixer
  • alsamixer - a ncurses mixer
  • amidi - a utility to send/receive sysex dumps or other MIDI data
  • iecset - a utility to show/set the IEC958 status bits

Testování zvukové karty

[editovat]

Viz: SoundcardTesting

Takže se přesuneme do nějakého adresáře, kde máme nějaký zvukový soubor, dejme tomu nahravka.wav, a spustíme z příkazového řádku

aplay nahravka.wav

... a dostaneme ty samé chybové hlášky. Teď to samé zkusíme jako uživatel root. A ejhle, je možné, že nahrávka se ozve! Je to tím, že jako obyčejný uživatel nemáme oprávnění k používání audio zařízení. Stačí se přidat do skupiny audio:

 usermod -a -G audio mujlogin


Alsa moduly

[editovat]

Ověříme, jestli máme v jádře instalované všechny pořebné Alsa moduly:

# modprobe -n -v snd-ens1371
insmod /lib/modules/2.6.18-5-amd64/kernel/sound/core/seq/snd-seq-device.ko 
install /sbin/modprobe --ignore-install snd-rawmidi && { /sbin/modprobe --quiet snd-seq-midi ; : ; }
insmod /lib/modules/2.6.18-5-amd64/kernel/drivers/input/gameport/gameport.ko 
install /sbin/modprobe --ignore-install snd-ens1371  && /lib/alsa/modprobe-post-install snd-ens1371

# modprobe -n -v snd-pcm-oss

# modprobe -n -v snd-mixer-oss

# modprobe -n -v snd-seq-oss
insmod /lib/modules/2.6.18-5-amd64/kernel/sound/core/seq/snd-seq-device.ko 
install /sbin/modprobe --ignore-install snd-seq && { /sbin/modprobe --quiet snd-seq-midi ; /sbin/modprobe --quiet snd-seq-oss ; : ; }
insmod /lib/modules/2.6.18-5-amd64/kernel/sound/core/seq/snd-seq-midi-event.ko 
insmod /lib/modules/2.6.18-5-amd64/kernel/sound/core/seq/oss/snd-seq-oss.ko 

Z toho je vidět, že moduly snd-pcm-oss a snd-mixer-oss už instalované jsou (instalovaly by se, nevýt přepínače -n), zatímco moduly snd-ens1371 a snd-seq-oss instalované nejsou. Proč nejsou?


dpkg-reconfigure linux-sound-base

- odpovíme ALSA



Odkazy na Wikipedii

[editovat]

Externí odkazy

[editovat]