Oletusäänikortin asettaminen

Kohteesta Linux.fi
Loikkaa: valikkoon, 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[muokkaa]

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[muokkaa]

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

asoundconf set-default-card <ää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[muokkaa]

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[muokkaa]

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[muokkaa]

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

Oletuskohteen asettaminen[muokkaa]

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[muokkaa]

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[muokkaa]

Jos GStreamer on asennettu, voi PulseAudiota kokeilla komennolla:

gst-launch-0.10 audiotestsrc ! pulsesink