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.
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?
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.
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.
amixer scontents > ~/before
(você obterá um arquivo com o status de todos os canais de som) amixer set Master toggle
amixer scontents > ~/after
amixer set Master toggle
, o qual deve transformar o volume de volta ao nível antes do primeiro comando de alternância 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.
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
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 +;
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
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.
Força bruta para ativar o som:
for i in $(amixer |grep -o \'.*\'); do amixer set $i unmute; done
Tags command-line sound 11.10 lirc