LINUX.ORG.RU

Не работает dmix в ALSA с эквалайзером

 , , , ,


1

2

Приветствую, товарищи. Поставил себе Void Linux, планирую использовать в качестве основной системы. Возник интерес настроить звук без мам пап и кредитов PulseAudio или Pipewire. При этом есть необходимость иметь эквалайзер, alsaequal не подошёл, так как имеет лишь 10 настроек, на другой системе через EasyEffects в эквалайзере настроено 13. После краткого поиска в интернете, нашлось другое решение в лице dsp. Установил, настроил по инструкции в README, вылезла проблема - не работает звук с нескольких программ, только с одной. Очевидно, что надо вручную настроить dmix, с горем пополам впихнул его в конфигурацию (конфигурационные файлы прилагаются), заработало, однако вскоре обнаружилось, что иногда вывод ломается по непонятной причине. А случай в целом пока только один, в стиме и играх из него. Вывод ломается в ненативных играх, то есть запускающихся через Proton, и в некоторых нативных (например, Descenders, в интро звук есть, в самой игре нет), в самом клиенте стима звука тоже нет, независимо от того как он запущен, с apulse или SDL_AUDIODRIVER=alsa. Проверял звук с выключенным плагином, только с dmix, всё работает как положено, хотя было предположение что не указываю какие-то параметры, которые использует конфигурация ALSA по-умолчанию. По итогу вопрос, может быть кто-то сможет подсказать, что не так? Может быть я что-то не так делаю? Может настраиваю как-то не так, может dmix надо запихнуть в какое-то другое место в конфигурации, указать дополнительные параметры. Или же проблема в самом плагине и надо ждать исправления проблемы разработчиком?

Конфигурационные файлы:

.asoundrc:

pcm.snd_card {
	type hw
	card "AUDIO"
}

ctl.!default {
	type hw
	card "AUDIO"
}

capture.pcm {
	type plug
	slave {
		pcm {
		type hw
		card "Generic"
		device 0
		}
	}
} 

pcm.dmixer {
	type dmix
	ipc_key 1024
#	ipc_key_add_uid 0
#	buffer_size 16384
	slave {
		pcm "snd_card"
#		rate unchanged
#		channels unchanged
	}
}

pcm.dsp {
	type plug
	slave {
		format FLOAT
		rate unchanged
		channels unchanged
		pcm {
			type ladspa
			path "/usr/lib/ladspa"
			playback_plugins [{
				label "ladspa_dsp:epz"
			}]
			slave.pcm {
				type plug
				slave {
					pcm "dmixer"
#					rate unchanged
#					channels unchanged
				}
			}
		}
	}
}

pcm.!default {
	type copy
	slave.pcm "dsp"
}

config_epz (конфиг с настройками эквалайзера):

input_channels=1
output_channels=1
LC_NUMERIC=C
effects_chain=gain -5.9 lowshelf 110 0.71q +5 eq 20 2q +0.5 eq 57 0.6q +4.1 eq 190 1q -2.7 eq 260 1.7q -0.4 eq 710 1q +1.2 eq 1.2k 2q -0.6 eq 1.7k 1.4q -3.4 eq 3.3k 2q +4.1 eq 4.6k 2q -3.7 eq 6.4k 2q +6.6 eq 7.6k 1.3q +2.4 eq 13k 2q +4.3 eq 15k 0.9q -12.0


Последнее исправление: aeuqaezr (всего исправлений: 2)

может быть кто-то сможет подсказать, что не так? Может быть я что-то не так делаю?
настроить звук без мам пап и кредитов PulseAudio или Pipewire.

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

ломается в ненативных играх, то есть запускающихся через Proton

Ну это я бы вообще в самую последнюю очередь поставил. Еще издревна (когда у вайна не было поддержки pulse, а потом была, но мейнтейнеры собирали без нее) он любил поиметь монопольный доступ к аудио.

sehellion ★★★★★
()
Ответ на: комментарий от sehellion

он любил поиметь монопольный доступ к аудио

Однако же без плагина всё работает без нареканий, значит всё-таки проблема не совсем в протоне

aeuqaezr
() автор топика

Во-первых, вот это чё за бред?

capture.pcm {

такое впечатление, что остался кусок от описания asym. Или убери, или опиши asym нормально.

Во-вторых, вот это

pcm.!default { type copy slave.pcm «dsp» }

не нужно вообще. Достаточно

pcm.!default dsp

Я бы начал с того, что в качестве дефолтного устройства аккуратно описал asym, playback которого уже подключен к dmix. Ну и да, если используешь альсу напрямую, всякие пшшшаудио желательно отключить.

anonymous
()
Ответ на: комментарий от anonymous

Во-первых, вот это чё за >бред?

capture.pcm {

такое впечатление, что остался кусок от описания asym. Или убери, или опиши asym нормально.

Я искал как прописать записывающее устройство по-умолчанию, сначала нашёл просто такой вариант, без asym,не совсем понял насчёт него вообще. Во всяком случае, проблема была и без этого блока.

asym, playback которого уже подключен к dmix

pcm.dmixer {
    type dmix
    ipc_key 1024
    slave.pcm {
        type asym
        playback.pcm {
            type hw
            card «AUDIO»
        }
        capture.pcm {
            type hw
            card «Generic»
            device 0
        }
    }
}

Как-то так? Или можно в качестве устройства воспроизведения впихнуть dmixer в asym?

Ну и да, если используешь альсу напрямую, всякие пшшшаудио желательно отключить

Вроде выключены как раз, стоят только библиотеки необходимые для программ, в том числе и pipewire всякие. Я один раз, пока разбирался, ставил пакеты alsa и просмотрел в списке зависимостей pulseaudio. Он у меня поставился и автоматически включился при следующей перезагрузке, естественно везде звук заработал, я подумал, что проблема решена, потом уже обнаружил, что этот паразит запущен.

aeuqaezr
() автор топика
Ответ на: комментарий от anonymous

Проблема остаётся и с такой конфигурацией:

ctl.!default {
	type hw
	card "AUDIO"
}

pcm.dmixer {
	type dmix
	ipc_key 1024
	slave.pcm {
		type hw
		card "AUDIO"
	}
}

pcm.duplex {
	type asym
	playback.pcm "dsp"
	capture.pcm {
		type hw
		card «Generic»
		device 0
	}
}

pcm.asymout {
	type plug
	slave.pcm "duplex"
}

pcm.dsp {
	type plug
	slave {
		format FLOAT
		rate unchanged
		channels unchanged
		pcm {
			type ladspa
			path "/usr/lib/ladspa"
			playback_plugins [{
				label "ladspa_dsp:epz"
			}]
			slave.pcm {
				type plug
				slave {
					pcm "dmixer"
				}
			}
		}
	}
}

pcm.!default asymout
aeuqaezr
() автор топика

вод ломается в ненативных играх, то есть запускающихся через Proton

В pressure-vessel нет твоего dsp. Официальная рекомендация у них конечно использовать pipewire, но т.к этот вариант не устраивает - то остаётся 2 выхода: или пихать каждый раз библиотеки dsp внутрь контейнера или запускать игры без контейнера.
Так же рекомендую написать им куда-нибудь на гитхабы. Меня с вопросами как нормально прокинуть libjack в контейнер послали, но может быть с dsp что-то предложат. В любом случае без контейнеров игры могут лучше работать если конечно запустятся.

самом клиенте стима звука тоже нет

Если нужен был рабочий стим, обновления нужно было отключить пару лет назад. Теперь у них сам стим тоже запускается через г*ндоны всякие. Попробуй opensteamclient чтоль

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

Благодарю за ответ. С последнего своего сообщения успел почитать вывод стима в консоль (до этого не всматривался), вкратце, он пишет, что не может найти нужный плагин, пришёл к таким же выводам, пихать библиотеки куда-то в их Steam Linux Runtime и писать на гитхаб. Последнее пришло в голову после прочтения уже старых баг репортов про то, что стим не использует .asoundrc. В общем, попробую.

Попробуй opensteamclient чтоль

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

aeuqaezr
() автор топика
Ответ на: комментарий от aeuqaezr

Я вывод не смотрел, просто заранее знаю, что стимовский pressure-vessel заведомо ломает нестандартные конфигурации alsa. /etc/asound.conf вообще не пробрасывается в контейнер а конфигурация в хомяке работает только если если контейнер сможет её запустить в совместимом виде

mittorn ★★★★★
()