我正在尝试编写一个脚本,根据连接的设备自动更改播放/捕获音频级别。
我使用的是带有 4 通道输入/输出的 MAYA44 USB+ 声音。
感谢这里的类似问题:设置音量的终端命令?,我学会了使用以下命令:
amixer -c 2 sset Line,1 50%
我遇到的问题是,捕获控件似乎与播放控件共享相同的名称:Line
正在做
amixer -c 2 sset Line 50%
更改两个控件的值。
如上所述,我正在编写一个脚本来自动执行此操作,因此我不想进入 Alsamixer 并手动执行此操作。
有没有办法重命名控件以避免命名冲突?否则,是否可以在“Line”值中添加一些后缀或前缀来指定我想要影响 CAPTURE 设备?以某种方式使用脉冲音频是否是另一种选择?
基本上,如何在不影响播放值的情况下更改捕获控制值?
答案1
并从CL那里得到了答案。
用于
amixer -c2 controls
列出所有低级控件。然后您可以
amixer -c2 cset ..
通过其唯一的 ID 号来选择特定的控件。
在我的设备上运行命令:
>amixer -c 2 controls
numid=7,iface=MIXER,name='Master Playback Switch'
numid=8,iface=MIXER,name='Master Playback Volume'
numid=3,iface=MIXER,name='Line Playback Switch'
numid=5,iface=MIXER,name='Line Playback Switch',index=1
numid=4,iface=MIXER,name='Line Playback Volume'
numid=6,iface=MIXER,name='Line Playback Volume',index=1
numid=9,iface=MIXER,name='Line Capture Switch'
numid=10,iface=MIXER,name='Line Capture Volume'
numid=2,iface=PCM,name='Capture Channel Map'
numid=1,iface=PCM,name='Playback Channel Map'
我最初尝试过这个,但我无法让它发挥作用。只有当我进一步修改它时,我才意识到这个 ID 实际上是'numid=10'而不仅仅是整数10。