ALSA - dźwięk w Linuksie
ALSA - dźwięk w Linuksie
Opiszę tutaj jak zainstalować i skonfigurować sterowniki do karty dźwiękowej. Są z tym problemy więc myślę, że to się komuś przyda.
Krótki wstęp
Dla systemu Debian dostępne są dwa rodzaje sterowników kart dźwiękowych. Są to OSS (Open Sound System) oraz ALSA (Advanced Linux Sound Architecture). Tutaj skupię się tylko i wyłącznie na ALSA. Dlaczego? Cóż, OSS jest tak zabytkowe jak windows 95
ALSA po prostu wspiera więcej kart, ma większe możliwości i działa stabilniej.
Dla systemu Debian dostępne są dwa rodzaje sterowników kart dźwiękowych. Są to OSS (Open Sound System) oraz ALSA (Advanced Linux Sound Architecture). Tutaj skupię się tylko i wyłącznie na ALSA. Dlaczego? Cóż, OSS jest tak zabytkowe jak windows 95

Instalacja ALSA
Przed instalacją upewnij się, że jesteś w grupie audio. Jeżeli nie jesteś w tejże grupie to, jako root, wpisz:
Jeżeli używasz jądra 2.6, to wszystkie niezbędne moduły są już dołączone, jeżeli jednak posiadasz jądro z serii 2.4 to takowe moduły musisz do instalować.
Jeżeli posiadasz kernel z serii 2.4 to wpisujesz:
Jeżeli posiadasz kernel z serii 2.6 to wystarczy:
Przed instalacją upewnij się, że jesteś w grupie audio. Jeżeli nie jesteś w tejże grupie to, jako root, wpisz:
Kod: Zaznacz cały
adduser nazwa_użytkownika audio
Jeżeli posiadasz kernel z serii 2.4 to wpisujesz:
Kod: Zaznacz cały
aptitude install alsa-modules-`uname -r`
Kod: Zaznacz cały
aptitude install alsa-base alsa-utils
Konfiguracja ALSA
Teraz po zainstalowaniu ALSA wydajemy jako root:
Program ten dokona próby automatycznego wykrycia karty dźwiękowej, jaka jest w Twoim komputerze. Jeżeli proces ten nie powiedzie się, to będziesz miał możliwość ręcznego dokonania konfiguracji i wybrania odpowiedniego modelu karty z listy obsługiwanych kart.
Jeżeli wszystko się powiodło, to należy teraz w Twoim środowisku skonfigurować serwer dźwięku tak aby korzystał ze sterowników ALSA. W KDE to jest:
Menu KDE -> Centrum sterowania -> Dźwięk i Multimedia -> System dźwiękowy
W GNOME bodajże jest to w System -> Ustawienia multimediów
We wszystkich programach używających dźwięku zmieniamy wtyczkę wyjściową na ALSA lub na serwer dźwięku z którego będziemy mieli zamiar korzystać.
Teraz restartujemy komputer.
Po restarcie uruchamiamy jako zwykły użytkownik alsamixer. W alsamixer włączamy (klawisz M) i zwiększamy poziom natężenia dźwięku następujących kanałów: Master, PCM, Line, CD, Aux.
I to już wszystko. Jeżeli zrobiłeś wszystko dokładnie jak opisałem to powinien Ci dobrze działać dźwięk.
Teraz po zainstalowaniu ALSA wydajemy jako root:
Kod: Zaznacz cały
alsaconf
Jeżeli wszystko się powiodło, to należy teraz w Twoim środowisku skonfigurować serwer dźwięku tak aby korzystał ze sterowników ALSA. W KDE to jest:
Menu KDE -> Centrum sterowania -> Dźwięk i Multimedia -> System dźwiękowy
W GNOME bodajże jest to w System -> Ustawienia multimediów
We wszystkich programach używających dźwięku zmieniamy wtyczkę wyjściową na ALSA lub na serwer dźwięku z którego będziemy mieli zamiar korzystać.
Teraz restartujemy komputer.
Po restarcie uruchamiamy jako zwykły użytkownik alsamixer. W alsamixer włączamy (klawisz M) i zwiększamy poziom natężenia dźwięku następujących kanałów: Master, PCM, Line, CD, Aux.
I to już wszystko. Jeżeli zrobiłeś wszystko dokładnie jak opisałem to powinien Ci dobrze działać dźwięk.
Serwer dźwięku
Cóż to jest serwer dźwięku? Zacytuję tekst z http://linux-muzyka.ixion.pl :
"Serwery dźwięku to procesy (demony) działające w tle, odpowiedzialne za wzajemną komunikację programów audio i obsługę kart muzycznych zainstalowanych w komputerze. Obecnie stosuje się co najmniej kilka serwerów dźwięku o zróżnicowanym przeznaczeniu. Najpopularniejsze z nich to:
aRts - działający w środowisku KDE,
ESD - dla środowiska GNOME,
JACK - dla zastosowań profesjonalnych.
Wybierając serwer dźwięku powinniśmy zwrócić uwagę na jego przeznaczenie. Jeżeli zamierzamy jedynie odtwarzać pliki dźwiękowe i prezentacje multimedialne oraz korzystać z gier, to najlepszym wyborem będzie prosty w konfiguracji i niewidoczny dla użytkownika serwer ESD lub aRts. Dla osób wykorzystujących Linuksa do profesjonalnej pracy z dźwiękiem niezmiernie ważna jest z kolei niska latencja, pełny dupleks oraz możliwość pracy w trybie 32-bitowym - wszystkie te funkcje posiada serwer JACK. Pozostałe dostępne serwery pozwalają na prosty transfer dźwięku poprzez sieci (NAS), korzystanie z wielu kart jednocześnie i inne zaawansowane sposoby pracy z materiałem audio."
Tyle teorii
Ja powiem, że używam aRts ponieważ korzystam z KDE. Gdybym wyłączył serwer dźwięku to nie miałbym tych dźwięków które są w KDE. Gdy na przykład zminimalizuje okno to odtwarza się jakiś dźwięk, itd. Gdyby nie serwer dźwięku to by tego nie było. Tak samo w GNOME. Choć muszę przyznać, że aRts jest lepszy od ESD (w ESD dźwięk ma słabą jakość). Można oczywiście skorzystać jeszcze z JACK ale wątpię żeby ktoś z nas potrzebował by tak zaawansowaną rzecz, ale zdarzają się i takie osoby.
Cóż to jest serwer dźwięku? Zacytuję tekst z http://linux-muzyka.ixion.pl :
"Serwery dźwięku to procesy (demony) działające w tle, odpowiedzialne za wzajemną komunikację programów audio i obsługę kart muzycznych zainstalowanych w komputerze. Obecnie stosuje się co najmniej kilka serwerów dźwięku o zróżnicowanym przeznaczeniu. Najpopularniejsze z nich to:
aRts - działający w środowisku KDE,
ESD - dla środowiska GNOME,
JACK - dla zastosowań profesjonalnych.
Wybierając serwer dźwięku powinniśmy zwrócić uwagę na jego przeznaczenie. Jeżeli zamierzamy jedynie odtwarzać pliki dźwiękowe i prezentacje multimedialne oraz korzystać z gier, to najlepszym wyborem będzie prosty w konfiguracji i niewidoczny dla użytkownika serwer ESD lub aRts. Dla osób wykorzystujących Linuksa do profesjonalnej pracy z dźwiękiem niezmiernie ważna jest z kolei niska latencja, pełny dupleks oraz możliwość pracy w trybie 32-bitowym - wszystkie te funkcje posiada serwer JACK. Pozostałe dostępne serwery pozwalają na prosty transfer dźwięku poprzez sieci (NAS), korzystanie z wielu kart jednocześnie i inne zaawansowane sposoby pracy z materiałem audio."
Tyle teorii

Miksowanie dźwięku - dmix i asoundrc
Sama konfiguracja ALSA pewnie nikomu nie sprawiła kłopotu, ale problemy mogą się zacząć gdy nie możemy odtwarzać dźwięków z kilku źródeł na raz.
Pierwszą rzeczą jaką powinniśmy zrobić to, sprawdzenie, czy nasza karta dźwiękowa obsługuje sprzętowe miksowanie. Jak to sprawdzić? Uruchom np. serwer dźwięku aRts, i program xmms, i jeszcze totem, i kadu (możesz oczywiście uruchomić inne programy - ja daje tylko przykład). Jeżeli dźwięk w każdym z tych programów będzie odtwarzany równocześnie, to oznacza to, że Twoja karta dźwiękowa obsługuje sprzętowe miksowanie, lub Twój administrator już skonfigurował Ci poprawnie dźwięk. Jeżeli nie będzie wszędzie słychać dźwięku to zapewne twoja karta nie obsługuje sprzętowego miksowania lub źle skonfigurowałeś programy.
Karty, które nie obsługują sprzętowego miksowania to najczęściej stare zintegrowane karty. Chociaż ostatnie karty, nawet te zintegrowane, mają już wsparcie dla sprzętowego miksowania.
1) Zakładając jednak, że karta obsługuje sprzętowe miksowanie, ale gdy na przykład słuchamy muzyki to nie słyszymy dźwięku oglądając jakiś film w internecie. Dlaczego? Otóż firefox jak i wiele innych przeglądarek używa OSS (/dev/dsp). Niestety OSS nie jest automatycznie miksowane - musimy to sami zrobić. Najpierw instalujemy odpowiedni pakiet:
Po tym tworzymy w katalogu domowym plik asoundrc:
Teraz otwieramy ten plik. Następnie dodajemy do niego podany niżej wpis:
Teraz należy załadować odpowiednie moduły (jako root):
Teraz powinno być wszystko ok. Jeżeli wszystko teraz działa to ustawiamy tak aby odpowiedni moduł był automatycznie ładowany przy starcie systemu. Otwieramy, jako root, plik /etc/modules i dodajemy do niego:
2) Cóż jednak zrobimy jeśli nasza karta dźwiękowa nie obsługuje sprzętowego miksowania - nie możemy odtwarzać dźwięku równolegle w kilku programach. Wystarczy chwila zabawy z plikiem ~/.asoundrc. Najpierw instalujemy odpowiednie pakiety:
Po tym tworzymy w katalogu domowym plik .asoundrc:
Do tego pliku dodajemy:
Możemy zamiast tego wyżej wpisu dodać ten co podałem niżej:
Po tym nie będziemy słyszeć dźwięku z programu który używa OSS. Będziemy musieli wyłączyć serwer dźwięku i wszystkie programy które aktualnie odtwarzają dźwięki. Dopiero po tym można skorzystać z programy który używa OSS. Można jeszcze spróbować odpalić program w taki sposób:
i
ale nie gwarantuję, że to zadziała.
3) W obu przypadkach (kiedy karta obsługuje lub nie obsługuje sprzętowego miksowania) i kiedy używam serwera dźwięku esd, powinniśmy dodać poniższą linijkę do /etc/esound/esd.conf
Sama konfiguracja ALSA pewnie nikomu nie sprawiła kłopotu, ale problemy mogą się zacząć gdy nie możemy odtwarzać dźwięków z kilku źródeł na raz.
Pierwszą rzeczą jaką powinniśmy zrobić to, sprawdzenie, czy nasza karta dźwiękowa obsługuje sprzętowe miksowanie. Jak to sprawdzić? Uruchom np. serwer dźwięku aRts, i program xmms, i jeszcze totem, i kadu (możesz oczywiście uruchomić inne programy - ja daje tylko przykład). Jeżeli dźwięk w każdym z tych programów będzie odtwarzany równocześnie, to oznacza to, że Twoja karta dźwiękowa obsługuje sprzętowe miksowanie, lub Twój administrator już skonfigurował Ci poprawnie dźwięk. Jeżeli nie będzie wszędzie słychać dźwięku to zapewne twoja karta nie obsługuje sprzętowego miksowania lub źle skonfigurowałeś programy.
Karty, które nie obsługują sprzętowego miksowania to najczęściej stare zintegrowane karty. Chociaż ostatnie karty, nawet te zintegrowane, mają już wsparcie dla sprzętowego miksowania.
1) Zakładając jednak, że karta obsługuje sprzętowe miksowanie, ale gdy na przykład słuchamy muzyki to nie słyszymy dźwięku oglądając jakiś film w internecie. Dlaczego? Otóż firefox jak i wiele innych przeglądarek używa OSS (/dev/dsp). Niestety OSS nie jest automatycznie miksowane - musimy to sami zrobić. Najpierw instalujemy odpowiedni pakiet:
Kod: Zaznacz cały
aptitude install alsa-oss
Kod: Zaznacz cały
touch ~/.asoundrc
Kod: Zaznacz cały
pcm.dsp {
type plug
slave.pcm "hw:0"
}
Kod: Zaznacz cały
modprobe snd-pcm-oss
Teraz powinno być wszystko ok. Jeżeli wszystko teraz działa to ustawiamy tak aby odpowiedni moduł był automatycznie ładowany przy starcie systemu. Otwieramy, jako root, plik /etc/modules i dodajemy do niego:
Kod: Zaznacz cały
snd-pcm-oss
snd-mixer-oss
2) Cóż jednak zrobimy jeśli nasza karta dźwiękowa nie obsługuje sprzętowego miksowania - nie możemy odtwarzać dźwięku równolegle w kilku programach. Wystarczy chwila zabawy z plikiem ~/.asoundrc. Najpierw instalujemy odpowiednie pakiety:
Kod: Zaznacz cały
aptitude install mpg321
Kod: Zaznacz cały
touch ~/.asoundrc
pcm.card0 {
type hw
card 0
}
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.dmixer {
type dmix
ipc_key 1025
slave {
pcm "hw:0,0"
period_time 0
period_size 2048
buffer_size 32768
rate 44100
}
bindings {
0 0
1 1
}
}
Możemy zamiast tego wyżej wpisu dodać ten co podałem niżej:
Do /etc/mpd.conf dodajemy:pcm.!default {
type plug
slave.pcm "kombinace"
}
pcm.vystup {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
format S32_LE
period_time 0
period_size 1024
buffer_size 8192
rate 44100
}
}
pcm.dsp0 {
type plug
slave.pcm "vystup"
}
pcm.vstup {
type dsnoop
ipc_key 2048
slave {
pcm "hw:0,0"
channels 2
period_size 1024
buffer_size 4096
rate 44100
periods 0
period_time 0
}
bindings {
0 0
0 1
}
}
pcm.kombinace {
type asym
playback.pcm "vystup"
capture.pcm "vstup"
}
A po co w ogóle te wpisy? Otóż bez nich to nie moglibyśmy odtwarzać dźwięku równolegle w kilku programach, jeśli nie posiadamy karty dźwiękowej która obsługuje sprzętowe miksowanie. Jeśli obsługuje to te kroki są zbędne.ao_driver "alsa09"
ao_driver_options "dev=plug:dmix s51"
Po tym nie będziemy słyszeć dźwięku z programu który używa OSS. Będziemy musieli wyłączyć serwer dźwięku i wszystkie programy które aktualnie odtwarzają dźwięki. Dopiero po tym można skorzystać z programy który używa OSS. Można jeszcze spróbować odpalić program w taki sposób:
Kod: Zaznacz cały
artsd nazwa_programu
Kod: Zaznacz cały
aoss nazwa_programu
ale nie gwarantuję, że to zadziała.
3) W obu przypadkach (kiedy karta obsługuje lub nie obsługuje sprzętowego miksowania) i kiedy używam serwera dźwięku esd, powinniśmy dodać poniższą linijkę do /etc/esound/esd.conf
[esd]
auto_spawn=1
spawn_options=-terminate -nobeeps -as 2 -d default // -d dmixer
spawn_wait_ms=100
# default options are used in spawned and non-spawned mode
default_options=
Podsumowanie
Cóż mogę tutaj powiedzieć. Linux bez dźwięku to nie linux
Przedstawiłem tu proces instalacji sterowników ALSA.
To co napisałem o miksowaniu dźwięku może być dla was skomplikowane, macie prawo nie rozumieć wszystkiego, ale w miarę używania linuksa zrozumiecie czemu zrobiłem tak a nie inaczej. Podpowiem jeszcze, że niektóre kroki które tutaj opisałem są zbędne ale dzięki nim później zrozumiecie o co tu tak naprawdę chodzi
Pozdrawiam i życzę miłego słuchania muzyki
Cóż mogę tutaj powiedzieć. Linux bez dźwięku to nie linux

To co napisałem o miksowaniu dźwięku może być dla was skomplikowane, macie prawo nie rozumieć wszystkiego, ale w miarę używania linuksa zrozumiecie czemu zrobiłem tak a nie inaczej. Podpowiem jeszcze, że niektóre kroki które tutaj opisałem są zbędne ale dzięki nim później zrozumiecie o co tu tak naprawdę chodzi

Pozdrawiam i życzę miłego słuchania muzyki
