Alsa | PulseAudio | PipeWire + ladspa (нормализуем звук)

требующиеся пакеты alsa-plugins ladspa-plugins
# speaker-test -c8
# http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html
defaults.pcm.!rate_converter "samplerate_best"

# http://www.ladspa.org/
pcm.ladspa {
	type ladspa
	# перенаправляем на dmix (dmix) плагин
	slave.pcm plug:dmix
	# расположение плагинов
	path /usr/lib/ladspa
	# включаем плагины
	playback_plugins [
	{
		# компрессор
		label dysonCompress
#		id 1433
		input {
			# Peak limit (dB) ; Release time (s) ; Fast compression ratio ; Compression ratio
#			controls [ 0 1 0.5 0.99 ]
			controls [ -9.0 0.25 0.5 0.7 ]
		}
# 		output {
# 			controls [  ]
# 		}
	}
	{
		# ограничитель динамического диапазона, чтобы остановить пики выше заданного порогового значения.
		label fastLookaheadLimiter
#		id 1913
		input {
			# Input gain (dB) -20 -> +20 ; Limit (dB) -20 -> 0 ; Release time (s) 0.01 -> 2
			controls [ 20 0 0.8 ]
		}
# 		output {
# 			# Attenuation (dB) ; latency
# 			controls [  ]
# 		}
	}
# 	{
# 		# эквалайзер
# 		label mbeq
# #		id 1197
# 		input {
# 			# 50Hz gain (low shelving) ; 100Hz gain ; 156Hz gain ; 220Hz gain ; 311Hz gain ;
# 			# 440Hz gain ; 622Hz gain ; 880Hz gain ; 1250Hz gain ; 1750Hz gain ; 2500Hz gain ;
# 			# 3500Hz gain ; 5000Hz gain ; 10000Hz gain ; 20000Hz gain
# 			controls [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]
# 		}
# 		output {
# 			# latency
# 			controls [  ]
# 		}
# 	}
	]
	# подсказка
	hint {
		show off
		description "LADSPA"
	}
}

# заменяем существующее устройство по умолчанию
pcm.!default {
	type plug
	# перенаправляем на ladspa (ladspa) плагин
	slave.pcm ladspa
	# меняем местами правый и левый каналы
# 	ttable {
# 		0.1 1
# 		1.0 1
# 		2.2 1
# 		3.3 1
# 		4.4 1
# 		5.5 1
# 	}
}
вот такой вот конфиг алсы, можно вписать в ~/.asoundrc или /etc/asound.conf
и звук который будет подаваться на устройство по умолчанию будет нормализоваться по громкости.

тоже самое для PulseAudio
~/.config/pulse/default.pa

#!/usr/bin/pulseaudio -nF
#
#pacmd info

.include /etc/pulse/default.pa

load-module module-ladspa-sink sink_name=ladspa_output.eq                   sink_properties=device.description="Equalizer" plugin=mbeq_1197                   label=mbeq                 control=-24,-24,-24,0,0,0,0,0,0,0,0,0,0,0,0
load-module module-ladspa-sink sink_name=ladspa_output.dysonCompress        sink_properties=device.description="Compress"  plugin=dyson_compress_1403         label=dysonCompress        control=0,0.25,0.5,0.5                      sink_master=ladspa_output.eq
load-module module-ladspa-sink sink_name=ladspa_output.fastLookaheadLimiter sink_properties=device.description="Limiter"   plugin=fast_lookahead_limiter_1913 label=fastLookaheadLimiter control=20,-5,0.1                           sink_master=ladspa_output.dysonCompress

#load-module module-echo-cancel source_name=noechosource sink_name=noechosink
#set-default-source noechosource


тоже самое для PipeWire (в процессе написания)
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
вот такой вот конфиг алсы, можно вписать в ~/.asoundrc или /etc/asound.conf
и звук который будет подаваться на устройство по умолчанию будет нормализоваться по громкости.
И таки работает.
Но в какой ситуации это может быть полезно? Для музыки оно явно не годится, разве что для строевой песни.
В любом случае, динамическая нормализация звука это искажающий вид звукообработки, потому что автоматика ничего не знает о громкости будущего звука, ещё не помещённого в её буфер. При этом увеличение буфера неизбежно увеличивает задержку, что вынуждает идти на компромисс.

Неискажающая нормализация требует предварительной загрузки всей записи сразу, что может быть проблематично при большой длительности, невозможно в случае трансляции, и в любом случае требует реализации на уровне как минимум плеера, но никак не системы вывода звука, то бишь не ALSA.

Для музыки автоматическая нормализация действительно нехороша, поскольку использование большого динамического диапазона может быть частью музыкальной композиции.

Однако, использование динамической нормализации может быть оправдано специфическими записями или особыми условиями воспроизведения, например шумным окружением, "забивающим" тихие участки фонограммы.
akorop
Для музыки оно явно не годится, разве что для строевой песни.
да, ты почти прав, не годится для высококачественной аппаратуры.
а если у тебя что то <= средненькому, то об искажениях не задумываются.
да и что считать искажением? треск, шумы, заикания - вот реальные искажения, которые не появляются при использовании этих плагинов.

akorop
Но в какой ситуации это может быть полезно?
Это может пригодится если музыка или фильмы имеют разную громкость, и эти настройки приведут громкость к приблизительному единому уровню.
А так же очень часто в фильмах бывают и громкие и тихие места, иногда что бы услышать о чем говорят нужно вручную сделать звук погромче, а например при взрывах нужно бежать и делать потише, что бы не разбудить соседей. вот эта проблема решается автоматом.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
akorop
Для музыки оно явно не годится, разве что для строевой песни.
да, ты почти прав, не годится для высококачественной аппаратуры.
а если у тебя что то <= средненькому, то об искажениях не задумываются.
да и что считать искажением? треск, шумы, заикания - вот реальные искажения, которые не появляются при использовании этих плагинов.
У меня дешёвые наушники, но когда в музыке что тихие участки, что громкие, идут примерно с одной громкостью, это заметно на любой аппаратуре. И это уже какая-то совсем другая музыка получается.
А вот для фильмов, да, это может быть полезно. Буду думать.
Natrio, а не знаешь как сделать кристализатор звука как это сделано в Audacious только плагинами ladspa?
весь инет перерыл. но ничего стоящего не нашел. ((( а эквалайзером как то не то получается.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
Natrio, а не знаешь как сделать кристализатор звука как это сделано в Audacious только плагинами ladspa?
весь инет перерыл. но ничего стоящего не нашел. ((( а эквалайзером как то не то получается.
Увы, не знаю. Никогда не увлекался "улучшайзерами".
Спасибо за пост. Когда был на Убунте, там тоже использовал это, но через Пульс
Тут конфиг работает лучше, но вот как бы его отключать и включать когда надо?

P.S.
Незаменимая вещь для ноутбуков с плохими внешними динамиками
nafanja, big thx!
87dv
Тут конфиг работает лучше, но вот как бы его отключать и включать когда надо?
многие проги могут настраиваться на какое виртуальное устройство отправлять звук.
так вот в конфиг алсы нужно добавить устройство по примеру default из конфига выше, и нужные проги настроить на него.

если я не ошибаюсь, попробуй просто заменить
pcm.!default {
на
pcm.default_ladspa {
и в проге выбери устройство default_ladspa.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
 
Зарегистрироваться или войдите чтобы оставить сообщение.