ALSA: So ändern Sie das Ausgabegerät vorübergehend

15

Ich möchte in ALSA das Einfachste tun: USB-Kopfhörer sollen anstelle des internen Lautsprechers meines Tablets Ton erzeugen. Ich will nicht zu ändern Konfigurationsdateien wie asound.rcoder alsa.confoder asound.confund dauerhaft Kopfhörer als Standardausgabegerät eingestellt , indem die Reihenfolge der Geräte ändern, ich einen temporären Effekt will, nur , bis ich die Kopfhörer herausziehen. Seltsamerweise kann ich die Antwort nicht googeln. Ist das alsamixerin der Lage (scheint nein zu sein)?

In Gnome können Sie ganz einfach das aktuelle Ausgabegerät auswählen PulseAudio, entweder über die GUI oder die CLI-Oberfläche, aber es PulseAudiofunktioniert auf ALSA! Also frage ich mich auch, wie es ALSA dazu zwingt, das Ausgabegerät zu wechseln?

Boris Burkov
quelle
alsamixerhat eine Option "Soundkarte auswählen" in der Benutzeroberfläche, obwohl ich nicht weiß, ob das auch tatsächlich das Ausgabegerät festlegt.
Goldlöckchen
1
Nein, leider werden nur die Parameter dieser Soundkarte angezeigt und können
geändert werden. Die
Hallo, Sie können exec alsamixervon einem Terminal aus versuchen und drücken, F6um eine andere Soundkarte auszuwählen. :)
Slackmart
@sgmart Hi, sgmart, genau das habe ich getan, aber es überträgt keinen Ton auf dieses Gerät, sondern wählt nur das Gerät zum Einstellen seiner Parameter aus und nicht zum Streamen der Ausgabe.
Boris Burkov
3
Das Dienstprogramm alsamixer verfügt über einige Steuerelemente: Master, PCI usw. Überprüfen Sie, ob eine MMBeschriftung vorhanden ist (MM = Stummschaltung). Verwenden Sie daher die MTaste auf Ihrer Tastatur, um den Ton zu aktivieren.
Slackmart

Antworten:

4

Wenn das USB-Gerät im System als Soundkarte aufgeführt ist, können Sie man amixerden unmuteParameter überprüfen und verwenden .

amixer -c 1 set Master playback 100% unmute

Überprüfen Sie auch die anderen Kanäle (PCM usw.). Die Beispiele aus dem Handbuch sind:

   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%
Jari Laamanen
quelle
Danke, Jari, es funktioniert. Ich habe die Handbücher zu ALSA gelesen und habe eine Frage: Sind die von amixer und alsamixer aufgelisteten Geräte eigentlich keine Hardwaregeräte, sondern ALSA-Geräte, die von alsa-Plugins in /usr/share/alsa/alsa.conf und Freunden erstellt wurden? Ich verstehe die Syntax dieser Plugins größtenteils, kann aber die Definitionen der grundlegendsten Schlüsselwörter wie "pcm" oder "ctl" oder "type" nicht finden. Ich konnte in der Sauerstoffdokumentation keine Liste von Stichwörtern finden: alsa-project.org/alsa-doc/alsa-lib, alsa-project.org/alsa-doc/alsa-lib/conf.html. Kennen Sie eine Informationsquelle darüber?
Boris Burkov
8
Dies löst die ursprüngliche Frage nicht wirklich. Sie können die Parameter einstellen, es ändert jedoch nichts an der Karte, über die Audio ausgegeben wird.
selbst
Ich bin mit @oneself einverstanden. Dies ändert das Ausgabegerät nicht während oder vorübergehend.
Victor
2
Wenn dies tatsächlich die ursprüngliche Frage beantwortet, wird ein vollständiges Beispiel benötigt. Wie macht das etwas, was alsamixer nicht kann? Es ist klar, dass alsamixer nicht über eine andere Soundkarte auf Ausgabe umschalten kann. In meinem Fall wollte ich auch über dieselbe Soundkarte, aber über HDMI, anstatt über Lautsprecher / Kopfhörer ausgeben. Pulseaudio macht diese Dinge, aber wie? Beispiele von Anfang bis Ende sind erforderlich, um dies zu einer guten Antwort zu machen.
Colin Keenan
1
@domsson verlinke einfach zurück und erkläre, dass die Antwort dein Problem nicht gelöst hat. Das sollte sicherstellen, dass es nicht als Betrug geschlossen wird.
Terdon
0

IIUC können Sie aktualisieren .asoundrcoder /etc/asound.confdynamisch. So sollte es möglich sein zwei Dateien haben , headphones.confund front.confdie an die entsprechenden setzen Ihre Standardgeräte hw:channel,deviceNummern und schalten Sie sie dann auf ein Ereignis „ACPI - Buchse / Kopfhörer - Kopfhörer - Stecker“. Ich versuche es gleich und verwende "ln", um /etc/asound.confeinen Link zu einem von zu erstellen/etc/sounds/{headphones,front}.conf

AntisocialNetworker
quelle