ALSA
Ez a cikk egy hangkártya beállítását írja le az ALSA (Advanced Linux Sound Architecture. Magyarul: fejlett Linux hangarchitektúra) segítségével.
Telepítés
Hardverészlelés
Gyakran tapasztalható az ALSA telepítése során, hogy a hangkártyák kernel-illesztőprogram-moduljai nincsenek megfelelően telepítve a rendszerre. Annak ellenőrzéséhez, hogy a rendszerben vannak-e működő hangkártya-illesztőprogram-modulok, futtassa az lsmod parancsot. Ha nincsenek
snd_
előtaggal rendelkező modulok, akkor fontolja meg a kernel illesztőprogram moduljának megfelelő telepítését a rendszer specifikus hangkártyájához. Részletesebb útmutató a kernelmodulok (Kernel Modules) oldalán található.A megfelelő illesztőprogram kiválasztásához először észlelje a használt hangvezérlőt. Ehhez a feladathoz használja az lspci parancsot:
user $
lspci | grep -i audio
A vezérlő nevének meghatározása után a szükséges meghajtó megtalálható az ALSA sound card matrix oldalán.
Kernel
Aktiválja a következő kernelbeállításokat:
Device Drivers --->
<*> Sound card support
<*> Advanced Linux Sound Architecture --->
[*] PCI sound devices --->
Select the driver for your audio controller.
HD-Audio --->
Select a codec or enable all and let the generic parse choose the right one:
[*] Build Realtek HD-audio codec support
[*] ...
[*] Build Silicon Labs 3054 HD-modem codec support
[*] Enable generic HD-audio codec parser
[*] USB sound devices --->
Must have as some cards are presented as USB devices.
[*] USB Audio/MIDI driver
General setup --->
[*] System V IPC
Az lsmod parancs hasznos lehet.
Ha a rendszer nyolcnál több hangkimenettel rendelkezik (a grafikuskártyán minden HDMI kimenet egynek számít), akkor a hangkártyák maximális számát növelni kell:
Device Drivers --->
<*> Sound card support
<*> Advanced Linux Sound Architecture --->
[*] Dynamic device file minor numbers
(32) Max number of sound cards
Szoftver
A Portage ismeri az alsa
globális USE jelölőzászlót, amely lehetővé teszi az ALSA támogatását más csomagokban. Ennek az USE jelölőzászlónak az engedélyezése automatikusan be fogja húzni a media-libs/alsa-lib csomagot (már alapértelmezett az x86 és amd64 asztali profilokban):
root #
euse -E alsa
A euse parancs az app-portage/gentoolkit része.
USE flags for media-libs/alsa-lib Advanced Linux Sound Architecture Library
alisp
|
Enable support for ALISP (ALSA LISP) interpreter for advanced features. |
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
python
|
Add optional support/bindings for the Python language |
Ennek beállítása után feltétlenül frissítse a rendszert, hogy a változtatások érvénybe lépjenek:
root #
emerge --ask --changed-use --deep @world
Miután beállította a szükséges USE jelölőzászlókat, telepítheti az ALSA csomagot. Kezdje a telepítést egy emerge paranccsal, például:
root #
emerge --ask media-libs/alsa-lib
A media-sound/alsa-utils csomag tartalmaz néhány eszközt a hangrendszer hibaelhárításához és teszteléséhez. Jó ötlet összevonni a csomagot, ha még nincs telepítve:
root #
emerge --ask media-sound/alsa-utils
Konfiguráció
Fájlok
- /etc/asound.conf - Globális (system egészére ható) konfigurációs fájl.
- ~/.asoundrc - Helyi (felhasználói fiókonkénti) konfigurációs fájl.
~/.asoundrc
Ez a fájl opcionálisan használható, hogy felhasználói fiókonként felülírható legyen az ALSA alapértelmezett beállításai. Ha a rendszer speciális hardverrel rendelkezik, akkor valószínűleg a nulladik kártya és nulladik eszköz (alapértelmezett) nem fog működni.
Az egyik legegyszerűbb változtatási lehetőség a kártya és az eszköz változtatása. Ez az helyzet nálam áll fent ahol egy Nvidia kártyáról érkező HDMI van, ami egy alaplapi Realtek ALC88* audioeszközhöz van csatlakoztatva.
defaults.pcm.!card 1
defaults.pcm.!device 7
Ha úgy tűnik, hogy Ön nem találja a használni kívánt hangkártyához tartozó eszközhöz rendelt kártyaszámot, akkor ne essen pánikba – a kártyaszám a rendszerben belsőleg egy név, amelyet használhat. Amennyiben az Ön kártyája valóban így látszik...
user $
aplay -L
front:CARD=Generic,DEV=0 HD-Audio Generic, ALC282 Analog Front speakers
...akkor ez azt jelenti, hogy a ~/.asoundrc fájlnak ilyennek kell lennie:
defaults.pcm.!card Generic
defaults.pcm.!device 0
defaults.ctl.!card Generic
Ezek a beállítások letiltják az összes szoftveres keverést. Ha mindent 96 kHz frekvencián szeretne kiadni, akkor adja hozzá a
defaults.pcm.dmix.rate 96000
értéket a ~/.asoundrc fájlhoz.Ha több hangkártya van használatban, akkor az eszközök számozásai átrendezhetők a rendszerindítások között, így a név használata előnyös.
Ha Önnek nem nyilvánvaló a helyes név, akkor az érvényes nevek listája könnyen megszerezhető ezzel a módszerrel:
user $
cat /sys/class/sound/card*/id
Itt van a kimenete egy több hangkártyával is rendelkező fejlesztői rendszernek:
user $
cat /sys/class/sound/card*/id
Q1U HDMI PCH C930e
Itt van a Q1U mikrofon, Q1U jelöléssel. Aztán itt van a beépített HDMI mint HDMI. Az analóg audio csatlakozók a PCH. A webkamera és beépített mikrofon ami a C930e. Ezek bármelyike érvényes név a kártyára.
Ha több hangkártya használatakor nevek helyett számokat ad meg, akkor az eszközök újrarendezését eredményezheti a rendszerindítások között, ami megakadályozza, hogy a hang megfelelően működjön mindaddig, amíg a konfigurációs fájlt nem módosítják az új szám használatára.
S/PDIF or HDMI .asoundrc
Háttér
A legtöbb hangkártya S/PDIF digitális koaxiális vagy optikai kábelek segítségével lehetővé teszi a hang továbbítását egy külső fogyasztói vevőeszközhöz vagy DAC-hez. Ezzel megőrzi a hangminőséget és a tömörített Dolby/DTS kódolású anyagokat. Tömörítetlen Dolby/DTS vagy Bluray anyagokhoz HDMI csatlakozás szükséges. A gyakoribb monó vagy analóg sztereó kábelek nem tudnak Dolby/DTS jeleket továbbítani.
Alapértelmezett telepített ALSA telepítéssel lehetséges, hogy az S/PDIF vagy a HDMI kapcsolat már a készen a dobozból kivett állapotban is működjön (nincs .asoundrc fájlmódosítás). Míg néhány alkalmazás, például a webböngésző Adobe Flash bővítménye nem tudja lejátszani a hangot. Mint ilyen eset, az alábbi .asoundrc általában szükséges a legtöbb S/PDIF és HDMI csatlakozáshoz. Továbbá minden megnyitott médiaalkalmazást újra kell indítani, hogy az .asoundrc fájlok érvényesüljenek (például az Adobe Flash beépülő modult használó webböngészők).
Csatlakoztatott eszközök előnyben részesítése a médiatípusokkal szemben
Alap analóg
Alap analóg (azaz RCA) kapcsolatok. Alapfelhasználói eset. A minőség a hangkártya DAC-től függ. Keressen magas SNR db szintű hangkártyát.
S/PDIF
Az S/PDIF jó minőségű hangot biztosít zenék, videók és DVD minőségű, Dobly/DTS tömörített jeleket tartalmazó filmek számára. Manapság a legtöbb hangkártya és alaplap rendelkezik valamilyen S/PDIF porttal. Manapság gyakrabban látni S/PDIF Toslink portokat az alaplapokon. Sok számítógépes játék tömörített Dolby/DTS jeleket biztosít.
S/PDIF digitális koaxiális
Az S/PDIF digitális koaxiálisnak problémái lehetnek a feszültség keresztbeszédével (voltage cross talk), de ez gyakoribb, mivel csak egy egyszerű mini jack csatlakozót vagy RCA koaxiális kábelt igényel.
S/PDIF optical (TOSLINK)
Az S/PDIF (TOSLINK) optikai kábel teljesen elkerüli az esetleges elektromos átbeszélést (electrical cross talk) vagy az interferenciát a kábelek között, mivel száloptikás, de hajlamos a jel romlására, ha maga a kábel túlságosan meggörbül. A nagyon jó hangminőséget kedvelő emberek hajlamosak előnyben részesíteni az ilyen típusú kábeleket.
HDMI
A HDMI (High-Definition Multimedia Interface), (nagy felbontású multimédiás interfész) kábel tömörített Dolby/DTS és tömörítetlen (azaz Blu-ray) Dolby/DTS jeleket képes továbbítani. Az audiopiac előnyben részesítette ezt a csatlakozókat, de továbbra is megőrzi az S/PDIF csatlakozókat. Az egyik gond az, hogy a HDMI kábelek rézhuzalosak, ezáltal még mindig érzékenyek az elektromos áthallásra vagy interferenciára, hasonlóan az S/PDIF digitális koaxiális csatlakozásokhoz.
Gyártanak HDMI optikai kábeleket is, de ezek általában túl drágák a fogyasztói piac számára. Ha az jó minőségű audiókat kedvelő felhasználók rendelkeznek S/PDIF optikai porttal, akkor az S/PDIF csatlakozókat más médiákhoz használják, például zenéhez és DVD-filmekhez, míg a HDMI-t csak akkor használják, ha a tömörítetlen Dolby/DTS kódolású anyagok, például Blu-ray médiák feldolgozásához szükséges. Ismét az alapfelhasználó valószínűleg csak HDMI csatlakozást fog használni, elkerülve a konfigurációs fájlok megváltoztatásával járó felhajtást.
Konfiguráció
Keresse meg a digitális kimeneti eszközt:
user $
aplay --list-devices
Állítsa be az alábbi fájlt a kártya/eszköz szám használatához.
pcm.!spdif {
type hw
card 0
device 1
}
pcm.!default {
type plug
slave {
pcm "spdif"
}
}
# Share a single card with multiple applications
#pcm.!default {
# type plug
# slave.pcm "dmix:CARD=0,DEVICE=1,RATE=48000"
#}
A fentiek nem teszik lehetővé, hogy egynél több hangalkalmazásból, vagy egy hangkártyán egyszerre kettőnél több hangot játsszon le. Ennek a feladatnak a végrehajtása érdekében a hangokat a hangminőség enyhe romlásával újrakeverik. A legtöbb zenét hallgató ember ezt inkább nem engedi meg a megszakítások és a hangminőség csökkenése miatt. Azonban azok számára, akik vágynak erre, azoknak a fentebb ki kommentezett kódrészlet éri ezt el.
Hangfájlok lejátszásakor az aplay használatával a lejátszás eleje le lesz vágva, mert a digitális S/PDIF vagy HDMI kapcsolat nincs nyitva, és minden hangfájl lejátszásakor el kell indítani. A Micro$oft Window$ észreveszi, és nyitva tartja a vevőegységet vagy a DAC-t, és lejátszás közben újrakeveri a médiát.
A/52, AC3, Dolby, DTS
Az S/PDIF kimenetet biztosító hangkártyák veszteségesen tömörített többcsatornás hangot is fel tudják dolgozni. Az én hallásom szerint a nagy bitsebességű tömörített adathordozó csekély veszteséggel jár a kétcsatornás CD vagy DVD hanghoz képest. Feltételezem, hogy ez azért van, mert manapság már többcsatornás érzetű és több hangszórót használunk egyszerre. Tehát minél több hardver, annál ekvivalensebb vagy jobb hangzású?
Ha a hangkártya azt állítja, hogy rendelkezik S/PDIF-vel, akkor valószínűleg átmegy a Dolby-n vagy a DTS-en, még akkor is, ha nem mutat kifejezetten Dolby vagy DTS ikont, vagy nem szerepel a szolgáltatásai között. Ez azért van, mert amikor Dolby-t vagy DTS-t listáznak, akkor szoftvert biztosítanak a keveréshez, vagy a dekódolt jelet analóg kimeneten keresztül biztosítják.
A HDMI át fog menni a tömörítetlen többcsatornás hangon, de a videó feed a HDMI specifikációinak megfelelően be van kapcsolva. A DVD videóhoz és hanghoz képest nagyon csekély minőségi különbséget látok és hallok, ha van ilyen egyáltalán! Az egyetlen dolog, amit az S/PDIF Toslink és a HDMI között észrevettem, hogy a HDMI néhány wattal vagy 5 dB hangerőséggel felerősíti a jelet. (Szerintem ez a nagyobb bitsebesség miatt van).
Mint ilyen, az S/PDIF még ma is elég népszerű.
S/PDIF vagy HDMI kapcsolat szükséges a fejlett kódolások áthaladásához. Az analóg csatlakozók (RCA és minijack) nem támogatnak semmilyen fejlett kódolást.
A Dolby vagy DTS dekódoláshoz vagy kódolásához licenc szükséges. Ha már vásárolt hangkártyát ezzel a többcsatornás támogatással, akkor valószínűleg már rendelkezik licenccel. Tekintse meg ezt a cikket további információkért.
Az ALSA media-plugins/alsa-plugins csomag újrafordítást igényel, hogy tartalmazza az ffmpeg USE jelölőzászlót az A/52 (pcm.a52encode) beépülő modullal.
root #
USE="ffmpeg" emerge -q media-plugins/alsa-plugins
Dekódolás vagy lejátszás
Fordítsa újra az mplayer lejátszót vagy egy másik kedvenc szoftverlejátszót, hogy belefoglalja az ALSA könyvtárakat.
root #
USE="a52 dts" emerge -q media-video/mplayer
Adja hozzá a többcsatornás kodekeket az mplayer.conf fájlhoz, így a lejátszani próbált média először a hardveres áthárítás lehetőségét biztosította a lekeverés helyett.
ac=hwac3,hwdts,hwmpa,spdifac3,spdifeac3,spdifaac,spdifdts,spdifmpa,spdifthd,dts,ffaac,
Most már szinte bármilyen Dolby vagy DTS jelet át kell tudnia juttatni (és élvezni) az S/PDIF-en keresztül a vevőhöz.
Átkódolás A/52 formátumba
Kétcsatornás hang keverése A/52 többcsatornás hangfolyammá
A/52 kódolt hang szimulálásához normál egy vagy kétcsatornás hangfolyamokból vagy fájlokból, az ALSA képes felkeverni az A/52 bővítmény segítségével. (Az a/52 ac-3 vagy dolby digitális kódolásként is ismert.)
A/52-es keverés előnyben részesítendő számítógépes játékokhoz vagy Dolby/DTS kódolású anyagok, például régebbi filmek nélküli videók nézéséhez. Sok hangkártya-gyártó olyan funkcióval látja el alkalmazásait, amely szoftveresen Dolby Digital-ra keveri, és javasolja, hogy engedélyezze ezt a felkeverést, ha ilyen médiát hallgat, kivéve a zenét.
Az A/52-re való felkeverést az jó minőséget szerető emberek rosszallják. Mint ilyen, a felhasználó előnyben részesíti, hogy az összes hangot A/52-be keverje, mielőtt a streamet elküldi a fogyasztói sztereó vevőkészülékre vagy DAC-re. Ami azt illeti, az audiorajongók jobban szeretik az egyszerű sztereót, és a további állapotú sztereó még mindig jobb minőségű, mint a Dolby/DTS anyagok vagy más trükkökkel kódolt hang. Ezenkívül a fogyasztói sztereó vagy DAC valószínűleg tartalmaz egy funkciót a hang ötcsatornás hanggá keverésére.
pcm.!default {
type plug:surroundaudio
}
ctl.!default {
type plug:surroundaudio
}
pcm.a52encode {
type a52
format S16_LE
channels 6
rate 48000
bitrate 448
}
pcm.surroundaudio a52encode
ctl.surroundaudio {
type hw
card 0
device 1
}
user $
speaker-test -Dsurroundaudio -c 6
PCM 5.1 24 bites hang kódolása A/52 16 bites hangfolyamba (S/PDIF-en keresztül történő streameléshez)
Más néven a PCM 5.1 audio stream kódolása tömörített Dolby Digital adatfolyamba az S/PDIF feletti lejátszáshoz. Ha HDMI-t használ, akkor nem igazán szükséges ezt használnia, mivel a HDMI képes kezelni a PCM 5.1 hangfolyam sávszélességét. Állítólag az S/PDIF Toslink-et is frissítették, de a legtöbb hardvert még nem frissítették az új specifikációkhoz, és egyesek kétségesek, hogy ez valaha is megtörténik.
Valamiért az előző .asoundrc szakasz nem működik a PCM 5.1-es adatfolyamokkal. Egy másik probléma, amibe belefutottam a 24 bites PCM 5.1 audio streamekkel, hogy ezek lekeverést igényelnek S24_LE-ről S16_LE bites formátumra. Ennek oka, hogy a 24 bites formátum a legtöbb média számára általános, azonban a vevőkészülékek néha csak a 16 vagy 32 bites hangot képesek dekódolni. Továbbá az S/PDIF csak 16 bites hangot tud kezelni, ha többcsatornás formátumba, például A/52-be kódol, egyelőre az S/PDIF Toslink hardverspecifikációinak frissítéséig.
A következő .asoundrc kivonat egy PCM 5.1 24 bites adatfolyamot 16 bites A/52 adatfolyamba kódol az S/PDIF-en keresztüli adatfolyamhoz.
#####
# Description: This will make it possible to use a52 with PulseAudio out of
# the box. It may be useful for other use cases. Just include
# this in the ~/.asoundrc file.
pcm.a52 {
@args [ CARD ]
@args.CARD {
type string
default 0
}
type plug
slave {
pcm {
type a52
card $CARD
bitrate 640 # Default 448
}
# Convert to S16 bit format, per SPDIF spec
format S16_LE # Required for current S/PDIF spec
}
}
user $
aplay -D pcm.a52 /home/me/Music/Led_Zeppelin/Celegration_Day/PCM51-24bit/*.wav
Hang klónozása 2 vagy több eszközhöz
Néha szükség van a hang klónozására (például 2 klónozott képernyő használata különböző bemenetekkel (első képernyő HDMI és második képernyő DVI + Analóg hang)). Ez egy egyszerű szkript, amelyet globális vagy helyi konfigurációként használhat 2 (vagy több) klón csatornához. a rendszeréhez kell igazítania a kommentált sorok alatti sorokat. További információkat a szkript szerzőjétől és a fórumbeszélgetésről itt olvashat.
ctl.!default {
type hw
# Set your default card
card 0
}
pcm.!default both
pcm.both {
type softvol
slave {
pcm {
type plug
slave {
pcm {
type route
slave {
pcm {
type multi
slaves.a.pcm {
type dmix
ipc_key 2589455
ipc_perm 0666
slave {
pcm {
# Add the default card - change to suit your sound card #1
type hw
card 0
device 0
}
buffer_size 4096
channels 2
}
}
slaves.b.pcm {
type dmix
ipc_key 4855689
ipc_perm 0666
slave {
pcm {
# Add the slave sound card - change to suit your sound card #2
type hw
card 1
device 7
}
buffer_size 4096
channels 2
}
}
slaves.a.channels 2
slaves.b.channels 2
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
}
}
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
}
}
}
}
control {
# Define volume control name
name PCM
# Set to the Default card
card 0
}
JACK audio csatlakozókészlet
Lehetőség van a JACK és az ALSA összekapcsolására. Az cikk írásának időpontjában úgy látszik, hogy a legjobb megoldás az snd-loopback modulon és a jack ALSA pluginon keresztüli összekapcsolás. Tekintse meg a JACK#ALSA, ALSA és a JACK összekapcsolása leírást. Továbbá, JACK — describes the setup of a playing sound with JACK (JACK Audio Connection Kit)..
A következőkben a JACK általános bemutatása következik, egyes részei elavultak lehetnek.
A jack egy további réteget biztosít az amúgy is alacsony késleltetésű ALSA illesztőprogramokhoz és alkalmazásokhoz, továbbá garantálja az állandó hangkésleltetést és az összes kliens szinkron működését. A jack egyszerre csak egy hangkártyát használhat, és külön kimeneteket és bemeneteket biztosít a hangkártya minden egyes audiocsatornájához. A jack emellett lehetővé teszi az audio streamek megtekintését, manipulálását vagy csővezetékét, mind a hardveres, mind a szoftveres adatfolyamokat, hasonló módon kábeleket használunk a különböző audioberendezések interfészére. Például a JAMin le tudja hallgatni az audio streamet, mielőtt exportálná a streamet egy másik audioalkalmazásba és/vagy analóg vagy S/PDIF kimeneteken keresztül. A Jack felhasználó tulajdonában lévő szolgáltatás általában a qjackctl használatával indul. A qjackctl segédprogram számos más funkciót is biztosít, beleértve az audio stream csatlakozásokat.
Amit a Jack nem csinál, az A/52 kódolású (AC-3 vagy Dolby/DTS) anyagok kezelése a bemeneten. Ez csak egy hangszerver, amely az audio folyamok elkülönített csatornáival foglalkozik. Képes egyidejűleg és szinkronban csatlakoztatni bármilyen kimeneti adatfolyamot bármely bemeneten, és bármilyen bemenetet bármilyen kimeneti adatfolyamhoz, bármilyen hardver és szoftver audiokomponensen, és állandó késleltetéssel. Ez teszi a JACK-et kiváló eszközzé hanggyártáshoz és -alkotáshoz. Az ac3jack eszköz több különálló audiocsatorna kódolására használható AC-3 folyamokká.
A/52 kódolású média lejátszásakor a lejátszó annyi kimenetet kér a JACK aljzatból, mint ahány audio csatorna a médiában. Ez meghiúsul, ha a hangkártyád nem rendelkezik a kívánt mennyiségű hangkimenettel, de egyébként rendben lesz. Például Ön használhatja az mplayer lejátszót a szokásos módon, és beállíthatja úgy, hogy 5.1-es adatfolyamot adjon ki 7.1-es kimeneti konfiguráción, vagy 7.1-es adatfolyamot 2 csatornás sztereó kimeneten is csinálhat.
Az egyik megoldás a kernel és az ALSA konfigurálása a Jack telepítési utasításai szerint, hogy alacsony késleltetésű hangot biztosítson. Mivel az ALSA állítólag már nagyon hatékony és alacsony késleltetésű, nagyon jó minőségű lejátszást biztosít további keverés nélkül, ha az .asoundrc fájlban szerepel, az M$ Window$-tól eltérően a legtöbb esetben valószínűleg nincs szükség Jack-ra. A JACK fő közönsége hangproducerek és zenészek (stúdióban, élő előadások, DJ, ...). a proaudio-gentoo átfedés az eselect szoftvertárolóval érhető el.
A zita-ajbridge-t használó régebbi megoldásokért tekintse meg a Using an ALSA Loopback device and zita-ajbridge a ProAudio Gentoo Wikin átfedést.
A zita-ajbridge használatával további valódi hangkártyák is hozzáadhatók a JACK-be. (Példa szükséges).
Aki ki akarja próbálni a JACK-et, annak egy dolgot tudnia kell: valós idejű kernelre és rt műveletekre csak akkor lesz szüksége, ha digitális audio munkaállomást (DAW) szeretne készíteni a számítógépével, amihez olyasmire van szükség, amit a pulseaudio nem képes elérni: állandó hanglatencia alacsony vagy 20 msec alatti (az impulzushang egyáltalán nem képes állandó hanglatenciát biztosítani), és szinkron műveletek. A JACK a pulseaudio alternatívája is lehet a professzionális megoldást kereső felhasználók számára, lásd a JACK#ALSA - alsa és jack összekapcsolása leírást.
Remélhetőleg ez a kis rövid szakasz a Jack-ről gyors betekintést ad a Jack jellemzőibe, miközben a Jack részleteit egy kifejezetten a Jack-re összpontosító Wiki oldalra tartjuk fenn.
Addig is vessen egy pillantást a Pro-Audio Gentoo átfedés Wiki oldalra.
Jogosultságok
Ha az acl
USE jelölőzászló globálisan van engedélyezve, és bejelentkezési szolgáltatás (pl. systemd-logind vagy elogind) van használatban (azaz a rendszer desktop profilt használ), akkor a hangkártyákhoz tartozó engedélyeket a rendszer automatikusan kezeli. Az engedélyek a getfacl segítségével ellenőrizhetők:
user $
getfacl /dev/snd/controlC0 | grep larry
user:larry:rw-
Egy tágabb megoldás, ha a hangkártyához hozzáférni kívánt felhasználót hozzáadjuk az audio csoporthoz:
root #
gpasswd -a larry audio
user $
grep audio /etc/group
audio::18:larry
Önnek ki kell jelentkeznie, majd újra be kell jelentkeznie annak érdekében, hogy az alsamixer működjön, különben az alsamixer parancs futtatása a "Nem lehet megnyitni a mixert: Nincs ilyen fájl vagy könyvtár" hibát fogja adni.
Szolgáltatás
OpenRC
Ha OpenRC-t használ, indítsa el az ALSA-t most a service paranccsal:
root #
rc-service alsasound start
Annak érdekében, hogy az ALSA elinduljon rendszerindításkor, adja hozzá a rendszerindítási futási szinthez a rc-update segítségével:
root #
rc-update add alsasound boot
systemd
Ha a systemd-t használja, az ALSA állapot megmarad, és automatikusan visszaáll a rendszer újraindításakor.
Az ALSA állapota a systemctl paranccsal ellenőrizhető:
root #
systemctl status alsa-restore
Hangkeverő
Ha nem hall semmit akkor, lehetséges, hogy a kimeneti csatornák le vannak némítva. Kérjük, oldja fel a csatornák némítását az asztali környezet keverőjével vagy a alsamixer segítségével úgy, hogy kiválasztja a megfelelő csatornákat, és megnyomja a M billentyűzet gombját a némításhoz vagy a némítás feloldásához:
user $
alsamixer
Használat
Hangszórók tesztelése
Ha minden fenti leírás Önnél tökéletes, akkor most már képesnek kell lennie a hangkártya és a hangszórók tesztelésére. Használja a speaker-test parancssori eszközt a media-sound/alsa-utils csomagból. (Ezt már telepíteni kell az előző javaslat szerint).
user $
speaker-test -t wav -c 2
Az 5.1-es térhatású hangrendszert használó konfigurációkhoz:
user $
speaker-test -t wav -c 6 -D surround51
A teszt megszakításához nyomja meg a Ctrl+C billentyűzet gombokat egyszerre.
Mikrofon tesztelése
Ha szükséges, akkor válassza ki az audioeszközt, ha nincs megadva alapértelmezett, és adja hozzá a --device=hw:0,0
értéket az arecord parancshoz, helyettesítve a CardNumber-t és az DeviceNumber-t az hw után.
Az alábbiakban felsoroljuk a lehetséges eszközöket.
user $
arecord --list-devices
Előfordulhat, hogy fel kell oldania a vonal vagy a mikrofoncsatorna némítását. Parancssorban nyissa meg az alsamixer eszközt, és először válassza ki a hangkártyát (azaz F6 gomb a billentyűzeten), majd nyomja meg az F4 gombot a Capture Channels megjelenítéséhez. Billentyűzeten a "bal/jobb" nyilakkal válassza ki a "Mikrofon"-t, és nyomja meg a Szóköz gombot a RÖGZÍTÉS ki/be kapcsolásához.
A következő parancs kiadása korlátlan ideig rögzíti a hangot, amíg Ön le nem nyomja a CTRL+C billentyűkombinációt. Alapértelmezetten 8 kHz, mono minőségű felvételt fog létrehozni:
user $
arecord /tmp/test.wav
A következő parancs kettő másodpercig (--duration=2) rögzíti a hangot DAT 48 kHz frekvenciájú minőségben (--format=dat
). Sztereóban jeleníti meg a curses vu métert (--vumeter= stereo
), és a /tmp/test.wav útvonalba menti el a fájlt.
user $
arecord --channels=1 --duration=2 --format=dat --vumeter=stereo /tmp/test.wav
Vagy opcionálisan:
# Simple convenience wrapper to record then play back a temporary sound file.
# Usage: arecord-mic duration
function arecord-mic {
[[ $1 == *[![:digit:]]* ]] || return
typeset tmpFile
tmpFile=$(mktemp --suffix .wav) || return
typeset -a arecordOpts=(
-c 1 # number of channels
-D plughw:0,0 # device name
-d "$1" # duration
-f S32_LE # format
-r 48000 # sample rate
-V mono # VU meter type
)
arecord "${arecordOpts[@]}" -- "$tmpFile" && aplay -- "$tmpFile"
rm -f -- "$tmpFile"
}
Megjegyzés: Az arecord nem tud rögzíteni S24_LE formátumban. S16_LE vagy S32_LE formátumban képes rögzíteni. Az emberi fül esetében a 24 bitnél (S24_LE) vagy 48 kHz frekvenciánál nagyobb hangfelbontások megkülönböztethetetlenek az emberi fül számára. Referencia mintavétel (jelfeldolgozás) Wikipédia, hangmintavétel. A felhasználóknak meg kell adniuk a channels=1 értéket is, mivel minden felvétel mono hangban történik, ha általában a mikrofonbemenetet használják, kivéve, ha a felvételek sztereó vonalbemenetet használnak. Annak érdekében, hogy az arecord parancsot mono vagy csak egy csatorna rögzítésére ösztönözzük, a device=plughw:0,0 használata tovább van meghatározva. (Egy gyakori problémát enyhíti, ha a mikrofon visszajátszása csak a jobb vagy a bal csatornán történik).
Az mplayer vagy a aplay használatával játssza le a mentett fájlt. Én általában "dat" vagy legalább "cd" minőségű formátumban rögzítek. A DAT a legjobb a benchmarking során.
Tippek
Próbálja ki a PaulBredbury's asoundrc file található számos konfigurációs lehetőség egyikét.
Hibaelhárítás
A Firefox-nak, a Chromium-nak és a YouTube-nak nincs hangja az egyéni .asoundrc fájllal, de más alkalmazásokban van hang
A böngészők időnként válogatósak az ~/.asoundrc beállításait illetően. Ha az alapértelmezett audioeszközt adja meg (valószínűleg, mivel manapság a legtöbb számítógép rendelkezik HDMI A/V kimenettel, és az analóg és a HDMI audiokimenet két külön hangkártyaként jelenik meg), akkor próbálja meg ezt konkrétan a következőképpen:
defaults.pcm.card <number of your default sound card>
defaults.ctl.card <default sound card>
A Firefox az 52-es verziója óta a kemény követelményként tette meg a PulseAudioj-t, és megszüntette az ALSA közvetlen kimenetének támogatását. A hang engedélyezéséhez a Firefox ezen verzióiban engedélyezze a
pulseaudio
USE jelölőzászlót. Tekintse meg a PulseAudio követelmény megszakítja a Firefox-ot a csak ALSA-t futtató rendszereken leírást. Ez a korlátozás nem érinti a forrásokból (www-client/firefox) épített FireFox-ot (csak az 52-es verzió). A Chromium sem mentes a problémától. Mindkét böngésző vagy a pulseaudio függvénye a megfelelő mintavételezési gyakoriság beállításához, vagy pulseaudio hiányában 48 kHz-re állítja be a mintavételezési frekvenciát, mint de facto szabvány a hangkártyák világában. Tehát ha 96 kHz mintavételezési frekvenciája van, akkor csökkentse 48 kHz-re, és a hang ismét működni fog.Hangkártya csak egy alkalmazáshoz érhető el
Néha egy alkalmazás lényegében átveszi az összes hangeszközt. ez akár teljesítmény miatt is lehet.
Kényszerítse a dmix használatát a közvetlen hangkimenet helyett (ezt a legtöbb dolog alapértelmezés szerint használja, mint például az Adobe Flash [ami valójában a böngészőt jelenti] és a wine).
Ha az eszköz az 1. kártya és a 7. eszköz (ez nálam az Nvidia HDMI esetében):
pcm.dmixed {
type asym
playback.pcm {
type dmix
ipc_key 5678293
ipc_perm 0660
ipc_gid audio
slave {
channels 2 # Make 6 or 5.1 channel
pcm {
format S16_LE # S32_LE
rate 48000 # Can also be 44100
type hw
card 1 # Your card
device 7 # Your device
subdevice 0 # Important?
}
period_size 1024
buffer_size 8192
}
bindings {
0 0
1 1
# Uncomment below if using 6 channel
# 2 2
# 3 3
# 4 4
# 5 5
}
}
capture.pcm "hw:0"
}
pcm.!default {
type plug
slave.pcm "dmixed"
}
A ~/.asoundrc használata azonnali, és mindaddig, amíg nem kényszeríti az adott eszközök használatát egyetlen alkalmazásban sem, újra kell indítani, vagy azonnal működni fognak. az egyik legjobb teszt a Chrome futtatása, a YouTube megnyitása, egy terminál megnyitása, az mplayer futtatása hang- vagy videofájllal, és megbizonyosodhat arról, hogy nem kap hibaüzenetet a hanggal kapcsolatban (ilyen hiba lehet az 'eszköz vagy erőforrás foglalt').
Hiányzó párbeszéd hangok a 4.0 hangszóróval
Ha 4.0-s hangkártyát (például egy régi SB Live!) vagy általában 4.0-s hangszórót használ, akkor észreveheti, hogy egyes játékokban vagy filmekben a párbeszédek nagyon halkak, vagy akár hiányoznak is. Ennek az az oka, hogy a legtöbb alkalmazás/film csak a 2.0 (sztereó) vagy az 5.1 kimenetet támogatja. A térhatású hang elérése érdekében az 5.1-es hangsávot használják, de a két felesleges csatornát – a középső csatornát (amely általában párbeszédeket hordoz) és a mélynyomó csatornát – el van hagyva.
A fenti probléma megkerülhető egy virtuális eszköz létrehozásával, amely lekeveri az 5.1-et 4.0-ra, keverve a középső és a mélysugárzó csatornáit más audiocsatornákkal.
pcm.downmix {
type route
slave {
# The sound card output to be used
pcm surround40
# Real number of output channels
channels 4
}
# ttable.A.B G
# where A - input channel
# B - output channel
# G - volume gain (1.0 = original)
# Copy channels 0-3
ttable.0.0 1
ttable.1.1 1
ttable.2.2 1
ttable.3.3 1
# Mix channel 4 (center) into front speakers, and a bit (0.3) into rear ones
ttable.4.0 1.0
ttable.4.1 1.0
ttable.4.2 0.3
ttable.4.3 0.3
# Mix channel 5 (subwoofer) mostly (0.6) into rear speakers, and a bit (0.3) into front ones
ttable.5.0 0.3
ttable.5.1 0.3
ttable.5.2 0.6
ttable.5.3 0.6
}
ctl.downmix {
type hw
card 0
}
HDMI/SPDIF 5.1 és 7.1 hangszórók tesztelése
Ki van jelentve, hogy az ALSA hangszóróteszt segédprogram nem tesztel több mint kétcsatornás hangot HDMI-n vagy SPDIF-en keresztül. Ehhez az mplayert kell használnod, az ALSA dokumentációból idézve.
Töltsön le egy 5.1 csatornás (FLAC) vagy 7.1 csatornás (FLAC) hangszóróteszt fájlt:
A mellékelt hangfájl lejátszása: meghatározza a HDMI vagy SPDIF eszközt, a PCM fájlt és a csatornák számát, amely valószínűleg vagy 6 (5.1-es héthatású hang esetén), vagy 8 (7.1-csatornás tárhatású hang esetén).
Az 5.1-es csatorna tesztelése az mplayer segítségével:
user $
mplayer -channels 6 "/path/to/downloaded/flac_file.flac" -channels 6
7.1-es csatorna teszteléséhez:
user $
mplayer -channels 8 "/path/to/downloaded/flac_file.flac" -channels 8
Azért, hogy a nem alapértelmezett eszközzel tesztelése a mplayer lejátszót, adja át a kiegészítő
-ao alsa:device=hw=0.7
opciót, ahol a hw=
érték a megfelelő hangeszközhöz van igazítva.Vagy teszteljen a VLC media player lejátszóval:
user $
cvlc /path/to/downloaded/flac_file.flac
az APlay SPDIF/HDMI kimenetén nem megfelelő hangszóró csatornák vannak
Most, hogy tudja hogy, miként kell az MPlayer segítségével lejátszani egy hangszórótesztet PCM WAV fájllal a fenti "HDMI/SPDIF 5.1 és 7.1 hangszóróteszt" szerint, most azt tapasztalja, hogy az APlay nem adja ki megfelelően a hangszórócsatornákat SPDIF/HDMI használatakor. HDMI esetén ezt valószínűleg az snd_hda_intel HDMI audio modul/illesztőprogram okozza, amelyet más gyártók is használnak. Például az NVidia HDMI, az Intel HDMI hardverén kívül. Hogy az MPlayer miért használja a megfelelő csatornákat, az MPlayer általában folyamatos fejlesztés alatt áll, és manuálisan kijavítja ezt a problémát?
Egy másik probléma, amelyre ez a megoldás vonatkozik az, hogy 24 bites PCM 2.0 vagy PCM 5.1 WAV fájlokat próbál lejátszani, és az APlay állandóan megtagadja a stream lejátszását, helytelen bitsebesség stb. miatt.
Ennek az ALSA (APlay) esetében a PCM folyamok minimális módosításával történő javításához újra kell képeznünk a hangszórócsatornákat egy ${HOME}/.asoundrc fájlban. Adja hozzá a következőket a ${HOME}/.asoundrc fájl aljához. Vegye figyelembe azt is, hogy az alábbi konfiguráció az 5.1-es és a 7.1-es hangra is vonatkozik, vagy tovább leképezheti/másolhatja a két extra csatornát az 5.1-es csatornákra, ha nem szeretné kihagyni a hangot egy 7.1-es adatfolyamból.
pcm.myHDMI {
type plug
slave {
pcm "hw:1,7"
format S32_LE
channels 6
}
ttable {
0.0= 1
1.1= 1
2.4= 1
3.5= 1
4.2= 1
5.3= 1
6.6= 1
7.7= 1
}
}
It seems that most HDMI to Stereo Receiver connections only stream 16 and 32 bit formats, skipping 24 bit. The above configuration up-mixes any PCM stream to 32 bit when using the pcm.myHDMI profile, as it is quite common to see PCM 2.0 and 5.1 24 bit audio files. It just doesn't seem right to down-mix everything to 16 bit, or use Float as the latter uses more processing power. (Users can also set an alias within their bashrc file for 16 bit or 24 bit incantations as well.)
Tesztelje a hangsugárzók útválasztását egy surround teszt PCM fájl segítségével. (Tekintse meg a fent említett "8 csatornás hangszórótesztet".)
user $
aplay -D my.HDMI 8Channel.wav
Gyenge középső csatorna a PCM 5.1 élőzene hallgatásakor
Ha többcsatornás hangsávja vagy látszólag gyenge középső csatornával rendelkező zenéje van, és a hangsáv élő felvétel, akkor lehetőség van a középső csatorna leképezésére a hátsó csatornákra. Vegye figyelembe, az élő felvételeken a hátsó csatornák általában csak a nagyon kevés zenével sikoltozó közönséget tartalmazzák.
Az mplayer következő varázslata határozza meg: A hw:1.7-es HDMI eszköze, a PCM 5.1-es fájl, a csatornák száma, a formátum (nem szükséges, ha a vevő natívan képes kezelni a 24 bitet, és az én esetemben fel kell kevernem, mivel a yamaha HDMI vevőm natívan csak 16 vagy 32-t képes kezelni bit hang), majd a leképezést. Feltérképezés az alábbiak szerint: Adja meg, hogy ez egy 6 csatornás hangfolyam, közvetlenül utána 6 leképezéssel, bal első csatorna másolása bal hangszóróba, jobb csatorna másolása jobb hangszóróba, középső csatorna másolása bal hátsó hangszóróba, középső csatorna másolása jobb hátsó hangszóróba, középső csatorna másolása középső hangsugárzót, végül másolja át a mélysugárzó csatornáját a mélysugárzó hangszórójára.
user $
mplayer -ao alsa:device=hw=1.7 Music/MyAlbum/PCM51-24bit/01.MyMusic.wav -channels 6 -format s32le -af channels=6:6:0:0:1:1:4:2:4:3:4:4:5:5
Nézze meg az MPlayer csatorna manipulációját.
Részletesebb információkat szeretne látni folyamonként az ALSA stream -ről?
Ha részletesen meg kell néznie hogy, miként csatlakozik a program az ALSA-hoz, használja a /proc felületet. Ki kell cserélnie a vonatkozó kártya/eszköz adatait az alábbi parancsban.
Látnia kell egy dump-ot a programmal kapcsolatos információkról és hasznos dolgokról, mint például a mintavételi arány (rate) és a PID (owner_pid).
user $
cat /proc/asound/card2/pcm0p/sub0/*
access: RW_INTERLEAVED format: S16_LE subformat: STD channels: 2 rate: 44100 (44100/1) period_size: 5513 buffer_size: 22050 card: 2 device: 0 subdevice: 0 stream: PLAYBACK id: USB Audio name: USB Audio subname: subdevice #0 class: 0 subclass: 0 subdevices_count: 1 subdevices_avail: 0 state: RUNNING owner_pid : 934 trigger_time: 86393.193574796 tstamp : 86540.250594985 delay : 17714 avail : 4602 avail_max : 7379 ----- hw_ptr : 6485052 appl_ptr : 6502500 tstamp_mode: NONE period_step: 1 avail_min: 5513 start_threshold: 2147483647 stop_threshold: 22050 silence_threshold: 0 silence_size: 0 boundary: 6206523236469964800
HTML5 nem játszik hangot a böngészőben
Ha nincs hang egyetlen használt böngészőben (Firefox, SeaMonkey, Otter Browser, stb.) és az ALSA általában működik, akkor van egy kerülő megoldás, amely megoldhatja ezt a problémát: Próbálja meg eltávolítani az /etc/asound.conf fájl.
root #
mv /etc/asound.conf /etc/asound.conf.old
Indítsa újra a böngészőt, és tesztelje a hangkimenetet a HTML5-re. Lehet, hogy a megoldás alkalmazása után most működik a hanglejátszás.
A HTML5 nem játszik le a Firefox böngészőben
Egyes rendszeralaplapok miatt (i.e. Asus Z87-EXPERT) a 0-ás kártya MID-eszköz PCM-eszköz helyett. Ugyanazt az snd_hda_intel illesztőprogram-modult használják ezen az alaplapon a MID és a PCM kártyákhoz is. Valamiért a Firefox HTML 5 az snd_hda_intel Card 0 -t igényli snd_hda_intel-nél, akárhogyan is változtatod az asoundrc-vel. Az asoundrc fájl segítségével a gyorsan működésbe hozhatja, de a HTML 5 hang néma.
A PCM eszközt újra kell képeznie Linux alatt 0-s kártyaként, és el kell távolítania az asoundrc módosításait, amelyek a flash működéséhez lettek hozzáadva. Ez a wiki oldal azt jelzi, hogy le kell Önnek le kell fordítania az snd_hda_intel illesztőprogramot a kernelbe. Ennek a konfigurációnak a használatával újra kell képeznie a 0. és 1. kártya eszközöket az /etc/modprobe.d/alsa.conf fájl helyett a rendszerindítási paraméterek használatával. Például a következő kernel parancssori opció felcseréli a MID és a PCM kártya indexeit, így az alapértelmezett 0 kártya a PCM kártya:
snd-hda-intel.index=1,0
A modul neve snd_hda_intel, de a boot paraméter neve snd-hda-intel.
HDMI hangkimenettel rendelkező laptopok
Egyes HDMI hangkimenettel rendelkező laptopok a /proc/asound/card0 fájlt HDMI-ként képezik le, és ezért alapértelmezett kimeneti eszközzé teszik az alkalmazásokhoz, ahogy azt fentebb a Firefox szakaszban leírtuk. Az újra leképezés másik módja, ha ezt a két sort hozzáadjuk az /etc/modprobe.d/alsa.conf fájlhoz.
# Set this to the correct number of cards.
options snd cards_limit=2
options snd-hda-intel index=1,0
Ellenőrizze a sorrend módosítását ennek a parancsnak az ellenőrzésével:
user $
cat /proc/asound/cards
0 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xf2534000 irq 45 1 [HDMI ]: HDA-Intel - HDA Intel HDMI HDA Intel HDMI at 0xf2530000 irq 46
Ez a módszer csak akkor működik, ha az snd-hda-intel nem beépített modulként van fordítva.
IPC szemafor - a funkció nincs implementálva
Ha megpróbálja lefuttatni a teszteljárást, és a speaker-test hibát ad vissza egy olyan IPC szemafor függvényről, amely nincs implementálva, akkor ezt a lehetőséget aktiválni kell a kernelben:
General setup --->
[*] System V IPC
A fejhallgató csatlakozója nem működik
Néha a fejhallgató csatlakozójának működéséhez további modellinformációkra van szükség az audio-illesztőprogramhoz. például egy snd-hda-intel illesztőprogrammal rendelkező Dell Latitude E7470 laptop esetén ezt hozzá kell adni a /etc/modprobe.d/alsa.conf fájlhoz:
options snd-hda-intel model=headset-mic
További beállítási információk a linux kernel dokumentációjában találhatók: Documentation/sound/hd-audio/models.rst.
Állapot visszaállítja az udev/alsactl hibákat rendszerindításkor
Particionálás, titkosítás vagy megosztott /usr rendszer miatt ezek a hibák jelenhetnek meg rendszerindításkor:
root #
journalctl -b | grep alsa
(udev-worker)[2594]: controlC2: Process '/usr/sbin/alsactl restore 2' failed with exit code 2. (udev-worker)[2611]: controlC0: Process '/usr/sbin/alsactl restore 0' failed with exit code 2. (udev-worker)[2579]: controlC1: Process '/usr/sbin/alsactl restore 1' failed with exit code 2.
A probléma megoldásához adja hozzá a TEST=="@sbindir@/alsactl"
kifejezést a fájl következő soraihoz, így:
TEST!="/etc/alsa/state-daemon.conf", TEST=="@sbindir@/alsactl", RUN+="/usr/sbin/alsactl restore $attr{device/number}"
TEST=="/etc/alsa/state-daemon.conf", TEST=="@sbindir@/alsactl", RUN+="/usr/sbin/alsactl nrestore $attr{device/number}"
Tekintse meg ezeket a hivatkozásokat a további részletekért és a vitáért.[1][2]
További olvasnivaló a témában
- Power management/Soundcard — describes the setup of power management of sound devices.
- PulseAudio — a multi-platform, open source, sound server that provides a number of features on top of the low-level audio interface ALSA
- Pipewire — low-latency, graph-based, processing engine and server, for interfacing with audio and video devices.
Külső források
- https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html - Official ALSA PCM (digital audio) plugin descriptions and configuration file examples.
- https://alsa.opensrc.org/MultipleCards - Alsa Opensrc Org support page for multiple sound cards configuration with examples.