ALSA: jak tymczasowo zmienić urządzenie wyjściowe


15

Chcę zrobić w ALSA najprostszą rzecz: słuchawki USB wytwarzają dźwięk zamiast wewnętrznego głośnika mojego tabletu. Nie chcę zmieniać plików konfiguracyjnych, takich jak asound.rclub, alsa.confani na asound.confstałe ustawiać słuchawek jako domyślnego urządzenia wyjściowego, zmieniając kolejność urządzeń, chcę tymczasowy efekt, tylko do momentu odłączenia słuchawek. O dziwo, nie mogę znaleźć w Google odpowiedzi. Czy jest w alsamixerstanie to zrobić (wydaje się, że nie)?

W Gnome możesz łatwo wybrać bieżące urządzenie wyjściowe za pomocą PulseAudiointerfejsu GUI lub CLI, ale PulseAudiosamo działa na ALSA! Zastanawiam się więc, w jaki sposób zmusza ALSA do zmiany urządzenia wyjściowego?


alsamixerma w interfejsie opcję „Wybierz kartę dźwiękową”, chociaż nie wiem, czy to faktycznie ustawia urządzenie wyjściowe.
goldilocks,

1
nie, niestety po prostu wyświetla parametry tej karty dźwiękowej i pozwala je ulepszyć, ale nie przekierowuje do niej danych wyjściowych
Boris Burkov

Witaj, możesz spróbować wykonać polecenie alsamixerz terminala i nacisnąć, F6aby wybrać inną kartę dźwiękową. :)
slackmart,

@ sgmart Cześć, sgmart, zrobiłem dokładnie to, ale nie przenosi dźwięku na to urządzenie, po prostu wybiera to urządzenie do dostrajania jego parametrów, a nie przesyła strumieniowo do niego dane wyjściowe.
Boris Burkov,

4
Narzędzie alsamixer ma pewne kontrolki: Master, PCI i tak dalej. Sprawdź, czy jest MMetykieta (MM = wycisz), więc użyj Mklawisza z klawiatury, aby włączyć dźwięk.
slackmart,

Odpowiedzi:


4

Jeśli urządzenie USB jest wymienione w systemie jako karta dźwiękowa, możesz sprawdzić man amixeri użyć tego unmuteparametru.

amixer -c 1 set Master playback 100% unmute

Sprawdź także inne kanały (PCM itp.). Przykłady z podręcznika to:

   amixer -c 1 sset Line,0 80%,40% unmute cap
          will set the second soundcard's left line input volume to 80% and right line
          input to 40%, unmute it, and select it as a source for capture (recording).

   amixer -c 1 -- sset Master playback -20dB
          will set the master volume of the second card to -20dB.  If the  master  has
          multiple channels, all channels are set to the same value.

   amixer -c 1 set PCM 2dB+
          will  increase  the PCM volume of the second card with 2dB.  When both play‐
          back and capture volumes exist, this is applied to both volumes.

   amixer -c 2 cset iface=MIXER,name='Line Playback Volume",index=1 40%
          will set the third soundcard's second line playback volume(s) to 40%

   amixer -c 2 cset numid=34 40%
          will set the 34th soundcard element to 40%

Dzięki, Jari, działa. Czytam instrukcje na temat ALSA i mam pytanie: czy urządzenia wymienione przez amixer i alsamixer faktycznie nie są urządzeniami sprzętowymi, ale urządzeniami ALSA, utworzonymi przez wtyczki alsa w /usr/share/alsa/alsa.conf i znajomych? Rozumiem głównie składnię tych wtyczek, ale nie mogę znaleźć definicji bardzo podstawowych słów kluczowych, takich jak „pcm” lub „ctl” lub „type”. Nie udało mi się znaleźć żadnej listy słów kluczowych w dokumentacji doxygen: alsa-project.org/alsa-doc/alsa-lib, alsa-project.org/alsa-doc/alsa-lib/conf.html. Czy znasz jakieś źródło informacji na ich temat?
Boris Burkov

8
To tak naprawdę nie rozwiązuje pierwotnego pytania. Możesz ustawić parametry, ale nie zmienia to karty, przez którą dźwięk jest wyprowadzany.
siebie

2
Jeśli faktycznie odpowiada to oryginalne pytanie, potrzebny jest pełny przykład. Jak to robi coś, czego alsamixer nie może zrobić? Najwyraźniej alsamixer nie może przejść na wyjście przez inną kartę dźwiękową. Lub, w moim przypadku, chciałem również odtwarzać przez tę samą kartę dźwiękową, ale HDMI zamiast głośników / słuchawek. Pulseaudio robi te rzeczy, ale jak? Potrzebne są przykłady od początku do końca, aby była to dobra odpowiedź.
Colin Keenan

1
Pitty został wybrany jako odpowiedź - pytanie jest dokładnie tym , czego szukam: jak tymczasowo zmienić kartę używaną do wyjścia. Jednak, jak już zauważyłem @, ta odpowiedź nie wyjaśnia, jak to zrobić. Zadanie nowego pytania o prawie tym samym tytule prawdopodobnie zostanie zamknięte jako duplikat.
domsson,

1
@domsson wystarczy połączyć z powrotem z tym i wyjaśnić, że odpowiedź nie rozwiązała problemu. To powinno zapewnić, że nie zostanie zamknięte jako duplikat.
terdon

0

IIUC możesz aktualizować .asoundrclub /etc/asound.confdynamicznie. Tak powinno być możliwe, aby mieć dwa pliki headphones.confi front.confktóry zestaw urządzeń domyślne do odpowiednich hw:channel,devicenumerów, a następnie przełączyć je na „wtyczkę słuchawek jack ACPI / słuchawkowe” imprezy. Zaraz spróbuję tego, używając „ln”, aby połączyć się /etc/asound.confz jednym z nich/etc/sounds/{headphones,front}.conf

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.