ALSA

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page ALSA and the translation is 100% complete.


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

Important
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:

KERNEL
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:

KERNEL
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.

FILE ~/.asoundrc
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:

FILE ~/.asoundrc
defaults.pcm.!card Generic
defaults.pcm.!device 0
defaults.ctl.!card Generic
Warning
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.

Warning
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.

FILE ~/.asoundrc
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"
#}
Note
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.
Note
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ű.

Note
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.

FILE /etc/mplayer/mplayer.conf
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.

FILE ~/.asoundrc
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.

FILE ~/.asoundrc
#####
# 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.

FILE /etc/asound.conf
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
Warning
Ö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
Note
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:

FILE ~/.bashrc
# 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:

FILE ~/.asoundrc
defaults.pcm.card <number of your default sound card>
defaults.ctl.card <default sound card>
Note
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):

FILE ~/.asoundrc
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.

FILE ~/.asoundrc
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
Note
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.

FILE .asoundrc
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

Note
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.

FILE /etc/modprobe.d/alsa.conf
# 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:

KERNEL
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:

FILE /etc/modprobe.d/alsa.conf
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:

FILE /lib/udev/rules.d/90-alsa-restore.rules
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

Külső források

Hivatkozások