我的声卡没有硬件音量控制(Creative Sound Blaster X-Fi Surround 5.1 通过 USB 连接)。但 PulseAudio 似乎认为它有硬件音量控制。当我使用 pavucontrol 调整主音量时,什么也没发生。我该如何强制它在软件中调整主音量?(除了 PulseAudio 之外,我不想在 ALSA 中使用 softvol,因为这会增加延迟,而且我知道 PulseAudio 无论如何都会进行软件混音)。
我正在使用 PulseAudio 5.0。
答案1
EMU 0202 USB 音频卡的情况类似。Alsa 显示“PCM”混音器控件,除了使设备静音外,它实际上不执行任何操作。
$ amixer-c USB
Simple mixer control 'PCM',0 Capabilities: pvolume pswitch pswitch-joined Playback channels: Front Left - Front Right Limits: Playback 0 - 200 Mono: Front Left: Playback 200 [100%] [0.00dB] [on] Front Right: Playback 200 [100%] [0.00dB] [on]
pulseaudio 接收器的 HW_VOLUME_CTRL 标志来自为默认配置文件集配置的 alsa-mixer 路径:
/usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common
[Element PCM] switch = mute volume = merge
您可以告诉 pulseaudio 忽略它,然后 pulseaudio 将改为使用软件控制音量,使用如下方法:
/usr/share/pulseaudio/alsa-mixer/paths/emu-usb-output.conf
[Element PCM] switch = mute volume = ignore
/usr/share/pulseaudio/alsa-mixer/profile-sets/emu-usb.conf
[General] auto-profiles = yes [Mapping emu-usb-stereo] device-strings = hw:%f channel-map = left,right paths-output = emu-usb-output
然后告诉 pulseaudio 使用你为该特定卡定制的配置文件,使用 udevENV{PULSE_PROFILE_SET}=emu-usb.conf
规则,或者手动加载 alsa-card:
/etc/pulse/system.pa
load-module module-alsa-card device_id=USB name="emu-usb" card_name="emu-usb" profile_set=emu-usb.conf profile="output:emu-usb-output" ...
这会导致 pulseaudioalsa_output.emu-usb.emu-usb-stereo
接收器没有 HW_VOLUME 标志,并且正常脉冲音量控制可通过 alsa 应用程序运行。
答案2
在 ArchWiki 中再次找到了一个看起来更易于执行和维护的 USB 驱动程序解决方案: https://wiki.archlinux.org/index.php/PulseAudio#Keyboard_volume_control
使用以下方法查找水槽标签(int):
pactl list sinks short
然后,您可以使用以下命令控制音量并使与 USB 驱动程序相对应的接收器静音(假设为 1):
sh -c "pactl set-sink-mute 1 false ; pactl set-sink-volume 1 +5%"
最后,您可以将这些命令添加到系统快捷方式(或别名)中,以便在任何地方通过键盘控制音量。
答案3
要更改每个单独的频道,在到处寻找之后,我终于找到了它!!
amixer -D 脉冲设置硕士 100%= 一所有发言者至 100%
amixer -D 脉冲设置主前线 100% =正面100%(或您指定的任何数字)
amixer -D 脉冲设置主控前 100%,50%=前左 100%,前右 50%
同样适用于主中置、主后置、主侧置、主低音扬声器
这花了很长时间,但我终于明白了