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/.
Strony: 1
Od paru tygodni, mute dźwięku w moim systemie nie działa jak należy. Na klawiaturze mam przyciski multimedialne i one są podpięte w volumeicon-alsa (volup/voldown/mute). Te przyciski działają dobrze, tj. ściszanie i zgłaśnianie dźwięku jest ok, podobnie mute wycisza dźwięki ale po ponownym przyciśnięciu klawisza mute, dźwięk nie powraca.
Do tej pory myślałem, że winnym całego problemu jest ten volumeicon-alsa i że nie potrafi on poprawnie odmutować dźwięku, przynajmniej patrząc po tym co się dzieje w podglądzie w alsamixer. W alsamixer mam w zasadzie 3 interesujące mnie w tej chwili kanały: Master i Speaker/Headphone (odpowiednio dla głośników i słuchawek po podpięciu). Po przyciśnięciu klawisza mute, oba kanały (Master/Speaker lub Master/Headphone) są wyciszane ale przy odmutowaniu, mute znika tylko z kanału Master.
W konfiguracji Openbox'a miałem wykomentowane te trzy przyciski, bo mogą być one podpięte jednocześnie tylko w jednej aplikacji. Postanowiłem zatem, że odhaczę te przyciski w volumeicon-alsa i włączę je w Openbox. Okazało się, że problem dalej istnieje.
Przycisk mute w Openbox miał przypisane poniższe polecenie:
amixer sset [b]Master[/b] toggle[/quote]
Czyli niby ma za zadanie przełączyć tylko i wyłącznie kanał Master. Podobnie pewnie ma volumeicon-alsa, tylko jak to się dzieje, że wydanie tego polecenia w terminalu przełącza także kanał Speaker/Headphone? Pół biedy gdyby to robił w obie strony. xD Co może powodować takie zachowanie?
---
Szukając info na necie, znalazłem to:Kod:
amixer -D pulse set Master toggleI ono już bez problemu przełącza oba kanały w obie strony. Ale chyba tego nie da rady wrzucić do volumeicon-alsa. xD
Widać, że to stary bug:
https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/878986Ostatnio edytowany przez morfik (2018-12-03 16:07:01)
Offline
Jeśli PA tworzy problemy nieznane w Alsie, to może zamiast Volumeicon odpal jakiś aplet do głośności zgodny z Pulse?
Offline
No ale nie ma takiego chyba na Openbox. xD Jedyne co to ten volumeicon-alsa ale on chyba nie nadąża za rozwojem rzeczywistości i używa przestarzałych poleceń/narzędzi. Póki co to mam volup/voldown podpięte pod volumeicon-alsa by mieć notyfikacje przy ściszaniu i zgłaśnianiu, a mute mam w openbox zrobione. xD Póki co działa ale mogliby tego volumeicon-alsa fix'nąć. Chyba, że są jakieś bardziej modern narzędzia niż on, które potrafią współpracować z PA bez problemu?
Offline
To malutki program ten volumeicon, możesz zajrzeć do źródeł i cośtam fixnąć w razie czego.
On chyba ma troszkę krótszy kod nie Chromium. xD
Kompilacja takiego potwora jak volumeicon to nie jest jakaś tragedia.
Tu masz instrukcję kompilacji:
http://nullwise.com/volumeicon.html
A tu dużo miejsca na commity:
https://github.com/Maato/volumeicon
Jak obczaisz problem, to możesz wygenerować łatkę a nawet dołączyć do Developerów projektu. xD
EDIT:
Nie trzeba nic kompilować ino skonfigurować Alsę poprawnie:
https://github.com/Maato/volumeicon/issues/57
:p
Pozdro
Ostatnio edytowany przez Jacekalex (2018-12-03 20:33:10)
Offline
Sprawdzilem i u mnie na XFCE jest podobnie, tj. po zmutowaniu dzwieku z klawiatury nie daje sie go odmutowac i dopiero w pavucontrol moge to wlaczyc spowrotem.
Przetestuje sposob z [i]~/.asoundrc[/i] i dam znac czy cos to zmieni.
Edit: zmainy w [i]~/.asoundrc[/i] zadzialaly, teraz dzwiek sie mutuje i odmutowywuje z klawiatury bez problemow.
Ostatnio edytowany przez wikingagressor (2018-12-03 22:31:04)
Offline
No technicznie to jest niby plik (a właściwie to link): /etc/alsa/conf.d/50-pulseaudio.conf i tam jest konfiguracja pulse ale bez:
pcm.default pulse ctl.default pulse
No i jak się je doda, to alsamixer widzi już tylko jeden kanał Master, a by zobaczyć więcej to trzeba w menu tam wybrać. Tak czy inaczej, to chyba nie ma innej opcji jak ustawienie urządzenia pulse jako domyślnego. xD
Ostatnio edytowany przez morfik (2018-12-04 12:07:21)
Offline
Ustawianie kart w plikach konfiguracyjnych ma tą skromną wadę, że jest dosyć sztywne.
IMHO o wiele lepiej użyć zmiennych, np:
pcm.!default { type plug slave.pcm { @func getenv vars [ ALSAPCM ] default "asymed" } } pcm.asymed { type asym playback.pcm "alsaout" capture.pcm "alsain" } pcm.alsaout { type plug slave.pcm { @func getenv vars [ ALSAOUT ] default "nvidiadmix" } } pcm.alsain { type plug slave.pcm { @func getenv vars [ ALSAIN ] default "dsnooped" } }
W ten sposób, jak potrzeba szybko przestawić jeden program czy powłokę na na inną kartę czy inny mikrofon, można to zrobić w 10 sekund bez majstrowania w konfigach czy martwienia się tym,że np Vlc i Smplayer też nie widzą wirtualnych kart Alsy,
a w MPV w ogóle nie ma gdzie wyklikać wyboru karty . ;)
Pozdro
Offline
E w PA takie przełączanie się między kartami można zrobić via:
$ which pa-list pa-list () { pacmd list-sinks | awk '/index/ || /name:/' } $ which pa-set pa-set () { inputs=($(pacmd list-sink-inputs | awk '/index/ {print $2}')) pacmd set-default-sink $1 &> /dev/null for i in ${inputs[*]} do pacmd move-sink-input $i $1 &> /dev/null done }
Co wygląda mniej więcej tak:
$ pa-list * index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo> index: 1 name: <compressor> $ pa-set 1 $ pa-list index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo> * index: 1 name: <compressor>
To jest oczywiście dla wszystkich appek w systmie ale również można sobie zrobić aliasy na per-appa:
$ which pa-playbacklist pa-playbacklist () { echo "===============" echo "Running Apps" pacmd list-sink-inputs | awk '/index/ || /application.name /' echo "===============" echo "Sound Devices" pacmd list-sinks | awk '/index/ || /name:/' } $ which pa-playbackset pa-playbackset () { pacmd set-default-sink "$2" &> /dev/null pacmd move-sink-input "$1" "$2" &> /dev/null }
Ja mam tylko zwykły output i kompresor. Ale to bez problemu działa po HDMI, itp. xD
Offline
Ja zamiast instalować PA wole wypierdolić Xorga i mieć wreszcie spokój z takimi SPOF.
Chociaż być może będę musiał wrzucić PA i puścić przez dmixa, bo np KDE już całe wymaga PA,
a Mate na Gtk3 to jest mała katastrofa (mniejsza niż Gnome3 co prawda).
W dodatku ani Mate ani Xfce jeszcze nie są gotowe na Waylanda, a utylizacja Xorga to dla mnie priorytet.
Pozdro
Ostatnio edytowany przez Jacekalex (2018-12-04 16:19:37)
Offline
PA to SPOF? Ja używam PA od samego początku jak na linux'a wlazłem i jakoś nie pamiętam, by mi coś nawaliło na dłużej niż parę minut, choć to z winy SID'a i bez problemu można było cofnąć do stanu sprzed awarii. A wszystkie te awarie były z winy nie aktualizowania na bieżąco innych pakietów, które operują dźwiękiem (tak jak ten volumeicon, który za parę dni będzie miał 4 lata od ostatniego update), także sam widzisz, to nie jest wina PA, które zawsze można wyłączyć, więc w czym problem? xD
Offline
[quote=morfik]PA to SPOF? Ja używam PA od samego początku jak na linux'a wlazłem i jakoś nie pamiętam, by mi coś nawaliło na dłużej niż parę minut, choć to z winy SID'a i bez problemu można było cofnąć do stanu sprzed awarii. ...[/quote]
Tu nie chodzi o to, czy coś działa czy nie, tylko o to, czy za dostęp do urządzeń odpowiada jeden program, który ma te urządzenia na wyłączność.
PA blokuje karty dźwiękowe w takim samym stopniu, co Xorg blokuje GPU.
Dlatego wolę Alsę i Waylanda, że oba działają w trybie nieblokującym (chociaż w Alsie to wymaga użycia dmixa).
PA u mnie działa, to taki sam argument jak Xorg u mnie działa.
Co nie zmienia faktu, że jeśli pojedynczy program chce cokolwiek monopolizować,
to u mnie dla niego miejsca nie ma, od tej zasady ja na razie tylko Eudev uzyskał amnestię. xD
Ostatnio edytowany przez Jacekalex (2018-12-04 16:27:48)
Offline
Taka polityka linux'a przecie by jedno urządzenie było zajmowane tylko przez jeden proces w danej chwili. Przecie jak na domyślnej konfiguracji bez PA byś próbował odpalić parę aplikacji odtwarzających dźwięk, to jedna ci zajmie dźwięk i na drugiej już go nie będziesz miał. To można oczywiście fix'nąć ale domyślnie może odpalać tylko jedna aplikacja.
Offline
[quote=morfik]Taka polityka linux'a przecie by jedno urządzenie było zajmowane tylko przez jeden proces w danej chwili. Przecie jak na domyślnej konfiguracji bez PA byś próbował odpalić parę aplikacji odtwarzających dźwięk, to jedna ci zajmie dźwięk i na drugiej już go nie będziesz miał. To można oczywiście fix'nąć ale domyślnie może odpalać tylko jedna aplikacja.[/quote]
Właśnie po to powstała biblioteka dmix, żeby programy wiedziały, jak nie blokować urządzenia.
Jak coś jest zgodne z Alsą, to jest też zgodne z dmixem, innej drogi nie ma.
W przypadku Waylanda kompozytor ekranu też nie blokuje GPU, tylko określa współrzędne poszczególnych okien, a te sobie same gadają ze sterownikami.
Offline
Cały „problem” sprowadza się do tego, że takie od wielu lat nie aktualizowane padliny jak volumeicon, czy jego odpowiednik w Xfce4, sterują bezpośrednio kanałami Alsy (czyli na poziomie niższym niż reszta systemu), zamiast przeprowadzać to na poziomie PA (z którego domyślnie korzystają współczesne narzędzia/środowiska graficzne). Operacje na poziomie Alsy powinny być zachowane jako opcja/fallback — tylko dla systemów bez uruchomionego Pulseaudio.
W systemie z PA zamiast [tt]amixer[/tt] te operacje powinny być obsługiwane poprzez [tt]pactl[/tt]:
pactl set-sink-mute 0 1 pactl set-sink-mute 0 0
lub bezpośrednio:
pactl set-sink-mute 0 toggle
I we współczesnych narzędziach nikt takiego problemu nie ma.
Offline
[i]Volumeicon[/i] potrafi obslugiwac pulseaudio. Wystarczy w jego configuracji zmienic alsa na pulse i jest git.
Offline
Teoretycznie nie powinno to byc potrzebne. W poscie #4 z tego watku jest pokazana konfiguracja pliku [i]~/.asoundrc[/i], ktora ustawia pulseaudio jako defaultowe wyjscie dla alsy. W preferencjach [i]volumeicon[/i] wystarczy ustawic Device:default i powinno dzialac.
Offline
Genialne — graficzny konfigurator wymaga więcej ręcznej dłubaniny w plikach tekstowych niż samo ręczne ustawienia skrótu klawiaturowego :D
<keybind key="XF86AudioMute">
<action name="Execute">
<command>pactl set-sink-mute 0 toggle</command>
</action>
</keybind>[/quote]
PS Ręczna konfiguracja Alsy nie jest wymagana od czasów Debiana Jessie.
Offline
A działa przy samej zmianie na [tt]card=pulse[/tt] w [i]~/.config/volumeicon/volumeicon[/i] bez kombinowania z [i]~/.asoundrc[/i]?
Offline
Tak, po prostu pojawia się dodatkowa pozycja, której wcześniej nie było -- pulse i ona ma do kontroli już tylko jeden kanał Master, czyli potrafi sterować jak należy, choć domyślnie nie wykrywa pulse. :]
Offline
Chodziło mi bardziej o obsługę [i]mute toggle[/i].
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00008 | SET NAMES latin2 |
0.00113 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.190.176.176' WHERE u.id=1 |
0.00067 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.190.176.176', 1732223223) |
0.00041 | SELECT * FROM punbb_online WHERE logged<1732222923 |
0.00071 | SELECT topic_id FROM punbb_posts WHERE id=322188 |
0.00005 | SELECT id FROM punbb_posts WHERE topic_id=30754 ORDER BY posted |
0.00044 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30754 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00199 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30754 ORDER BY p.id LIMIT 0,25 |
0.00260 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30754 |
Total query time: 0.00823 s |