Gentoo Linux и Volume normalization в pulseaudio

Просматривая кино вечером поймал себя на том, что часто вручную приходится регулировать звук. Отвлекает от просмотра фильма. Поставил себе цель автоматизировать этот процесс. Некоторые проигрыватели это могут из коробки (например, VLC); для mp3 есть метка replay gain, с которой могут работать соответствующие проигрыватели (при первой встрече с файлом проигрыватель добавляет тег о том, как необходимо изменить громкость для данной композиции при последующем воспроизведении, на это способен foobar2000). Но так как я смотрю видео и музыку в основном через XBMC (ныне Kodi), при этом бывает смотрю видео через браузер, необходимо было найти универсальное решение для всей системы в целом. Так родилась идея пошаманить с pulseaudio

Для этой цели используют LADSPA-плагин для pulseaudio с компрессором dyson:

# emerge -av ladspa-cmt swh-plugins

Далее всё просто до безобразия. Смотрим как называется ваша звуковая карта:

# pacmd list-sinks | grep "name:"

В моём случае это alsa_output.pci-0000_00_1b.0.analog-stereo

Создаём 2 вируальных устройства, которые будут по очереди обрабатывать звук (dysonCompress будет повышать громкость в тихих сценах, а потом fastLookaheadLimiter будет следить, чтобы звук не зашкаливал, создавая помехи на выходе):

# pacmd load-module module-ladspa-sink sink_name=ladspa_output.fastLookaheadLimiter label=fastLookaheadLimiter plugin=fast_lookahead_limiter_1913 master=alsa_output.pci-0000_00_1b.0.analog-stereo control=20,0,0.3
pacmd load-module module-ladspa-sink sink_name=ladspa_output.dysonCompress label=dysonCompress plugin=dyson_compress_1403 master=ladspa_output.fastLookaheadLimiter control=0,0.5,0.5,0.99
# pacmd set-default-sink ladspa_output.dysonCompress

Добавим получившиеся настройки в конфиг /etc/pulse/default.pa, чтоб они применились при загрузке системы:

# LADSPA + Dyson = Volume normalization
load-module module-ladspa-sink sink_name=ladspa_output.fastLookaheadLimiter label=fastLookaheadLimiter plugin=fast_lookahead_limiter_1913 master=alsa_output.pci-0000_00_1b.0.analog-stereo control=20,0,0.3
load-module module-ladspa-sink sink_name=ladspa_output.dysonCompress label=dysonCompress plugin=dyson_compress_1403 master=ladspa_output.fastLookaheadLimiter control=0,0.5,0.5,0.99
set-default-sink ladspa_output.dysonCompress

По умолчанию в системе будет теперь LADSPA Plugin Dyson compressor on LADSPA Plugin Fast Lookahead limiter on Built-in Audio Analog Stereo, в XBMC мне пришлось его выбрать вручную. Больше никаких манипуляций не понадобилось.

В Windows это называется Loudness Equalization, но не все звуковые карты поддерживают данную возможность

Ссылки: