ALSA - dźwięk w Linuksie

Tematy związane z oprogramowaniem, instalacją, konfiguracją
Kaka'
Senior Member
Posty: 3018
Rejestracja: 30 lipca 2006, 13:17
Lokalizacja: Kartuzy

ALSA - dźwięk w Linuksie

Post autor: Kaka' »

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.
Kaka'
Senior Member
Posty: 3018
Rejestracja: 30 lipca 2006, 13:17
Lokalizacja: Kartuzy

Post autor: Kaka' »

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.
Kaka'
Senior Member
Posty: 3018
Rejestracja: 30 lipca 2006, 13:17
Lokalizacja: Kartuzy

Post autor: Kaka' »

Instalacja ALSA


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 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:

Kod: Zaznacz cały

aptitude install alsa-modules-`uname -r`
Jeżeli posiadasz kernel z serii 2.6 to wystarczy:

Kod: Zaznacz cały

aptitude install alsa-base alsa-utils
Kaka'
Senior Member
Posty: 3018
Rejestracja: 30 lipca 2006, 13:17
Lokalizacja: Kartuzy

Post autor: Kaka' »

Konfiguracja ALSA


Teraz po zainstalowaniu ALSA wydajemy jako root:

Kod: Zaznacz cały

alsaconf
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.
Kaka'
Senior Member
Posty: 3018
Rejestracja: 30 lipca 2006, 13:17
Lokalizacja: Kartuzy

Post autor: Kaka' »

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.
Kaka'
Senior Member
Posty: 3018
Rejestracja: 30 lipca 2006, 13:17
Lokalizacja: Kartuzy

Post autor: Kaka' »

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:

Kod: Zaznacz cały

aptitude install alsa-oss
Po tym tworzymy w katalogu domowym plik asoundrc:

Kod: Zaznacz cały

touch ~/.asoundrc
Teraz otwieramy ten plik. Następnie dodajemy do niego podany niżej wpis:

Kod: Zaznacz cały

pcm.dsp { 
type plug 
slave.pcm "hw:0" 
}
Teraz należy załadować odpowiednie moduły (jako root):

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
Po tym tworzymy w katalogu domowym plik .asoundrc:

Kod: Zaznacz cały

touch ~/.asoundrc
Do tego pliku dodajemy:
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:
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"
}
Do /etc/mpd.conf dodajemy:
ao_driver "alsa09"
ao_driver_options "dev=plug:dmix s51"
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.

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
i

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=
Kaka'
Senior Member
Posty: 3018
Rejestracja: 30 lipca 2006, 13:17
Lokalizacja: Kartuzy

Post autor: Kaka' »

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 :)
Zablokowany