Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Czy ktoś mógłby mi pomóc rozwiązać zagadkę znaczenia nazw urządzeń w /dev/snd/ ? Dla przykładu, mój laptop ma coś takiego:
# ls -al /dev/snd total 0 drwxr-xr-x 3 root root 220 2018-11-04 11:02:40 ./ drwxr-xr-x 20 root root 3.8K 2018-11-05 05:56:58 ../ drwxr-xr-x 2 root root 60 2018-11-04 11:02:40 by-path/ crw-rw----+ 1 root audio 116, 7 2018-11-04 11:02:40 controlC0 crw-rw----+ 1 root audio 116, 5 2018-11-04 11:02:40 hwC0D0 crw-rw----+ 1 root audio 116, 6 2018-11-04 11:02:40 hwC0D3 crw-rw----+ 1 root audio 116, 3 2018-11-05 11:54:33 pcmC0D0c crw-rw----+ 1 root audio 116, 2 2018-11-05 14:06:26 pcmC0D0p crw-rw----+ 1 root audio 116, 4 2018-11-04 11:04:08 pcmC0D3p crw-rw----+ 1 root audio 116, 1 2018-11-04 11:02:39 seq crw-rw----+ 1 root audio 116, 33 2018-11-04 11:02:40 timer
Co oznaczają w skrócie te urządzenia? Czyli co się dzieje, gdy jakiś proces próbuje je odczytać lub zapisać (ewentualnie coś innego z nimi zrobić)? Z tego co póki co znalazłem, to C0, to card0, D0 to device0, no i chyba ten pcm z "c", to jest mikrofon? A pozostałe? xD
Offline
Co tu masz do nierozumienia?
mpv 22518 pacjent mem CHR 116,18 2259 /dev/snd/pcmC3D8p mpv 22518 pacjent 22r CHR 116,33 0t0 2183 /dev/snd/timer mpv 22518 pacjent 23u CHR 116,18 0t0 2259 /dev/snd/pcmC3D8p mate-sett 25859 pacjent 14u CHR 116,4 0t0 2188 /dev/snd/controlC0 mate-sett 25859 pacjent 15u CHR 116,9 0t0 2196 /dev/snd/controlC1 mate-sett 25859 pacjent 16u CHR 116,15 0t0 2239 /dev/snd/controlC2 mate-sett 25859 pacjent 17u CHR 116,20 0t0 2264 /dev/snd/controlC3 mate-volu 25943 pacjent 10u CHR 116,4 0t0 2188 /dev/snd/controlC0 mate-volu 25943 pacjent 11u CHR 116,9 0t0 2196 /dev/snd/controlC1 mate-volu 25943 pacjent 12u CHR 116,15 0t0 2239 /dev/snd/controlC2 mate-volu 25943 pacjent 13u CHR 116,20 0t0 2264 /dev/snd/controlC3
Po odpaleniu, MPV gada z timerem (potrzebne, dzięki temu wszystkie karty grają w jednym czasie, np kernel dostosowuje się z dźwiękiem do input_lagu ekranu).
W ten sposób nie ma efektu że strzelam, a odgłos wystrzału jest przez efektem na obrazie.
MPV posyła dźwięk przez cyfrowe wyjście HW 3:8 (HDMI), to też jest chyba zrozumiałe.
seq to sekwencer.
https://pl.wikipedia.org/wiki/Sekwencer_(muzyka)
Reszta to urządzenia in, out albo control kart.
W ten sposób sterowniki mapują interfejsy poszczególnych kart dźwiękowych.
Pozdro
Ostatnio edytowany przez Jacekalex (2018-11-05 16:36:16)
Offline
Co mam do rozumienia? No ostatnio chyba się coś zmieniło w zarządzaniu dźwiękiem i appki zaczęły żądać praw do niektórych z tych urządzeń i się zastanawiam dlaczego akurat teraz i czemu działały wcześniej, bo moja abstrakcja audio-strict nie miała żadnych urządzeń wypisanych. xD
To może tak:
-- co oznacza ta literka "p" na końcu w urządzeniach pcm? Jeśli dobrze rozumiem to "c" jest od "capture" a "p"? xD
-- czym się różni urządzenie hw od pcm?
-- czemu jest kilka pcm z "p", no bo jest jedno z "c", gdzieś indziej widziałem, że mieli kilka urządzeń pcm z "c"
-- za co odpowiada ten cały control?
Takie pytania mi przychodzą do głowy na teraz. xD
Ostatnio edytowany przez morfik (2018-11-05 16:54:41)
Offline
capture to mikrofon a p - play to do grania, tak to rozumiem.
Np karta HDMI Nvidia nie ma mikrofonu:
/dev/snd/controlC3 /dev/snd/hwC3D0 /dev/snd/pcmC3D3p /dev/snd/pcmC3D7p /dev/snd/pcmC3D8p
natomiast karta Intel owszem, ma takowe:
/dev/snd/controlC2 /dev/snd/hwC2D2 /dev/snd/pcmC2D0c /dev/snd/pcmC2D0p /dev/snd/pcmC2D1p /dev/snd/pcmC2D2c
Urządzenia /dev/snd/hw* to pewnie jakaś diagnostyka.
Ostatnio edytowany przez Jacekalex (2018-11-05 17:02:03)
Offline
RTFM:
https://www.tldp.org/HOWTO/Alsa-sound.html#toc6
https://www.tldp.org/HOWTO/Alsa-sound-6.html
Ostatnio edytowany przez Jacekalex (2018-11-05 17:10:37)
Offline
morfik napisał(-a):
Znalazłem ten artykuł ździebko wcześniej ale chyba tam nie ma tego info co szukam. xD
Jak gra,to chyba nie musisz zbyt wiele szukać...xD
Poza tym zawsze możesz wypakować źródełka kernela i zajrzeć do kodu modułów SND.
Masz tam też np:
/usr/src/linux/Documentation/sound/kernel-api
Ostatnio edytowany przez Jacekalex (2018-11-05 17:15:32)
Offline
Jeżeli Alsa to jakaś magia, to pobaw się Xorgiem. :D
Moim zdaniem alsa jest na tyle logiczna, na ile to możliwe, przy czym dysk ma jedną głowicę i kilka partycji, a karta dźwiękowa PCI ma dużo więcej portów komunikacyjnych,
które trzeba jakoś ponazywać.
Dodatkowo hw to tyle co sda, ale pcm to urządzenie dźwiękowe typu RAW.
W dyskach się takowych raczej nie używa.
Urządzenie control to są potencjometry (dyzie nie wiedzą, co to jest),
seq i timer już przemieliliśmy wcześniej.
Czego jeszcze nie wiesz?
Ostatnio edytowany przez Jacekalex (2018-11-05 17:27:38)
Offline
Znalazłem to:
https://alsa.opensrc.org/Proc_asound_documentation
A tam:
# cat /proc/asound/devices 2: [ 0- 0]: digital audio playback 3: [ 0- 0]: digital audio capture 4: [ 0- 3]: digital audio playback 5: [ 0- 0]: hardware dependent 6: [ 0- 3]: hardware dependent 7: [ 0] : control 33: : timer
No to pytanie czemu te numerki nie są po kolei? W sensie 0-0, 0-1 itd. tylko 0-3 jest następny. No i pewnie ten "hardware dependent" to jest to urządzenie z hw, cokolwiek ono oznacza. xD
Ok już wiem po co są dwa pcm
# cat /proc/asound/pcm 00-00: ALC270 Analog : ALC270 Analog : playback 1 : capture 1 00-03: HDMI 0 : HDMI 0 : playback 1
Czyli jeden jest od głośników w laptopie + mikrofon, a drugi jest od HDMI.
Ostatnio edytowany przez morfik (2018-11-05 17:29:34)
Offline
Bo to pewnie zależy od typu karty dźwiękowej, a to zależy, jak się Kitajcom udała dana karta.
~> cat /proc/asound/devices 1: : sequencer 2: [ 0- 0]: digital audio playback 3: [ 0- 0]: digital audio capture 4: [ 0] : control 5: [ 1- 0]: digital audio playback 6: [ 1- 0]: digital audio capture 7: [ 1- 1]: digital audio playback 8: [ 1- 1]: digital audio capture 9: [ 1] : control 10: [ 2- 0]: digital audio playback 11: [ 2- 0]: digital audio capture 12: [ 2- 1]: digital audio playback 13: [ 2- 2]: digital audio capture 14: [ 2- 2]: hardware dependent 15: [ 2] : control 16: [ 3- 3]: digital audio playback 17: [ 3- 7]: digital audio playback 18: [ 3- 8]: digital audio playback 19: [ 3- 0]: hardware dependent 20: [ 3] : control 33: : timer
U mnie się mniej więcej zgadzają numerki.
0 [Dummy ]: Dummy - Dummy Dummy 1 1 [Loopback ]: Loopback - Loopback Loopback 1 2 [Intel ]: HDA-Intel - HDA Intel HDA Intel at 0xf3420000 irq 26 3 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia at 0xf3000000 irq 17
Tylko dziwne w devices są te digital przy analogowych wyjściach.
W czasach cyfrowych i analogowych wyjść mogą być mocno mylące.
EDIT:
PCM u mnie:
00-00: Dummy PCM : Dummy PCM : playback 8 : capture 8 01-00: Loopback PCM : Loopback PCM : playback 8 : capture 8 01-01: Loopback PCM : Loopback PCM : playback 8 : capture 8 02-00: ALC262 Analog : ALC262 Analog : playback 1 : capture 1 02-01: ALC262 Digital : ALC262 Digital : playback 1 02-02: ALC262 Alt Analog : ALC262 Alt Analog : capture 2 03-03: HDMI 0 : HDMI 0 : playback 1 03-07: HDMI 1 : HDMI 1 : playback 1 03-08: HDMI 2 : HDMI 2 : playback 1
Pozdro
Ostatnio edytowany przez Jacekalex (2018-11-05 17:36:56)
Offline
No pewnie ten numerek jest jak ten z lspci, w sensie zależy od tego co tam w karcie siedzi i temu pokazuje tak a nie inaczej. xD
A takie pytanie jeszcze: linux może obsłużyć max 8 kart dźwiękowych?
Offline
morfik napisał(-a):
No pewnie ten numerek jest jak ten z lspci, w sensie zależy od tego co tam w karcie siedzi i temu pokazuje tak a nie inaczej. xD
A takie pytanie jeszcze: linux może obsłużyć max 8 kart dźwiękowych?
Tu już zapytaj na LKML albo jakiejś liście Alsy.
Nie widziałem w życiu kompa, w którym byłoby więcej niż 6 kart dźwiękowych,
więc trudno mi się wypowiedzieć w tej kwestii.
Jak przypadkowo w domu miałem łącznie 6 kart dźwiękowych, to nic nie wybuchło.
Tutaj coś piszą,ze to zależy od numerologii 32 albo 64 bity:
https://stackoverflow.com/questions/14201551/need-m … -on-my-system
Z treści wynika, że udało się zapiąć 32 karty USB, ale jak tego ktoś dokonał, pojęcia nie mam.
Z drugiej strony, jeśli np w jakimś potworze siedzi Linux z Asteriskiem i ma podłączone
np 256 linii analogowych, to każda linia to przecież równocześnie karta dźwiękowa.
Także nie traktowałbym tych limitów zbyt dosłownie.
Jeżeli Linux potrafi równocześnie obrabiać 4096 procesorów i nie zwariować,
to pewnie z innymi urządzeniami też potrafi sobie radzić w znacznie większej skali.
EDIT:
Praktycznie w dowolnej skali, jak to w Linuxie:
zgrep -i CONFIG_SND_MAX_CARDS /proc/config.gz
CONFIG_SND_MAX_CARDS=32
xD
Pozdro
Ostatnio edytowany przez Jacekalex (2018-11-05 18:12:55)
Offline
To czemu tu piszą:
Generally the device files are named in the form aaaCxDy
aaa is the service name
x is the card number (0-7)
y the device number (0-?)
I tu też piszą to samo:
https://www.kernel.org/doc/html/v4.17/sound/designs/procfile.html
Ostatnio edytowany przez morfik (2018-11-05 18:18:18)
Offline
Zależy,kiedy to pisali, np przed powstaniem USB mobo miały tylko kilka portów ISA/PCI.
Wtedy penie 8 kart starczało, potem doszło USB, w jaju domyślnie jest 32, ale już dodali parametr kernela na wypadek, gdyby kompy kiedyś miały np 1024 karty. xD
Kiedyś się przekonałem na własne oczy, że moduły PPPOE w jaju 3.2 zostały napisane w roku 1998.
Pewnie do tej pory się nie zmieniły.
W innych miejscach mogą być podobne kfiatki. xD
Jajka 4.17 raczej nie pisali od zera, tworzenie kernela to proces ewolucyjny.
Już i tak był płacz, jak wyleciała architektura i386, chociaż ostatnie procki z tej
architektury powstały w czasach, kiedy o istnieniu Linuxa jeszcze nie wiedziałem.
Ostatnio edytowany przez Jacekalex (2018-11-05 18:27:05)
Offline
Z tego co kojarze to roznica pomiedzy hw... a pcm... jest taka, ze pierwsze to jest bezposredni dostep do hardware'owych buforow karty dzwiekowej, a drugi to poprzez dodatkowy blokowy cache. Ma to zapewnic bardziej plynne odtwarzanie/nagrywanie.
Offline
a drugi to poprzez dodatkowy blokowy cache. Ma to zapewnic bardziej plynne odtwarzanie/nagrywanie.
Obecnie nie tyle płynne, tylko równe.
Jeżeli np chcesz pograć w Quake, a kernel się dowiaduje od sterownika GPU,
że monitor ma input_lag na poziomie 280ms, to o te 280 ms przestawia timer alsy,
żeby się obraz z dźwiękiem nie rozjeżdżał.
Kilka lat temu, jak podłączyłem LCD przez HDMI a dźwięk szedł na głośniki z karty HDA
na mobo, to się praktycznie grać nie dało.
Obecnie ten problem nie występuje, a zastosowanie cache w /dev/snd/pcm to już jest bezwzględna konieczność.
Ostatnio edytowany przez Jacekalex (2018-11-06 19:48:11)
Offline