ALSA: comment changer temporairement le périphérique de sortie

15

Je veux faire une chose la plus simple possible dans ALSA: avoir un casque USB produisant du son au lieu du haut-parleur interne de ma tablette. Je ne veux pas modifier les fichiers de configuration tels que asound.rcou alsa.confou asound.confet définir définitivement le casque comme périphérique de sortie par défaut en modifiant l'ordre des périphériques, je veux un effet temporaire, jusqu'à ce que je débranche le casque. Étrangement, je ne peux pas google la réponse. Est alsamixercapable de faire cela (semble non)?

Dans Gnome, vous pouvez facilement sélectionner le périphérique de sortie actuel avec PulseAudio, soit dans son interface GUI ou CLI, mais PulseAudiolui-même fonctionne au-dessus d'ALSA! Je me demande donc aussi comment cela oblige ALSA à changer le périphérique de sortie?

Boris Burkov
la source
alsamixera une option "Select sound card" dans l'interface, bien que je ne sais pas si cela définit également le périphérique de sortie.
goldilocks
1
non, malheureusement, il affiche simplement les paramètres de cette carte son et permet de les modifier, mais ne redirige pas la sortie vers elle
Boris Burkov
Bonjour, vous pouvez essayer exec alsamixerdepuis un terminal et appuyer sur F6pour sélectionner une autre carte son. :)
slackmart
@sgmart Salut, sgmart, c'est exactement ce que j'ai fait, mais il ne transfère pas le son vers cet appareil, il sélectionne simplement cet appareil pour régler ses paramètres, pas les flux de sortie vers lui.
Boris Burkov
4
L'utilitaire alsamixer possède certains contrôles: Master, PCI, etc. Vérifiez s'il y a une MMétiquette (MM = muet), utilisez donc la Mtouche de votre clavier pour activer le son.
slackmart

Réponses:

4

Si le périphérique USB est répertorié comme une carte son dans le système, vous souhaiterez peut-être vérifier man amixeret utiliser le unmuteparamètre.

amixer -c 1 set Master playback 100% unmute

Vérifiez également les autres canaux (PCM, etc.). Les exemples du manuel sont:

   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
la source
Merci, Jari, ça fonctionne. J'ai lu les manuels sur ALSA et j'ai une question: les périphériques répertoriés par amixer et alsamixer ne sont-ils pas réellement des périphériques matériels, mais des périphériques ALSA, créés par des plugins alsa dans /usr/share/alsa/alsa.conf et amis? Je comprends surtout la syntaxe de ces plugins, mais je ne trouve pas les définitions des mots clés très fondamentaux, tels que "pcm" ou "ctl" ou "type". Je n'ai trouvé aucune liste de mots clés dans la documentation doxygen: alsa-project.org/alsa-doc/alsa-lib, alsa-project.org/alsa-doc/alsa-lib/conf.html. Connaissez-vous une source d'informations à leur sujet?
Boris Burkov
8
Cela ne résout pas vraiment la question d'origine. Vous pouvez définir les paramètres, mais cela ne change pas la carte via laquelle le son est émis.
soi
2
Si cela répond réellement à la question d'origine, un exemple complet est nécessaire. Comment cela fait-il quelque chose qu'alsamixer ne peut pas faire? De toute évidence, alsamixer ne peut pas passer en sortie via une autre carte son. Ou, dans mon cas, je voulais également sortir via la même carte son mais HDMI au lieu de haut-parleurs / casque. Pulseaudio fait ces choses, mais comment? Des exemples du début à la fin sont nécessaires pour en faire une bonne réponse.
Colin Keenan
1
Pitty cela a été sélectionné comme réponse - la question est exactement ce que je recherche: comment changer temporairement la carte utilisée pour la sortie. Cependant, comme @oneself l'a déjà noté, cette réponse n'explique pas réellement comment procéder. Poser une nouvelle question avec presque le même titre est maintenant susceptible d'être fermé en double.
domsson
1
@domsson suffit de créer un lien vers celui-ci et d'expliquer que la réponse n'a pas résolu votre problème. Cela devrait garantir qu'il n'est pas fermé en tant que dupe.
terdon
0

IIUC vous pouvez mettre à jour .asoundrcou /etc/asound.confdynamiquement. Donc , il devrait être possible d'avoir deux fichiers headphones.confet front.confqui définissent vos périphériques par défaut appropriés aux hw:channel,devicenuméros et puis les passer sur un événement « prise casque jack ACPI / casque ». Je suis sur le point d'essayer ceci, en utilisant "ln" pour créer /etc/asound.confun lien vers l'un des/etc/sounds/{headphones,front}.conf

AntisocialNetworker
la source