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 Master toggle
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:
amixer -D pulse set Master toggle
I 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/878986
Ostatnio 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 ~/.asoundrc i dam znac czy cos to zmieni.
Edit: zmainy w ~/.asoundrc 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
morfik napisał(-a):
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. ...
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
morfik napisał(-a):
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.
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 amixer te operacje powinny być obsługiwane poprzez pactl:
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
Volumeicon 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 ~/.asoundrc, ktora ustawia pulseaudio jako defaultowe wyjscie dla alsy. W preferencjach volumeicon 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>
PS Ręczna konfiguracja Alsy nie jest wymagana od czasów Debiana Jessie.
Offline
A działa przy samej zmianie na card=pulse w ~/.config/volumeicon/volumeicon bez kombinowania z ~/.asoundrc?
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ę mute toggle.
Offline
Strony: 1