Gentoon ALSA-ohje
1.
Johdanto
Mikä on ALSA?
ALSA, eli Advanced Linux Sound Architecture, sisältää Linuxin
ääni- ja MIDI-toiminnallisuudet. ALSA on Linuxin ydinten 2.6-versioiden
oletusarvoinen ääniajurijärjestelmä, joka korvaa 2.4-ytimissä käytety OSSin,
eli Open Sound Systemin.
ALSA sisältää ajurit laajalle valikoimalle rajapintoja kuluttajakorteista
ammattimaiisin laitteistoihin. Ajurit ovat moniajoturvalliset ja taaksepäin
yhteensopivat OSSin kanssa. ALSAan sisältyy käyttäjäkirjasto alsa-lib,
jonka avulla ohjelmointi on helpompaa.
ALSA Gentoossa
Aiemmin Gentoossa on ollut kaksi eri tapaa asentaa ALSA-tuki: ytimen ALSAna ja
erillisenä ajuripakettina. Ajuripaketista on sittemmin luovuttu ja nykyään
käytetään vain ytimen mukana tulevia ALSA-ajureita.
Jos tarvitset vielä alsa-driver-pakettia, ilmoita Gentoon ALSA-ylläpitäjille mikseivät ytimen
ajurit kelpaa. Mukaan tulee liittää tarkat virhelokit jne.
2.
ALSAn asennus
Ennen aloittamista
Ennen asentamista pitää tietää minkälaiset ajurit äänikortti
vaatii. Lspci-komento auttaa tiedon löytämisessä. Lspci on
paketissa sys-apps/pciutils, joka pitää tietenkin asentaa ennen sen
käyttämistä. Jos käytössä on USB-äänikortti, lsusb-komento paketista
sys-apps/usbutils saattaa olla avuksi. ISA-pohjaisille korteille
voi käyttää sys-apps/isapnptools-paketin ohjelmia. Seuraavilla sivuilla
on lisävinkkejä ISA-pohjaisten korttien käyttäjille.
Huomaa:
Jatkossa käytetään esimerkkinä PCI-pohjaista äänikorttia.
|
Seuraavaksi selvitellään äänikorttia:
Koodilistaus 2.1: Äänikortin tietojen hakeminen |
# lspci -v | grep -i audio
0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06)
|
Tästä näkee, että äänikortti on Sound Blaster Live! ja sen on tehnyt
Creative Labs. Nyt sivuilta
ALSA
Soundcard Matrix
löytyy Creative Labs. Seuraavalla sivulla on Creative Labsin
tekemien korttien taulukko, josta näkee että se käyttää emu10k1-ajuria.
Tällä tiedolla pääse jo asentamaan ajuria, mutta lisätietoja voi lukea
vieressä olevasta Details-linkistä.
Jos tarvitset MIDIä, pitää midin olla USE-asetuksissa ennen
ALSA-pakettien asentamista. Myöhempänä oppaassa kerrotaan
MIDI-tuen asentamisesta.
Ytimen ALSA-ajurien asetukset
Huomaa:
Gentoon versiosta 2005.0 lähtien oletusydin on ollut versio 2.6. Varmista, että
kernelisi on on 2.6-sarjalainen, koska tämä ei toimi 2.4-versioissa.
|
Katsotaan sitten ALSAn asetuksia.
Tärkeää:
Genkernelin käyttäjien pitää suorittaa genkernel --menuconfig all
ja seurata koodilistauksen
ALSA:n ydinasetusten teko ohjeita.
|
Koodilistaus 2.2: Ytimen asetuksien muokkaaminen |
# cd /usr/src/linux
# make menuconfig
|
Huomaa:
Ylläolevassa oletetaan, että /usr/src/linux-linkki on valmiiksi
kohdallaan. Tarkista jos olet epävarma.
|
Seuraavaksi katsotaan joitain ydinasetusten ALSA-tuelle välttämättömiä
asetuksia.
Asioiden yksinkertaistamiseksi kaikki esimerkit ovat modulaarisesta ytimestä.
Mallin seuraaminen on suositeltavaa, sillä se mahdollistaa alsaconfin
käytön.
Muista myös käydä läpi
asetukset-osio. Jos aiot kääntää ajurit ytimeen
sisään, tee tarvittavat muutokset.
Koodilistaus 2.3: ALSAn ytimen muutokset |
Device Drivers --->
Sound --->
<M> Sound card support
Open Sound System --->
< > Open Sound System (DEPRECATED)
Advanced Linux Sound Architecture --->
<M> Advanced Linux Sound Architecture
<M> Sequencer support
<M> OSS Mixer API
<M> OSS PCM (digital audio) API
Generic devices --->
ISA devices --->
<M> Gravis UltraSound Extreme
PCI devices --->
<M> Emu10k1 (SB Live!, Audigy, E-mu APS)
<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller
<M> VIA 82C686A/B, 8233/8235 AC97 Controller
USB Devices --->
|
Nyt kun asetukset ovat kohdallaan, ydin pitää kääntää, ja ALSA-tuki on sitten
kunnossa seuraavan käynnistyksen jälkeen. Muista kuitenkin päivittää
käynnistyslataimen asetukset ensin. Seuraavaksi kannattaa asentaa
ALSA-työkalut ja varmistaa, että kaikki
toimii kuten pitää.
3.
Säätäminen ja testaaminen
ALSA-työkalut
Alsa-utils on ALSAn keskeinen osa, sillä se sisältää läjäpäin tärkeitä
sovelluksia, mukaanlukien ALSAn initskriptit. Alsa-utilsin asentaminen
on erittäin suositeltavaa.
Koodilistaus 3.1: Alsa-utilsin asentaminen |
# emerge alsa-utils
|
Huomaa:
Jos ALSA on käännetty ytimeen eikä
se ole moduuleina, voit jatkaa
ALSAn Initskriptien parissa. Loppuosa kappaleesta
kertoo miten ALSAn asetukset tehdään. Tämä on helppoa vaikkapa
alsa-conf-työkalulla, joka tulee alsa-utilsien mukana.
|
Asetukset
Tuoreet versiot udevist (so. >=udev-103) sisältävät ytimen
puolesta äänikortin automaattista asettamista. Jos mahdollista, kannattaa
silloin yrittää antaa ytimen asettaa äänikortti automaattisesti. Muutoin pitää
käyttää alsaconfia kuten alla on kerrottu.
Huomaa:
Kaikki ohjelmat, jotka saattaisivat käyttää äänikorttia pitää sammuttaa
alsaconfin ajaksi.
|
Toinen tapa tehdä asetukset on alsaconfilla. Sen suorittaminen onnistuu
roottina kirjoittamalla alsaconf.
Koodilistaus 3.2: Alsaconfin käynnistys |
# alsaconf
|
Ohjelmassa on tyylikäs opastettu valikkopohjainen asetusohjelma, joka
automaattisesti etsii laitteita ja arpoo äänikortteja. Sopiva äänikortti pitää
valita luettelosta. Tämän jälkeen ohjelma pyytää lupaa muokata tiedostoa
/etc/modprobe.d/alsa.conf. Se asettaa myös äänenvoimakkuudet
suositustasoille, suorittaa update-modulesin ja käynnistää
/etc/init.d/alsasound-palvelun. Kun alsaconf on valmis,
voidaan jatkaa ALSAn initskriptin parissa.
ALSAn Initskripti
Melkein kaikki asetukset ovat nyt kunnossa. Miten tahansa ALSA onkaan asennettu,
pitää kuitenkin vielä ladata joitain moduuleja tai käynnistää ALSA ja palauttaa
äänenvoimakkuudet järjestelmän käynnistyttyä. ALSAn initskripti hoitaa kaiken
tämän. Initskriptin nimi on alsasound ja se pitää lisätä
boot-runlevelille.
Koodilistaus 3.3: ALSAn lisäys boottiin |
# rc-update add alsasound boot
* alsasound added to runlevel boot
* rc-update complete.
|
Seuraavaksi kannattaa tarkistaa tiedostosta /etc/conf.d/alsasound
että SAVE_ON_STOP on yes. Tällä asetuksella ääniasetukset tallennetaan kun
järjestelmää sammutetaan.
Audio-ryhmä
Ennen testaamista, yksi asia pitää vielä hoitaa. Hyvä nyrkkisääntö *nixeissä
on, ettei roottia käytetä ellei se ole varmasti tarpeen. Sama toimii täälläkin.
Suurimman osan ajasta musiikkia kuunneltaneen tavan käyttäjänä. Sen
toimimiseksi, käyttäjän tulee kuulua audio-ryhmään. Tässä vaiheessa lisätään
siis käyttäjät siihen, jotta he pystyisivät käyttämään äänilaitetiedostoja.
Tämä hoidetaan gpasswd-komennolla, jota pitää käyttää roottina:
Koodilistaus 3.4: Käyttäjän lisäys audio-ryhmään |
# gpasswd -a <username> audio
Adding user <username> to group audio
|
Äänenvoimakkuus!
Kaikki asetukset ja esiasettelyt on tehty, joten ALSAn voi käynnistää. Jos
alsaconf on jo ajettu aiemmassa vaiheessa, tämän osion voi myös ohittaa,
sillä alsaconf on tehnyt tämänkin.
Koodilistaus 3.5: Palvelun käynnistäminen |
# /etc/init.d/alsasound start
|
Nyt kun ALSA on käynnissä, pitää vielä tarkistaa äänenvoimakkuus, koska se on
usein vaimennettu. Tämä hoituu kätevästi alsamixerillä.
Koodilistaus 3.6: Starting alsamixer |
# alsamixer
|
ALSA mixer saattaa näyttää jotakuinkin seuraavalta ensi kerran
avattaessa. Huomaa, että sekä Master- että PCM-kanavilla on MM allaan. Se
tarkoittaa, että ne on vaimennettu. Tässä tilassa minkään soittaminen ei tuota
ääntä.
Kuva 3.1: Alsa Mixerin pääikkuna, kanavat vaimennettuina |
 |
Seuraavaksi poistetaan vaimennus kanavilta ja asetetaan äänenvoimakkuudet.
Varoitus:
Molemmat Master ja PCM pitää olla asetettu pois vaimennustilasta ja äänet
kuuluville tasoille, jotta kaiuttimista kuuluisi mitään.
|
-
Kanavien välillä liikkuminen tapahtuu nuolinäppäimillä oikealla ja
vasemmalle (← ja →).
-
Vaimennuksen saa päälle tai pois painamalla m:ää.
-
Äänenvoimakkuuden saa päälle tai pois nuolinäppäimillä ylös ja alas
(↑ ja ↓)
Huomaa:
Älä aseta bassoa tai diskanttia liian suuriksi. 50 on yleensä hyvä arvo
molemmille. Korkeat arvot aiheuttavat ongelmia jos kaiuttimet eivät ole
suunniteltu niitä varten.
|
Kun kaikki on valmista ALSA Mixerin pitäisi näyttää jotakuinkin seuraavalta.
Huomaa 00:t MM:ien tilalla ja äänenvoimakkuustasot.
Kuva 3.2: Alsa Mixer äänet päällä ja vaimennukset pois |
 |
Sound Check!
Lopuksi, kokeillaan ääniä. Jos kaikki aiemmin sujui hyvin, musiikinkuuntelun
pitäisi nyt onnistua. Nopea tapa testata tämä on komentoriviohjelmalla, kuten
media-sound/madplaylla. On myös mahdollista käyttää vaikkapa
mpg123:a. Jos käytät oggeja, ogg123 löytyy
paketista media-sound/vorbis-tools. Mitä tahansa soitinta voi
käytännössä käyttää.
Koodilistaus 3.7: Ohjelmien asentaminen |
# emerge madplay mpg123
# emerge vorbis-tools
|
Ja sitten soita suosikkikappaleesi:
Koodilistaus 3.8: Musiikin soittaminen |
# madplay -v /mnt/shyam/Music/Paul\ Oakenfold\ -\ Dread\ Rock.mp3
MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
Title: Dread Rock
Artist: Paul Oakenfold
Album: Matrix Reloaded
Year: 2003
Genre: Soundtrack
Soundtrack
00:04:19 Layer III, 160 kbps, 44100 Hz, joint stereo (MS), no CRC
# ogg123 Paul\ Oakenfold\ -\ Dread\ Rock.ogg
Audio Device: Advanced Linux Sound Architecture (ALSA) output
Playing: Paul Oakenfold - Dread Rock.ogg
Ogg Vorbis stream: 2 channel, 44100 Hz
Genre: Soundtrack
Transcoded: mp3;160
Title: Dread Rock
Artist: Paul Oakenfold
Date: 2003
Album: Matrix Reloaded
Time: 00:11.31 [04:28.75] of 04:40.06 (200.6 kbps) Output Buffer 96.9%
|
ALSA ja USE
Kannattanee myös lisätä alsa /etc/make.confiin, jotta
ALSAa tukevat sovellukset poimivat sen mukaan. Joillekin alustoille, kuten
x86:lle ja amd64:lle ALSAn USE-flägi on valmiiksi päällä.
Ongelmia?
Jos ääniä ei kuulu, tarkista ensimmäiseksi alsamixerin asetukset. Noin 80% ongelmista johtuu
vaimennetuista kanavista tai matalasta äänenvoimakkuudesta. Tarkista myös
ikkunointiohjelman äänisovelmasta että äänenvoimakkuus on oikein.
/proc-tiedostojärjestelmä on ystävä. Tässä tapauksessa
/proc/asound voi kertoa meille paljon. Tässä jotain, mitä saamme
selville tutkailemalla sitä.
Koodilistaus 3.9: /proc/asoundin tutkiminen |
# cat /proc/asound/cards
0 [Live ]: EMU10K1 - Sound Blaster Live!
Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
# cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).
# cat /proc/asound/oss/sndstat
Sound Driver:3.8.1a-980706 (ALSA v1.0.8 emulation code)
Kernel: Linux airwolf.zion 2.6.11ac1 #2 Wed May 4 00:35:08 IST 2005 i686
Config options: 0
Installed drivers:
Type 10: ALSA emulation
Card config:
Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
Audio devices:
0: EMU10K1 (DUPLEX)
Synth devices: NOT ENABLED IN CONFIG
Midi devices:
0: EMU10K1 MPU-401 (UART)
Timers:
7: system timer
Mixers:
0: SigmaTel STAC9721/23
|
Toinen yleinen ongelma on "Unknown symbol in module" moduulia ladattaessa.
Esimerkki tästä:
Koodilistaus 3.10: Unknown symbol -virhe |
# /etc/init.d/alsasound start
* Loading ALSA modules ...
* Loading: snd-card-0 ... [ ok ]
* Loading: snd-pcm-oss ...
WARNING: Error inserting snd_mixer_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting
snd_pcm_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-pcm-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg)
[ !! ]
* Loading: snd-mixer-oss ...
FATAL: Error inserting snd_mixer_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg)
[ !! ]
* Loading: snd-seq ... [ ok ]
* Loading: snd-emu10k1-synth ... [ ok ]
* Loading: snd-seq-midi ... [ ok ]
* Restoring Mixer Levels ... [ ok ]
|
Ja dmesg kertoo todennäköisesti jotain tyyliin:
Koodilistaus 3.11: Dmesg-tuloste |
# dmesg | less
ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 209
snd_mixer_oss: Unknown symbol snd_unregister_oss_device
snd_mixer_oss: Unknown symbol snd_register_oss_device
snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
snd_mixer_oss: Unknown symbol snd_oss_info_register
snd_pcm_oss: Unknown symbol snd_unregister_oss_device
snd_pcm_oss: Unknown symbol snd_register_oss_device
snd_pcm_oss: Unknown symbol snd_mixer_oss_ioctl_card
snd_pcm_oss: Unknown symbol snd_oss_info_register
snd_mixer_oss: Unknown symbol snd_unregister_oss_device
snd_mixer_oss: Unknown symbol snd_register_oss_device
snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
snd_mixer_oss: Unknown symbol snd_oss_info_register
|
Ylläoleva seuraa siitä kun vaihdetaan alsa-driverista ytimen ALSAan,
koska alsa-driverin poisto ei poista asennettuja moduuleja
asetussuojatusta hakemistosta. Vaihtamisen jälkeen siis käytössä onkin sekoitus
ytimen ja ALSAn ajureita, jotka aiheuttavat ylläolevan virheen.
Ongelma ratkeaa helposti poistamalla väärät ajurit käsin alsa-driverin
poistamisen jälkeen.
Koodilistaus 3.12: Alsa-ajurien tiedostojen poistaminen |
# rm -rf /lib/modules/$(uname -r)/alsa-driver
|
Toinen syy ylläolevan kaltaisille virheviesteille on
/etc/modprobe.d:ssä sijaitseva device_mode-parametri, jota
ei tarvita.
Koodilistaus 3.13: Device_moden haku ja korjaus |
# dmesg | grep device_mode
snd: Unknown parameter `device_mode'
# grep device_mode /etc/modprobe.d/*
|
Useimmiten syy on tiedostossa alsa oleva asetus
options snd device_mode=0666. Poista tämä ja uudelleenkäynnistä
alsasound-palvelu niin ongelma ratkeaa.
4.
Muita ALSA-juttuja
MIDI-tuet
Ensiksi pitää varmistaa, että midi kuuluu USE-asetuksiin tiedostossa
/etc/make.conf. Jos midi ei aiemmin ollut päällä, se pitää
lisätä. Lisäksi pitää
uudelleenasentaa ALSA-paketit, jotka käyttävät midi-asetusta, kuten
alsa-lib ja alsa-utils.
Jos äänikortissa on MIDI-syntikka mukana, ja haluat kuunnella .mid-tiedostoja,
pitää ensinnä asentaa awesfx, joka on AWE32-ajurin hallintaohjelmisto.
Jos käytössä ei ole laitteistosyntikkaa voit käyttää virtuaalista korviketta.
Kappaleessa Virtuaalisyntikat on lisätietoja tästä.
Koodilistaus 4.1: Awesfx:n asennus |
# emerge awesfx
|
Huomaa:
SoundFontit (SF2-tiedostot) pitää kopioida äänikortin ajuri-CD:ltä tai
Windows-asennuksesta hakemistoon /usr/share/sounds/sf2/.
Esimerkiksi Creativen SBLive!:n soundfontti on 8MBGMSFX.SF2.
|
Soundfontin kopioinnin jälkeen voi soittaa midi-tiedostoja.
Komennon asfxload voi lisätä myös tiedostoon
/etc/conf.d/local.start, jotta se suoritetaan automaattisesti
joka käynnistyksen yhteydessä.
Huomaa:
Seuraavan koodilistauksen /mnt-polut eivät tietenkään ole samat
kaikilla koneilla, ne ovat vain esimerkkejä. Muista etsiä oikeat polut omalle
koneellesi.
|
Koodilistaus 4.2: Soundfonttien lataus |
# cp /mnt/win2k/Program\ Files/CreativeSBLive2k/SFBank/8MBGMSFX.SF2 /usr/share/sounds/sf2/
# asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2
|
Nyt midi-tiedostoja voi soittaa komennolla aplaymidi. Komennolla
aplaymidi -l saa luettelon soitettavista porteista, joista
valitaan joku soittamaan tiedostoa.
Koodilistaus 4.3: MIDIn soittaminen |
# aplaymidi -l
Port Client name Port name
64:0 EMU10K1 MPU-401 (UART) EMU10K1 MPU-401 (UART)
65:0 Emu10k1 WaveTable Emu10k1 Port 0
65:1 Emu10k1 WaveTable Emu10k1 Port 1
65:2 Emu10k1 WaveTable Emu10k1 Port 2
65:3 Emu10k1 WaveTable Emu10k1 Port 3
# aplaymidi --port=65:0 /mnt/shyam/music/midi/mi2.mid
|
Virtuaalisyntikat
Jos äänikortista puuttuu syntikka, on mahdollista käyttää ohjelmistoa tilalla,
kuten timidity++:aa.
Koodilistaus 4.4: Timidity++:n asentaminen |
# emerge timidity++
|
Timidity tarvitsee soundfontin toimiakseen, nykyisessä ebuildissa tulee
joitain mukana. Jos käytössä ei ole yhtä
löytyy niitä paketeista timidity-eawpatches ja
timidity-freepat. Asennettuna voi olla useitakin soundfontteja,
ja niitä voi sijoittaa itse hakemistoon /usr/share/timidity/.
Eri asetusten välillä liikkumiseen voi käyttää eselectiä.
Koodilistaus 4.5: Asetusten muuttaminen |
# eselect timidity list
# eselect timidity set eawpatches
|
Muista lisätä timidity default-runlevelille.
Koodilistaus 4.6: Timidityn lisäys defaulttiin |
# rc-update add timidity default
# /etc/init.d/timidity start
|
Nyt pitäisi onnistua soittaa MIDIä.
Työkalut ja firmwaret
Jotkin äänikortit tarvitsevat lisätyökaluja alsa-tools- ja
alsa-firmware-paketeista toimiakseen. Ne voi asentaa emergellä
suoraan:
Koodilistaus 4.7: ALSA Toolsin asennus |
# emerge alsa-tools
|
Usean äänikortin käyttö
Järjestelmässä voi olla useampiakin äänikortteja, jos ALSA-ajurit ytimessä ovat
moduuleja, kortit pitää määritellä järjestyksessä
/etc/modprobe.d/alsa.confissa. Kortit merkitään ajurien nimen
mukaan. 0 on ensimmäinen, 1 toinen ja niin edelleen. Tässä esimerkissä on
kaksi korttia:
Koodilistaus 4.8: Kaksi äänikorttia setustiedostossa /etc/modprobe.d/alsa.conf |
options snd-emu10k1 index=0
options snd-via82xx index=1
|
Jos kaksi korttia käyttää samaa ajuria, ne pitää määritellä samalla rivillä
pilkuin erotelluin luvuin. Tässä esimerkissä on kolme äänikorttia, joista kaksi
Intelin High Definition Audio -pohjaisia:
Koodilistaus 4.9: Useita samanmallisia äänikortteja asetustiedostossa /etc/modprobe.d/alsa.conf |
options snd-ymfpci index=0
options snd-hda-intel index=1,2
|
Liitännäiset
Lisätoimintoja saa liitännäisistä paketista alsa-plugins. Se sisältää
mm. PulseAudio-lähdön, näytetaajuusmuuntimen ja 6-kanavalähdön
S/PDIF-liittimiin. Voit valita liitännäisiä USE-asetuksilla tiedostoon
/etc/portage/package.use.
Koodilistaus 4.10: Alsa-pluginsin asennus |
# emerge -avt alsa-plugins
|
Kiitokset
Aiempien ALSA-ohjeiden tekijöille:
Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston,
John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft ja Erwin.
Viitteet
Tämän sivun sisältö ja suomennos kuuluvat
Creative Commons - Nimi mainittava-Sama lisenssi 2.5 -lisenssin alle.
Sivun sisältöä koskee myös
Gentoo Name and
Logo Usage Guidelines.
|