Oletusäänikortin asettaminen

Linux.fista
Versio hetkellä 12. toukokuuta 2008 kello 23.52 – tehnyt Ahnurmi (keskustelu | muokkaukset) (→‎Testaaminen: tarkempi otsikko)
Siirry navigaatioon Siirry hakuun

Tyypillisessä Linux-järjestelmässä on hyvin vaikeaa valita yksi äänikortti ylitse muiden. Äänijärjestelmiä on useita ja sovellukset eivät toimi yhtenäisesti. Voi myös olla, että äänikorttien järjestys vaihtuu joka käynnistyksen yhteydessä.

ALSA

ALSAn toimintaan voi vaikuttaa kahdella keinolla: asettamalla äänikorttien järjestysnumerot tai muokkaamalla käyttäjän asetustiedostoa. Ensimmäisen etu on taattu toimivuus, mutta jälkimmäisen käyttäjä voi vaihtaa melko helposti.

asoundconf

ALSAn asetustiedostot ovat hyvin monimutkaisia. Onneksi useissa Linux-jakeluissa on ohjelma nimeltä asoundconf, joka tekee muutokset käyttäjän puolesta:

asoundconf <äänikortin ALSA-nimi>

Komennon suorittaminen luo tiedostot ~/.asoundrc (jos sitä ei jo ole) ja ~/.asoundrc.asoundconf.

ALSAn antamat nimet äänikorteille saa tietoonsa komennolla:

cat /proc/asound/cards

Nimi on hakasulkujen sisällä oleva tunnus.

Indeksien asettaminen käsin

Aina silloin tällöin vastaan tulee sovellus, joka ei noudata ALSAn asetustiedoston oletusäänikorttiasetusta. Tällöin tarvitaan bugiraportin lisäksi järeämpiä keinoja.

Asetetaan ALSA-ajurien järjestys käsin. Listan mahdollisista ajureista saa komennolla:

lsmod | grep snd_

Ajurit voi pakottaa järjestykseen tiedostossa /etc/modprobe.d/alsa-base, esimerkiksi lisäämällä loppuun seuraavat rivit:

options snd_ice1724 index=0
options snd_hda_intel index=1

Nyt ICE1724-piiriin pohjautuva äänikortti saa indeksin 0 (oletus) ja emolevylle integroitu Intelin HDA-piiri indeksin 1, kun tietokone käynnistetään.

ALSAn testaaminen

Asetusten toimivuutta voi testata soittamalla äänitiedoston aplay-ohjelmalla:

aplay /usr/share/sounds/login.wav

Yleensä asoundconf ja aplay ovat paketissa nimeltä alsa-utils. Huomaa kuitenkin, että aplay ei vastaa "huonosti käyttäytyvää ohjelmaa".

PulseAudio

ALSAn kaltaisesti PulseAudio voidaan säätää kahdella tapaa, sillä huonosti ohjelmoidut sovellukset eivät osaa käyttää sen oletusäänikorttiasetusta hyväkseen.

Oletuskohteen asettaminen

Käynnistetään PulseAudio komentorivitilaan ja pyydetään sitä listaamaan kaikki äänikohteet (sink):

$ pulseaudio -C
Welcome to PulseAudio! Use "help" for usage information.
>>> list-sinks

Kopioidaan ensisijaisen äänikortin PulseAudio-nimi talteen. Se voi olla esimerkiksi:

alsa_output.pci_1412_1724_sound_card_0_alsa_playback_0

Sitten muokataan tiedostoa /etc/pulse/default.pa ja lisätään seuraavankaltainen rivi loppuun (vaihda toki oman äänikorttisi nimi tilalle):

set-default-sink alsa_output.pci_1412_1724_sound_card_0_alsa_playback_0

PulseAudion uudelleenkäynnistyksen jälkeen äänien pitäisi kuulua oikeasta äänikortista. Mikrofonilähdölle voi tehdä saman tempun.

Moduulien lataaminen käsin

Ylläoleva ei aina auta, sillä jotkut huonosti käyttäytyvät ohjelmat (kirjoitushetkellä muun muassa Adobe Flash + libflashsupport ja Gnomen ääniasetukset, gnome-sound-properties) käyttävät kohdetta numero 0 eivätkä oletusta.

Muokataan tiedostoa /etc/pulse/default.pa. Todennäköisesti siellä on rivi, joka etsii äänikortit automaattisesti:

load-module module-hal-detect

Kommentoidaan se pois käytöstä...

#load-module module-hal-detect

...ja ladataan äänikohteet ja -lähteet itse oikeassa järjestyksessä, esimerkiksi:

load-module module-alsa-sink device=hw:Revolution51 sink_name=Revolution51_sink
load-module module-alsa-sink device=hw:NVidia sink_name=NVidia_sink
load-module module-alsa-source device=hw:Revolution51 source_name=Revolution51_source

(Revolution51 on äänikortin ALSA-nimi tiedostosta /proc/asound/cards.) Nimet sink_name ja source_name voi valita itse. Mahdolliset alilaitteet merkitään kuten ALSAssa yleensä:

hw:NVidia,1

Sitten vielä asetetaan oletukset sitä asetusta käyttäville sovelluksille:

set-default-sink Revolution51_sink
set-default-source Revolution51_source

PulseAudion testaaminen

Jos GStreamer on asennettu, voi PulseAudiota kokeilla komennolla:

gst-launch-0.10 audiotestsrc ! pulsesink