Alsamixer está querendo me pegar?

2

Não consegui criar uma solução adequada para que o alsamixer gerencie corretamente meu som.

Aqui está o meu comportamento desejado:

  1. Ao reinicializar, hibernar ou dormir e, em seguida, acordar, desejo preservar todos os níveis de alsamixer e as configurações de sigilo.
  2. A tecla mudo no meu teclado deve ativar o mudo, os botões de aumento e diminuição de volume devem aumentar ou diminuir o volume e, se aplicável, remover o bloqueio.
  3. Quando eu conecto fones de ouvido, deve haver uma configuração de volume diferente para eles e os níveis de volume devem se ajustar automaticamente. Não importa para mim se o mestre mudar ou se os níveis dos fones de ouvido / alto-falante mudarem. Só precisa ter certeza de que isso funciona com as teclas de volume {up, down}.

Eu uso XMonad e xbindkeys para mapear minhas teclas de volume / mudo para ações. Atualmente:

"amixer set Master 2dB+"
  XF86AudioRaiseVolume

"amixer set Master 2dB-"
  XF86AudioLowerVolume

"/path/to/mute.sh"
  XF86AudioMute

onde mute.sh é

FILE=$HOME/.mute
if [ -f $FILE ]; then
  amixer set Master 'cat $FILE'
  rm $FILE
else
  amixer get Master\
    | grep Mono\
    | grep -P -o '[\d]{1,3}'\
    | head -n 1\
    > $FILE
  amixer set Master 0
fi

Atualmente, quando eu reinicio meu computador, parece que os canais aleatórios estão mudos. E meu script mudo na verdade apenas define o nível de volume para zero, o que não é ideal. No lado positivo, conectar fones de ouvido parece ajustar o nível do volume.

Alguma idéia de como eu poderia tornar o comportamento de silenciar e reiniciar melhor?

----- EDITAR 1 -----

Alternar entre mestre também interrompe o canal do palestrante:

$ amixer get Speaker | tail -n 1
  Front Right: Playback 87 [100%] [0.00dB] [on]
$ amixer set Master toggle
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
  Playback channels: Mono
  Limits: Playback 0 - 87
  Mono: Playback 87 [100%] [0.00dB] [off]
$ amixer set Master unmute
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
  Playback channels: Mono
  Limits: Playback 0 - 87
  Mono: Playback 87 [100%] [0.00dB] [on]
$ amixer get Speaker | tail -n 1
  Front Right: Playback 87 [100%] [0.00dB] [off]

----- EDIT 2 -----

A alternância é estranha:

$ for x in Master Headphone Speaker; do amixer set $x toggle ;done
Simple mixer control 'Master',0
  Mono: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Headphone',0
  Front Left: Playback 87 [100%] [0.00dB] [on]
  Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Speaker',0
  Front Left: Playback 87 [100%] [0.00dB] [off]
  Front Right: Playback 87 [100%] [0.00dB] [off]

$ for x in Master Headphone Speaker; do amixer set $x toggle ;done
Simple mixer control 'Master',0
  Mono: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Headphone',0
  Front Left: Playback 87 [100%] [0.00dB] [on]
  Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Speaker',0
  Front Left: Playback 87 [100%] [0.00dB] [on]
  Front Right: Playback 87 [100%] [0.00dB] [on]
    
por Espressofa 02.10.2013 / 13:52

1 resposta

0

Seu hardware tem um comutador mestre de mudo; use amixer set Master toggle .

Para ativar o som, execute amixer set Master unmute .

Você deve ser capaz de definir os controles Speaker e Headphone de maneira diferente e usar o controle Master para definir o volume geral.

Seu hardware pode silenciar automaticamente os alto-falantes quando os fones de ouvido estão conectados, mas o controle Auto-Mute Mode está definido como desativado. Aparentemente, você tem algum software que faz o algum.

    
por CL. 03.10.2013 / 17:00