1

У меня есть звуковая карта без аппаратного управления громкостью (Creative Sound Blaster X-Fi Surround 5.1 подключен по USB). И все же PulseAudio, похоже, считает, что у него есть аппаратный регулятор громкости. Когда я настраиваю основную громкость с помощью pavucontrol, ничего не происходит. Как я могу заставить его сделать основной регулировки громкости в программном обеспечении? (Я не хочу использовать softvol в ALSA в дополнение к PulseAudio, так как это увеличит задержку, и я знаю, что PulseAudio в любом случае выполняет программное микширование).

Я использую PulseAudio 5.0.

2 ответа2

4

Аналогичная ситуация с USB-звуковой картой EMU 0202. 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]

Флаг HW_VOLUME_CTRL приемника pulseaudio поступает из путей alsa-mixer, настроенных для набора профилей по умолчанию:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common

[Element PCM]
switch = mute
volume = merge

Вы можете указать pulseaudio игнорировать его, и вместо этого pulaudio будет регулировать громкость в программном обеспечении, используя что-то вроде:

/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 использовать настроенный профиль для этой конкретной карты, используя правило udev ENV{PULSE_PROFILE_SET}=emu-usb.conf или загрузив alsa-карту вручную:

/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" ...

В результате получается стерео приемник pulseaudio alsa_output.emu-usb.emu-usb-stereo без флага HW_VOLUME, а обычное управление громкостью импульса работает из приложений alsa.

0

Решение, которое кажется более простым в создании и обслуживании драйвера USB, было найдено в ArchWiki (снова):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%"

Наконец, вы можете добавить эти команды в ваши системные ярлыки (или псевдонимы) для управления громкостью с клавиатуры в любом месте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .