Alsamixer 要来抓我了?

Alsamixer 要来抓我了?

我一直无法找到一个合适的解决方案来让 alsamixer 正确管理我的声音。

这是我想要的行为:

  1. 在重新启动、休眠或睡眠然后唤醒时,我希望保留所有 alsamixer 级别和静音设置。
  2. 我键盘上的静音键应该切换静音,调高音量和调低音量按钮应该增加或减少音量,如果适用,则取消静音。
  3. 当我插入耳机时,应该有不同的音量设置,音量级别应该自动调整。主控是否改变或耳机/扬声器级别是否改变对我来说无关紧要。只需确保它与音量-{up,down} 键配合使用即可。

我使用 XMonad 和 xbindkeys 将音量/静音键映射到操作。目前:

"amixer set Master 2dB+"
  XF86AudioRaiseVolume

"amixer set Master 2dB-"
  XF86AudioLowerVolume

"/path/to/mute.sh"
  XF86AudioMute

其中 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

目前,当我重新启动计算机时,似乎随机频道都静音了。而且我的静音脚本实际上只是将音量设置为零,这并不理想。好的一面是,插入耳机似乎确实可以调整音量。

有什么想法可以使静音和重启行为变得更好?

----- 编辑 1 -----

主切换静音扬声器通道还可:

$ 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]

----- 编辑 2 -----

切换很奇怪:

$ 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]

答案1

您的硬件有一个主静音开关;使用amixer set Master toggle

要取消静音,请运行amixer set Master unmute

您应该能够以不同的方式设置SpeakerHeadphone控件,并使用控件Master来设置整体音量。

您的硬件可以在插入耳机时自动静音扬声器,但您的Auto-Mute Mode控制设置为禁用。显然,您有一些软件可以做到这一点。

相关内容