Como faço para alternar o som com o amixer?

46

Incluindo Natty eu sempre pude alternar (silenciar / ativar) o volume de som 'Master' com o

amixer sset Master toggle

comando que eu vinculei a uma ligação de borda no CompizConfig-Manager.

Agora, após instalar o Oneiric, o comando apenas silencia o som, mas não o ativa. Eu até tentei no Terminal, mas também não funciona. Ele muda ' Mono: Reprodução 68 [78%] [-14.25dB] [off] ' para '... [on]', mas o som fica mudo para que eu tenha que ativá-lo por meio do 'indicador de som' no painel.

Como posso fazer isso funcionar novamente? O que mudou desde Natty? Alguém sabe o comando que o 'indicador de som' usa para alternar o volume do som?

    
por joschi 13.10.2011 / 19:48

8 respostas

45

Isso funciona para mim no dia 13.04, tanto mudo quanto ativo:

amixer -D pulse set Master 1+ toggle

Especifica o áudio de pulsos para garantir a ativação do som, a ativação de todos os tons.

    
por David C. Bishop 27.04.2013 / 08:43
15

Estou usando este script como solução alternativa:

#!/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

Eu fiz um diff de amixer scontents antes de chamar amixer set Master mute e depois de chamá-lo e desmutivar tudo usando a GUI para descobrir o que precisava ser ativado.

  1. Com som no tipo amixer scontents > ~/before (você obterá um arquivo com o status de todos os canais de som)
  2. Em seguida, ative o volume com amixer set Master toggle
  3. Crie um segundo arquivo de status de chanel com amixer scontents > ~/after
  4. Alterne o som novamente com amixer set Master toggle , o qual deve transformar o volume de volta ao nível antes do primeiro comando de alternância
  5. Crie um terceiro arquivo com amixer scontents > ~/afterafter

Agora você tem três arquivos que informam o status dos canais de som usados para o som normal, que estão silenciados por amixer set Master toggle e que não são ativados novamente ativando novamente o mesmo comando.

Para comparar facilmente os arquivos e ver as diferenças (os canais que são silenciados e não serão ativados posteriormente), você pode usar meld do Centro de Software. Comece, abra os três arquivos e na barra de rolagem você pode ver onde existem diferenças entre os arquivos. Use os nomes dos canais encontrados para adicioná-los ao script descrito acima.

    
por Jim Hunziker 24.10.2011 / 19:22
5

Não consegui silenciar o som corretamente. Se eu usei CLI e digite Amixer sset Master para alternar ou pressionar a tecla de alternância HP Pavillion Media, recebo o mesmo resultado: Se o som estiver ligado e funcionando, ele desligará automaticamente o canal Master e o canal PCM. Então, quando eu apertar o botão novamente (cli ou key), ele sempre liga o Master, mas deixa o PCM mudo. Para o meu equipamento (HP Pavilion DV6 executando o Xubuntu Oneric), isso significa que o som está desligado mesmo com o Master ligado. Quando executado a partir do CLI - os mesmos resultados. Se, com o cli, eu alternar o PCM, ele também desativará o canal mestre e não ligará novamente, embora ele alterne o PCM corretamente.

O script que funcionou foi:

#!/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

Então usei atalhos de teclado do Xubuntu (configurações > gerenciador de configurações > keyboard > atalhos de aplicativos) para navegar até o script (chamei-o de sndfx.sh e configure-o para executável clicando com o botão direito no thunar e sob permissões marcadas como executável). Então eu atribuí a tecla rápida do HP Pavilion tocando nela. Agora, ele alterna corretamente - impressionante. Espero que isso ajude alguém.

Paz

    
por user46082 12.02.2012 / 12:19
2

Se não me engano, é um erro que faz com que outros canais de mixagem sejam desativados e desativados. Para silenciar, tente

amixer set Master 0;

Para ativar o som, tente

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

    
por Meme Notyou 24.10.2011 / 06:39
2

Experimente este fragmento de script ... funciona

link

    
por user33392 11.11.2011 / 15:30
1

Se você quiser substituir o amixer no .lircrc pelo seu remotecontrol que trabalha com o lirc, tente seguir as linhas. Certifique-se de ter o xmacro instalado. O controle de volume agora funciona novamente.

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
    
por Jakob 15.02.2012 / 16:18
0

O truque é fazer com que o estado do alto-falante ou do fone de ouvido siga o estado do canal principal, dependendo se você tem os fones de ouvido conectados ou não. Este script faz isso por mim no antigo laptop 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

Você pode precisar verificar seus canais com o amixer no seu computador e alterar as definições de SLAVE de acordo. Também a string grep "Headphone \ Jack" na definição HEADPHONES_PLUGGED pode precisar ser outra coisa.

    
por loop 13.04.2016 / 22:55
-1

Força bruta para ativar o som:

for i in $(amixer |grep -o \'.*\'); do amixer set $i unmute; done
    
por asdf 14.04.2012 / 22:55