Chcę to:
- Po podłączeniu słuchawek chcę, aby dźwięk był wyciszony i ustawiony na określony poziom głośności.
- Kiedy odłączam słuchawki, chcę, aby dźwięk był wyciszony (lub ustawiony na określony poziom głośności).
Ustawienie poziomów głośności nie jest problemem, ale jakoś muszę to zrobić po odłączeniu / podłączeniu słuchawek, więc szukam sposobu na powiadomienie o tych zdarzeniach.
Szybko stwierdziłem /proc/asound/card0/codec#0
, czy słuchawki są podłączone, czy nie, więc próbowałem to monitorować inotifywait
i zmieniać poziom głośności na podstawie zmodyfikowanych powiadomień. Niestety inotifywait
nie powiodło się, ponieważ proc nie jest zwykłym systemem plików.
Czy są na to inne sposoby (może za pośrednictwem PulseAudio)?
Urządzenie audio: Intel HDA , kodek audio: Conexant CX20585 .
Podsumowując to, co do tej pory próbowałem:
- Ear Candy: w ogóle nie działał w moim systemie. Wygląda na opuszczony projekt?
- Kod opublikowany przez Karla Bielefeldta może działać na niektórych urządzeniach, a nie na moich.
- Pomysł StephenPaulger zawodzi z powodu braku kanału „Głośnik”.
- Motywowany przez aking1012 Zmusiłem go do włamania się do kodu jądra (po znalezieniu kodu wykrywającego gniazda w kodeku), ale jest to dość kłopotliwe rozwiązanie.
Wciąż szukam łatwego sposobu na zrobienie tego.
sound
pulseaudio
headphones
htorque
źródło
źródło
Odpowiedzi:
Aby ustawić poziom głośności z konsoli, użyj polecenia amixer. Na przykład:
Ustawi twój poziom na 0%
Nie wiem, jak to zmienić po podłączeniu słuchawek ... ale może ktoś może ci w tym pomóc
źródło
Podczas UDS dla Oneiric miała miejsce sesja dotycząca wykrywania gniazd. Szczegółowe informacje zawiera plan . Wygląda na to, że to zrobi dokładnie to, czego szukam: różne poziomy głośności dla różnych urządzeń - ale nie na każdym sprzęcie:
Aktualizacja do 11.10
To powinno teraz działać w Oneiric - niestety mój ThinkPad T510 wydaje się być jednym z systemów, które obecnie nie są obsługiwane.
Kolejna kontynuacja Davida Henningssona:
Więcej tutaj .
Aktualizacja do 12.04
Działa teraz z moim ThinkPadem T510 (i wieloma innymi modelami) w Ubuntu 12.04 (wersja rozwojowa).
źródło
Ear Candy ma pewną funkcjonalność związaną z wkładaniem / wyjmowaniem słuchawek.
źródło
Nie wiem, ile masz doświadczenia w
inotifywait
programowaniu , ale wspomniałeś o tym, więc zakładam, że przynajmniej dobrze sobie radzisz ze skryptami powłoki. Poniższy program C, oparty na tym artykule , powinien być w stanie wykryć, że słuchawki są podłączone lub odłączone, po czym możesz wykonać dowolne czynności.Program pobiera jeden argument, który powinien być ścieżką do wejściowego urządzenia zdarzeń dla słuchawek. To jest
/dev/input/event7
dla mnie, ale być może będziesz musiał spróbować kilku, aby znaleźć, który jest w twoim systemie. Będziesz potrzebował uprawnień do odczytu na tym urządzeniu. Program wydrukuje nazwę urządzenia oraz typ, kod i wartość pierwszego zdarzenia przed wyjściem.źródło
event.value
jest rzeczywiście przełączony ... aleread
operacja powraca tylko wtedy, gdy wartość się zmienia ... może wiesz, jak to zrobić, aby nie blokować? w każdym razie dzięki!O_NONBLOCK
po otwarciu urządzenia i sprawdzasz wartość zwracanąread
. Jeśli jest ujemny, odczyt zostałby zablokowany lub wystąpił inny błąd. Istnieją inne, bardziej skomplikowane sposoby, aby to zrobić bez odpytywania, jeśli włączasz to do większego programu.Sprawdź dmesg i inne pliki dziennika. Prawdopodobnie podłączenie / wyłączenie uruchamia niektóre określone wiadomości.
Następnie można użyć demona do przeanalizowania tego pliku dziennika i wykrycia zdarzeń. Myślę, że wiesz co robić od tego momentu :)
źródło
Jeśli zrobisz
głośność głośnika zostanie wyciszona, ale słuchawki będą działać. Odłączenie słuchawek oznacza brak dźwięku. Co jest prawie tym, czego chcesz ...
Jednak ...
W przypadku zmiany regulacji głośności ustawienie głośności „Głośnik” zostanie ponownie skonfigurowane. Wynika to z tego, że pulseaudio stara się być sprytnym w ustawianiu głośności ( więcej informacji można znaleźć na stronie http://pulseaudio.org/wiki/PulseAudioStoleMyVolumes ). Możemy jednak powstrzymać go od bałaganu z woluminami.
Otwórz /etc/pulse/default.pa
i znajdź linię
i zmień na
Uruchom ponownie pulseaudio.
Teraz, jeśli wyciszysz głośność głośnika, zmiana głośności głównej nie wpłynie na to. Słuchawki będą działać, ale głośnik pozostanie cichy.
źródło
Sprawdź gniazdo ACPID pod kątem zmian, można to zrobić za pomocą Pythona lub C lub skryptu powłoki ( kod Pythona do sterowania odtwarzaniem wtyczki słuchawek i pauzą w Rhythmbox). Sprawdź zmiany napięcia ACPID, aby wykryć wtyczkę i wtyczkę słuchawek. Można się jednak spodziewać sekundowego opóźnienia.
źródło
Pulseaudio ma domyślnie dostarczany moduł, który został zaprojektowany tak, aby osiągnąć dokładnie to:
http://pulseaudio.org/wiki/Modules#module-device-restore
źródło
Myślę, że możesz osiągnąć to, czego potrzebujesz, korzystając z tego: https://bbs.archlinux.org/viewtopic.php?pid=1105458#p1105458
źródło