如何强制 PulseAudio 中的软件主音量控制?

如何强制 PulseAudio 中的软件主音量控制?

我的声卡没有硬件音量控制(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%

同样适用于主中置、主后置、主侧置、主低音扬声器

这花了很长时间,但我终于明白了

相关内容