web-dev-qa-db-fra.com

Comment activer / désactiver le son avec amixer?

Y compris Natty, j’ai toujours été capable de basculer (mute/muet) le volume du son "maître" avec le

amixer sset Master toggle

commande que j'ai liée à une liaison Edge dans CompizConfig-Manager.

Maintenant, après l’installation de Oneiric, la commande coupe seulement le son mais ne le remet pas en sourdine. Je l'ai même essayé dans le terminal mais cela ne fonctionne pas non plus. Cela change 'Mono: Lecture 68 [78%] [-14.25dB] [off]' en '... [on]' mais le son reste en sourdine de sorte que je dois le réactiver via le bouton 'indicateur sonore' dans le panneau.

Comment puis-je obtenir que cela fonctionne à nouveau? Qu'est-ce qui a changé depuis Natty? Est-ce que quelqu'un connaît la commande utilisée par 'l'indicateur de son' pour changer le volume du son?

48
joschi

Cela fonctionne pour moi le 13.04, muet et non muet:

amixer -D Pulse set Master 1+ toggle

Il spécifie l'audio Pulse pour assurer la suppression du son, tout le son.

51
David C. Bishop

J'utilise ce script comme solution de contournement:

#!/bin/bash

CURRENT_STATE=`amixer get Master | egrep 'Playback.*?\[o' | egrep -o '\[o.+\]'`

if [[ $CURRENT_STATE == '[on]' ]]; then
    amixer set Master mute
else
    amixer set Master unmute
    amixer set Front unmute
    amixer set Headphone unmute
fi

J'ai fait un diff de amixer scontents avant d'appeler amixer set Master mute et après l'avoir appelé et réactivé tout en utilisant l'interface graphique pour déterminer ce qui devait être activé.


  1. Avec le son sur le type amixer scontents > ~/before (vous obtiendrez un fichier avec le statut de tous les canaux sonores)
  2. Basculez ensuite le volume avec amixer set Master toggle
  3. Créez un deuxième fichier de statut de chaîne avec amixer scontents > ~/after
  4. Basculez à nouveau le son avec amixer set Master toggle qui est censé ramener le volume au niveau qui précédait la première commande de bascule
  5. Créez un troisième fichier avec amixer scontents > ~/afterafter

Maintenant, vous avez trois fichiers qui vous indiquent le statut des canaux sonores utilisés pour le son normal, qui sont mis en sourdine par amixer set Master toggle et qui ne sont pas réactivés en réactivant à nouveau avec la même commande.

Pour comparer facilement les fichiers et voir les différences (les canaux qui sont coupés et qui ne seront pas réactivés par la suite), vous pouvez utiliser melddepuis le Centre de logiciel. Démarrez-le, ouvrez les trois fichiers et sur la barre de défilement, vous pouvez voir s’il existe des différences entre les fichiers. Utilisez les noms de canaux trouvés pour les ajouter au script décrit ci-dessus.

16
Jim Hunziker

Je n'arrivais pas à assourdir correctement les sons. Que j'utilise CLI et que je tape Amixer sset Master ou que j'appuie sur la touche de basculement des supports du pavillon HP, j'obtiens le même résultat: si le son est activé et fonctionne, il désactivera automatiquement le canal principal ET le canal PCM. Puis, lorsque je frappe à nouveau sur la bascule (cli ou touche), il active TOUJOURS le maître mais laisse PCM en sourdine. Pour mon appareil (HP Pavilion DV6 exécutant Xubuntu Oneric), cela signifie que le son est désactivé même lorsque le maître est activé. Lorsqu'il est exécuté à partir de la CLI - mêmes résultats. Si, avec cli, je bascule PCM, il désactive également le canal principal et ne le rallume plus, même s’il bascule correctement entre PCM.

Le script qui a fonctionné était:

#!/bin/bash
    if amixer -c 0 get Master | grep -q off
then
    amixer set Master unmute
    amixer set PCM unmute

else
    amixer set Master mute
fi

Ensuite, j'ai utilisé les raccourcis clavier Xubuntu (Paramètres> Gestionnaire de paramètres> Clavier> Raccourcis d'application) pour accéder au script (je l'ai appelé sndfx.sh et je l'ai défini sur exécutable en effectuant un clic droit dans thunar et sous les autorisations cochées pour l'exécuter). Ensuite, je lui ai attribué la touche rapide Pavillon HP en appuyant sur cette touche. Maintenant, il bascule correctement - Génial. J'espère que ceci aide quelqu'un d'autre.

Paix

5
user46082

Si je ne me trompe pas, c'est un bogue qui provoque la mise en sourdine et l'activation d'autres canaux de mixage. Pour couper le son, essayez

amixer set Master 0;

Pour réactiver le son

amixer set Master 1% +; amixer set Master 7dB +;

2
Meme Notyou

Essayez ce fragment de script ... ça marche

https://wiki.archlinux.org/index.php/PulseAudio#volume_control

2
user33392

Si vous souhaitez remplacer amixer dans .lircrc pour votre commande à distance utilisant lirc, vous pouvez essayer les lignes suivantes. Assurez-vous d'avoir installé xmacro. Le contrôle du volume fonctionne à nouveau.

begin
        prog = irexec
        button = KEY_VOLUMEUP
        repeat = 1
        delay = 2
        config = echo KeyStrPress XF86AudioRaiseVolume KeyStrRelease XF86AudioRaiseVolume | xmacroplay $DISPLAY
end
begin
        prog = irexec
        button = KEY_VOLUMEDOWN
        repeat = 1
        delay = 2
        config = echo KeyStrPress XF86AudioLowerVolume KeyStrRelease XF86AudioLowerVolume | xmacroplay $DISPLAY
end
begin
        prog = irexec
        button = KEY_MUTE
        config = echo KeyStrPress XF86AudioMute KeyStrRelease XF86AudioMute | xmacroplay $DISPLAY
end
1
Jakob

L'astuce consiste à faire en sorte que l'état du haut-parleur ou du casque suive celui du canal principal, selon que le casque est branché ou non. Ce script le fait pour moi sur mon ancien ordinateur portable Dell Latitude:

#!/bin/bash

amixer -q sset Master toggle

MASTER_STATE=`amixer get Master | awk -F"dB] " 'NR == 5 {print $2;}'`
HEADPHONES_PLUGGED=`amixer contents | grep -A 2 Headphone\ Jack | awk -F"=" 'NR == 3 {print $2;}'`

if [[ $HEADPHONES_PLUGGED == 'on' ]]; then
    SLAVE="Headphone"
else
    SLAVE="Speaker+LO"
fi

if [[ $MASTER_STATE == '[on]' ]]; then
    amixer -q sset $SLAVE unmute
else
    amixer -q sset $SLAVE mute
fi

Vous devrez peut-être vérifier vos chaînes avec amixer sur votre ordinateur et modifier les définitions de SLAVE en conséquence. De plus, la chaîne grep "Headphone\Jack" dans la définition HEADPHONES_PLUGGED peut être différente.

0
loop