Просматривая кино вечером поймал себя на том, что часто вручную приходится регулировать звук. Отвлекает от просмотра фильма. Поставил себе цель автоматизировать этот процесс. Некоторые проигрыватели это могут из коробки (например, VLC); для mp3 есть метка replay gain, с которой могут работать соответствующие проигрыватели (при первой встрече с файлом проигрыватель добавляет тег о том, как необходимо изменить громкость для данной композиции при последующем воспроизведении, на это способен foobar2000). Но так как я смотрю видео и музыку в основном через Kodi (aka XBMC), при этом бывает смотрю видео через браузер, необходимо было найти универсальное решение для всей системы в целом. Так родилась идея пошаманить с 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
, в Kodi мне пришлось его выбрать вручную. Больше никаких манипуляций не понадобилось.
В Windows это называется Loudness Equalization, но не все звуковые карты поддерживают данную возможность
Ссылки:
- bbs.archlinux.org;
- askubuntu.com;
- howtogeek.com — реализация на Windows и немного про более спецэфичные варианты.