Poznámka: Jedná se subjektivní názor Petra Soukupa, problémy se týkají především kvality vstupu pro mikrofon.
Obecně se zvukové karty počítačů na bázi PC, to je jedna velká potíž. Často mají velké množství různých hejblátek, šoupátek a přepínačů, že by se v tom nejeden uživatel ztratil. Ale pokud chci zprovoznit mikrofon, tak aby jeho kvalita alespoň ušla, bývá to často až nemožné.
Máte-li tu smůlu, a vstup pro mikrofon vaší integrované zvukové karty jedno velké šumítko. (a nebo např. funguje-li zvuková karta jen někdy a to ještě pochybně) jsou zde dvě možnosti
Jaké jsou další výhody USB řešení? USB je možné „přesměrovat“ přímo do virtuálu (např. používáte-li virtualbox). Velice snadno se přenáší !!!
Bohužel místy je zvuk trochu posunut od toho co vidíte, zvláště když vykládám o usb sluchátkách šidítkách co mají usb napájení jen jako napájení, na monitoru jsou pravá usb sluchátkách.
Defaultní zvukovou kartu můžeme určit obsahem souboru /etc/asound.conf. Nemáte-li takový soubor, vytvořte jej jako root.
# tohle je co ma hrat
pcm.!default {
type plug
slave {
pcm "hw:1,0" # použij kartu číslo 1 (je počítáno od nuly viz. cat /proc/asound/cards)
}
}
# tohle je default pro alsamixer
ctl.!default {
type hw
card 1 # použij kartu číslo 1
}
jiná lepší možnost, karty identifikujeme podle názvu:
# http://kubuntuforums.net/forums/index.php?topic=3106282.0
# jméno karty je cat /proc/asound/cards v těch hranatejch, tak pak napíšeme za slovo card.
pcm.!default {
type hw
# card Audio
card default
}
ctl.!default {
type hw
# card Audio
card default
}
Zjevně tento konfigurační soubor vypadá podivně. Jak vyzkoušíme že opravdu funguje? Není nic třeba restartovat, začne po chvíli fungovat sám. Zkusíme pak spustit alsamixer, ano zvuková karta kterou uvidíme hned po spuštění, je právě ta kterou jsme zadali v našem konfiguračním souboru jak card. (seznam „karet“ zjístite např. pomocí cat /proc/asound/cards viz níže)
Také můžeme zkusit spustit aplay . Flashplayer je aplikace zlobivá a nemusí brát na tohle nastavení zřetel. Ale může.
Máme počítač s OS Debian distribuce squeeze, kde integrovaná zvuková karta s ovladačem (modulem do jádra) s názvem snd_hda_intel Ta buhužel spíše nefunguje než funguje. Koupili jsme si proto usb sluchátka konkrétně tyhle. Aplikace, kde je možné nastavit zvukové zažízení, jako např. Skype náhle začala bez potíží fungovat, ale jak to vysvětlit těm, u kterých se to nastavit nedá? Jako např. flashplayer?
Nevím jak je nejsprávnější řešení, já popíši moji cestu. Má domněnka byla, že když nějak znefunkčním integrovanou zvukovou kartu, stane se defaultní karta ta přes USB. Zabanoval jsem tedy modul jádra snd_hda_intel
vim /etc/modprobe.d/blacklist.conf # na konec jsem přidal blacklist snd_hda_intel
Jestli je po restartu modul stále přítomen je možné zjistit pomocí příkazu lsmod. Modul už tam nebyl, ale bohužel jsem si nepomohl. Příkaz
cat /proc/asound/cards arecord -l # vypíše karty co mají vstup - mikrofon aplay -l # vypíše karty co mají výstup - je možné tam něco přehrát.
již sice přestal problémovou integrovanou kartu uvádět. USB zařízení stále uvádělo pod číslem 1, nultá a hlavní zvuková karta neobsazen. A co více. příkaz
alsamixer
# cannot open mixer: No such device
nyní vypisuje jen „cannot open mixer“ soubor nenalezen a najde nastavovat ani jediné šoupátko našeho fungujícího USB zařízení. Nebudu to již dále natahovat. Aby se USB zvukové zařízení stalo hlavním je třeba v souboru /etc/modprobe.d/alsa-base.conf zakomentovat následující řádek.
# Keep snd-usb-audio from beeing loaded as first soundcard #options snd-usb-audio index=-2
Pak už jen stačí jen pomocí příkazu
alsa reload
odstranit a znovu nahrát zvukové moduly do jádra, a vše již funguje.
Jaké moduly do jádra vyžaduje naše zvuková karta zjistíme příkazem
cat /proc/asound/cards cat /proc/asound/modules
Pokud máte dvě zvukové karty a chcete si vybrat defaultní, můžete vybrat defaulatní pomocí zapsání do souboru alsa-base.conf např totohole.
## Creative alias snd-card-0 snd-ca0106 options snd-ca0106 index=0 ## On-board alias snd-card-1 snd-atiixp options snd-atiixp index=1
Defaultní je ta s index=0
Vysvětlení mích potíží? Nějakému vývojáří debianu se nejspíš nelíbil fakt, že jeho usb zařízení se po startu hlásí jako defaultní možnost a tak pomocí options snd-usb-audio index=-2 v alsa-base.conf tuto možnost potlačil. Pokud tohle chceme, musíme ono potlačení zakomentovat.
Po spuštení mplayer mujfilm.avi se zobrazilo následující:
[AO_ALSA] alsa-lib: pcm_hw.c:1293:(snd_pcm_hw_open) open '/dev/snd/pcmC0D0p' failed (-16): Device or resource busy [AO_ALSA] Playback open error: Device or resource busy Failed to initialize audio driver 'alsa' Could not open/initialize audio device -> no sound.
Pravděpodobně je zvukové zařízení zaneprázdněno, proto že jej používá jiná aplikace s výhradními právy. Která konkrétně aplikace to je zjistíme pmocí příkazu lsof. Příkaz lsof vypíše seznam aplikací, které mají otevřeny tento soubor (tohle zvukové zařízení).
lsof /dev/snd/pcmC0D0p COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME chromium 1578 xsouku04 mem CHR 116,6 7458 /dev/snd/pcmC0D0p chromium 1578 xsouku04 27r CHR 116,6 0t0 7458 /dev/snd/pcmC0D0p
Pokud žádný takový program není, program nevrátí nic. (vrátí prázdno)
V našem případě vidíme, že zvukovou kartu si uzmul webový prohlížeč chromium. Ve zkutečnosti to byl flashplayer uvnitř chromium. Pokud chromium vypneme, problému se zbavíme.
V ubuntu se údajně mění defaultní zvuková karta pomocí
sudo asoundconf list # abychom věděli co je k dispozici sudo asoundconf set-default-card Live
Pozor kreténi to z nejnovějších verzí oddělali, takže nyní je to opravdovej ubuntu chaos
Kvalitní poznámky ve wiki mohou pomoci i uživatelům jiných distribucí než je arch.
https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture
asoundconf-gtk
Nyjí již máte kvalitní zvuk i mikrofon. Kterou aplikaci použít na telefonování přes internet pomocí SIP? Podívejte se na náš návod a filmeček pro námi doporučovaný program twinkle.
Občas se mi modul kousne a není slyšet žádný zvuk. Vypadá to, že se to stává, když použiji suspend to ram. Je třeba jej unload (nevím jak se to řekne česky) a znovu nahrát do jádra.
lsmod|grep snd
uvidím počet použití. Pokud je použit provedu
rmmod -w snd_hda_intel
parametr -w znamená čekej až nebude používaný. a zabiji flashplayer nebo jinou aplikaci (ta se dá i vypnout). potom znovu zavedu modul. Nemusím tak restartovat prohlížeč, ten si flashplayr pustí znovu.
modprobe snd_hda_intel
a zvuk už jde.