ALSA: cómo cambiar temporalmente el dispositivo de salida

15

Quiero hacer una cosa lo más simple posible en ALSA: hacer que los auriculares USB produzcan sonido en lugar del altavoz interno de mi tableta. No quiero a los archivos de configuración, tales como el cambio asound.rco alsa.confo asound.confy fijar permanentemente los auriculares como dispositivo de salida predeterminado cambiando el orden de los dispositivos, quiero un efecto temporal, sólo hasta que me desconecte los auriculares. Curiosamente, no puedo googlear la respuesta. ¿Es alsamixercapaz de hacer eso (parece que no)?

En Gnome, puede seleccionar fácilmente el dispositivo de salida actual PulseAudio, ya sea en su interfaz GUI o CLI, ¡pero en PulseAudiosí mismo funciona sobre ALSA! Entonces también me pregunto, ¿cómo obliga a ALSA a cambiar el dispositivo de salida?

Boris Burkov
fuente
alsamixertiene una opción "Seleccionar tarjeta de sonido" en la interfaz, aunque no sé si eso también configura el dispositivo de salida.
Ricitos de oro
1
no, desafortunadamente solo muestra los parámetros de esta tarjeta de sonido y permite ajustarlos, pero no redirige la salida a ella
Boris Burkov
Hola, puedes probar exec alsamixerdesde un terminal y presionar F6para seleccionar otra tarjeta de sonido. :)
slackmart
@sgmart Hola, sgmart, hice exactamente eso, pero no transfiere sonido a ese dispositivo, solo selecciona ese dispositivo para ajustar sus parámetros, no transmite la salida.
Boris Burkov
44
La utilidad alsamixer tiene algunos controles: Master, PCI, etc. Verifique si hay una MMetiqueta (MM = silencio), así que use la Mtecla de su teclado para habilitar el sonido.
slackmart

Respuestas:

4

Si el dispositivo USB aparece como una tarjeta de sonido en el sistema, es posible que desee verificar man amixery usar el unmuteparámetro.

amixer -c 1 set Master playback 100% unmute

Verifique también los otros canales (PCM, etc.). Los ejemplos del manual son:

   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
fuente
Gracias, Jari, funciona. He estado leyendo los manuales en ALSA y tengo una pregunta: ¿los dispositivos enumerados por amixer y alsamixer en realidad no son dispositivos de hardware, sino dispositivos ALSA, creados por plugins alsa en /usr/share/alsa/alsa.conf y amigos? Principalmente entiendo la sintaxis de esos complementos, pero no puedo encontrar las definiciones de las palabras clave fundamentales, como "pcm" o "ctl" o "tipo". No pude encontrar ninguna lista de palabras clave en la documentación de doxygen: alsa-project.org/alsa-doc/alsa-lib, alsa-project.org/alsa-doc/alsa-lib/conf.html. ¿Conoces alguna fuente de información sobre ellos?
Boris Burkov
8
Esto realmente no resuelve la pregunta original. Puede establecer los parámetros, pero no cambia la tarjeta a través de la cual se emite audio.
uno mismo
2
Si esto realmente responde a la pregunta original, se necesita un ejemplo completo. ¿Cómo hace esto algo que alsamixer no puede hacer? Claramente, alsamixer no puede cambiar a salida a través de una tarjeta de sonido diferente. O, en mi caso, también quería emitir a través de la misma tarjeta de sonido pero HDMI en lugar de altavoces / auriculares. Pulseaudio hace estas cosas, pero ¿cómo? Se necesitan ejemplos de principio a fin para que esta sea una buena respuesta.
Colin Keenan
1
Pitty esto ha sido seleccionado como respuesta: la pregunta es exactamente lo que estoy buscando: cómo cambiar temporalmente la tarjeta utilizada para la salida. Sin embargo, como @oneself ya señaló, esta respuesta en realidad no explica cómo hacerlo. Hacer una nueva pregunta con casi el mismo título ahora es probable que se cierre como duplicado.
domsson
1
@domsson solo tiene un enlace a este y explica que la respuesta no resolvió su problema. Eso debería garantizar que no esté cerrado como un engañado.
terdon
0

IIUC puede actualizar .asoundrco /etc/asound.confdinámicamente. Por lo tanto, debería ser posible tener dos archivos headphones.confy front.confestablecer sus dispositivos predeterminados en los hw:channel,devicenúmeros apropiados y luego activarlos en un evento de "conector ACPI / conector de auriculares". Estoy a punto de probar esto, usando "ln" para vincular /etc/asound.confa uno de/etc/sounds/{headphones,front}.conf

AntisocialNetworker
fuente