срез частот сабвуфера в alsa (subwoofer crossover frequency) (bass redirection)

Интегрированный звук, звуковые карточки, выносные устройства

Модератор: Модераторы разделов

SuSE
Сообщения: 18

срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение SuSE »

Всем привет!
Вообщем, ситуация следующая: имеется SBLive 5.1 и комплект шестиканальной акустики.
Все 6 каналов нормально работают.
НО:
вместе с низкими сабвуфер проигрывает и высокие! Причем из него идет такой противный свистящий звук, что он вообще сводит на нет все преимущества IHOO =(
Ни на google, ни на ya.ru ничего конкретного не нашел.
Узнал что есть такая вещь, как ladspa, и что в ней есть плагин для фильтрации частот.
Пробовал править /usr/share/alsa/alsa.conf - безрезультатно (на сайте www.alsa-project.com) были примеры использования LADSPA, точно уже ссылку не помню.

Дистрибутив SuSE 9.3 alsa 1.0.8
Вот кусок файла alsa.conf:

pcm.lowpass {
type ladspa
slave.pcm $SLAVE
path "/usr/lib/ladspa"
plugins [ {
label lpf
input {
controls [ 150 ]
}
} ]
}

.asoundrc решил не трогать, изменил только alsa.conf (это вроде бы одно и то же)

Прошу реальной помощи от тех кто с этим сталкивался, идиотские посты наподобие "Ставьте Gentoo" и "Лучше установи Windows, там все нормально работает" я буду игнорировать, не засоряйте тему.

Заранее спасибо, Андрей.
Спасибо сказали:
SuSE
Сообщения: 18

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение SuSE »

Неужели ни у кого нет похожей проблемы?

Странно, что ни в одном микшере нету этой настройки... вроде kamix использует LADSPA, но не те фильтры, которые нужны =(
Спасибо сказали:
Аватара пользователя
eskej
Сообщения: 108

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение eskej »

Насколько я знаю у SB Live! 5.1 нет хардверного сабвуферного кроссовера. Видимо проблема в этом. Больше мне ничего не известно.
Gentoo ~x86•linux-2.6.16-ck11•gcc 4.1.1•X.Org 7.2•KDE 3.5.6
Спасибо сказали:
SuSE
Сообщения: 18

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение SuSE »

eskej писал(а):
04.10.2005 19:00
Насколько я знаю у SB Live! 5.1 нет хардверного сабвуферного кроссовера. Видимо проблема в этом. Больше мне ничего не известно.

Я понимаю что нет. Но ведь как-то можно сделать?! Надо просто грамотно прикрутить LASDPA-lowpass фильтр к каналу, выводящему на саб... А вот как... хз.
Спасибо сказали:
Аватара пользователя
eskej
Сообщения: 108

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение eskej »

А у самого саба разве нет кроссовера?! ИМХО это его работа отсеивать всякие левые высокие частоты.
Gentoo ~x86•linux-2.6.16-ck11•gcc 4.1.1•X.Org 7.2•KDE 3.5.6
Спасибо сказали:
SuSE
Сообщения: 18

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение SuSE »

eskej писал(а):
08.10.2005 11:05
А у самого саба разве нет кроссовера?! ИМХО это его работа отсеивать всякие левые высокие частоты.

К сожалению, у сабвуфера такой функции нет... При покупке все дело упиралось в деньги, пришлось взять что подешевле... а именно Sven IHOO MT 5.1. Соответственно фильтрация низких частот ложится на звуковуху, а с моей звуковухой, как я понял, сделать это можно только софтварно =(
Я встречал посты на форумах, где люди с таким же железом как у меня писали, что у них получилось настроить, только вот никто не сказал КАК =)
Спасибо сказали:
Аватара пользователя
theli
Сообщения: 117
Статус: вышибала
ОС: GNU/Linux (Gentoo)

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение theli »

SuSE писал(а):
30.09.2005 14:18
pcm.lowpass {
type ladspa
slave.pcm $SLAVE
path "/usr/lib/ladspa"
plugins [ {
label lpf
input {
controls [ 150 ]
}
} ]
}

1. вроде ж как /etc/asound.conf
Хотя, в принципе, в рахных дистрибутивах может быть по-разному
2. в приведенной тобой схеме
а) вместо $SLAVE указать твое устройство вывода
б) при такой конфигурации ВСЕ что выше 150 Гц урежется
в) соотвественно чтобы услышать эффект выводить звук надо через устройство lowpass (именно так ты гео назвал)
Спасибо сказали:
Аватара пользователя
bobrik
Сообщения: 183

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение bobrik »

Насколько я знаю < 300 надо подавать.
Спасибо сказали:
SuSE
Сообщения: 18

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение SuSE »

theli писал(а):
10.10.2005 15:53
SuSE писал(а):
30.09.2005 14:18

pcm.lowpass {
type ladspa
slave.pcm $SLAVE
path "/usr/lib/ladspa"
plugins [ {
label lpf
input {
controls [ 150 ]
}
} ]
}

1. вроде ж как /etc/asound.conf
Хотя, в принципе, в рахных дистрибутивах может быть по-разному
2. в приведенной тобой схеме
а) вместо $SLAVE указать твое устройство вывода
б) при такой конфигурации ВСЕ что выше 150 Гц урежется
в) соотвественно чтобы услышать эффект выводить звук надо через устройство lowpass (именно так ты гео назвал)


1)не могу понять что такое slave.pcm растолкуйте плиз
2)если выводить через это устройство(lowpass, кстати не я его так назвал, это я нашел где-то в инете), то частота срежется на всех каналах, насколько я понял.
мне надо только на одном. Как это сделать?
3) у меня /usr/share/alsa/alsa.conf сделан в виде скрипта, $SLAVE указывается либо вверху, либо берется из env, не помню.
Вообщем фиг его знает, как прикрутить устройство lowpass к одному каналу на звуковухе snd-emu10k1

Все-таки придется детально изучать мануалы, жаль времени пока на это нет =(
Спасибо сказали:
Аватара пользователя
theli
Сообщения: 117
Статус: вышибала
ОС: GNU/Linux (Gentoo)

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение theli »

slave.pcm = устройство на которое будет подаваться звук после обработки созданным ... т.е. вообще можно создать длиннющую цепочку из различных обработок звука ....
если ты хочешь чтобы после фильтра звук выводился прямо на карточку то и укажи ее :) .... hw:0,0 ... или типа того ...

да . не знаю ...
вот тут http://alsa.opensrc.org/SurroundSound задаются тем же вопросом.
можешь поиграться с маршрутизацией каналов и т.д.
Спасибо сказали:
SuSE
Сообщения: 18

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение SuSE »

Ага, кажется немного разобрался. Я по этой ссылке и нашел настройки =) там тоже не знают как сделать чтобы только на 1 канал подействовало.
Я конечно понимаю, что разработчики альсы модные програмеры, но такой мудреный конфиг - это уж слишком. На досуге обязательно поиграюсь с настройками.
Спасибо сказали:
Аватара пользователя
theli
Сообщения: 117
Статус: вышибала
ОС: GNU/Linux (Gentoo)

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение theli »

SuSE писал(а):
12.10.2005 23:26
Ага, кажется немного разобрался. Я по этой ссылке и нашел настройки =) там тоже не знают как сделать чтобы только на 1 канал подействовало.
Я конечно понимаю, что разработчики альсы модные програмеры, но такой мудреный конфиг - это уж слишком. На досуге обязательно поиграюсь с настройками.

альса не такая уж и сложная изнутри ;) .... по крайней мере сами дрова ...

мне очень жаль все-таки что помочь тебе не могу ...
но просто у меня в феврале защита диплома по компьютерной безопасности ... я а его еще практически не начинал ...

хотя вот если б у меня был сабвуфер ;) .....
удачных игр с настройками ;)

хотя я все-таки не уверен в возможности в текущей альсе при опрделени виртуального устройства часть каналов отправлять на одно устройство а часть на другую ....

выход который мне пришел в голову сразу .... взять исходники lowpass фильтра ... переписать его чтобы он урезал только то, тчо тебе надо ;) .... вообщем есть чем заняться на досуге :)


ЗЫ : этой теме место не здесь а в "мультимедиа"
Спасибо сказали:
SuSE
Сообщения: 18

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение SuSE »

theli писал(а):
12.10.2005 23:41
выход который мне пришел в голову сразу .... взять исходники lowpass фильтра ... переписать его чтобы он урезал только то, тчо тебе надо ;) .... вообщем есть чем заняться на досуге :)

ЗЫ : этой теме место не здесь а в "мультимедиа"

:o :)
в си я пока слабоват для такого =) еще только второй курс, да и программирование по специальности более... высокоуровневое... хотя си надо полюбому =) будем копать...
Спасибо сказали:
BO0OM
Сообщения: 9

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение BO0OM »

SuSE писал(а):
30.09.2005 14:18
Всем привет!
Вообщем, ситуация следующая: имеется SBLive 5.1 и комплект шестиканальной акустики.
Все 6 каналов нормально работают.
НО:
вместе с низкими сабвуфер проигрывает и высокие! Причем из него идет такой противный свистящий звук, что он вообще сводит на нет все преимущества IHOO =(
Ни на google, ни на ya.ru ничего конкретного не нашел.
Узнал что есть такая вещь, как ladspa, и что в ней есть плагин для фильтрации частот.
Пробовал править /usr/share/alsa/alsa.conf - безрезультатно (на сайте www.alsa-project.com) были примеры использования LADSPA, точно уже ссылку не помню.

Дистрибутив SuSE 9.3 alsa 1.0.8
Вот кусок файла alsa.conf:

pcm.lowpass {
type ladspa
slave.pcm $SLAVE
path "/usr/lib/ladspa"
plugins [ {
label lpf
input {
controls [ 150 ]
}
} ]
}

.asoundrc решил не трогать, изменил только alsa.conf (это вроде бы одно и то же)

Прошу реальной помощи от тех кто с этим сталкивался, идиотские посты наподобие "Ставьте Gentoo" и "Лучше установи Windows, там все нормально работает" я буду игнорировать, не засоряйте тему.

Заранее спасибо, Андрей.



Я уже столько намучался, правя файл .asoundrc и единственное, чего мне удалось добиться - свистящий звук из колонок. Вот что я писал в том файле:

pcm.lowpass {
type ladspa
slave.pcm "plughw:0,0"
path "/usr/lib/ladspa"
plugins [ {
label lpf
input {
controls [ 50 ]
}
} ]
}
Спасибо сказали:
gena2x
Сообщения: 3

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение gena2x »

Столкнулся с той же проблемой. Пофиксил альсу.


Сабвуфер работает.

Ставится на дебиан стабле. apt-get source alsa-lib; применить патч diff -p1 <файл; dpkg-buildpackage; установить получившийся пакет.

Проверял :).

Внутри описание и пример .asoundrc в каталоге doc.

Исправляет также баги с локалью.

PS. Кто подскажет самый качественный плагин для обрезки и поделится параметрами?
Спасибо сказали:
BO0OM
Сообщения: 9

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение BO0OM »

gena2x писал(а):
28.10.2005 03:19
Столкнулся с той же проблемой. Пофиксил альсу.


Сабвуфер работает.

Ставится на дебиан стабле. apt-get source alsa-lib; применить патч diff -p1 <файл; dpkg-buildpackage; установить получившийся пакет.

Проверял :).

Внутри описание и пример .asoundrc в каталоге doc.

Исправляет также баги с локалью.

PS. Кто подскажет самый качественный плагин для обрезки и поделится параметрами?


Мне уже начинает казаться, что в линуксе это неразрешимая проблема.
Спасибо сказали:
gena2x
Сообщения: 3

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение gena2x »

Я же написал как это сделать. внутри приаттаченного к предыдущему сообщению патча (patch.localeANDladspa.txt) даже есть пример .asoundrc файла с конкретной конфигурацией и описанием КАК после применения патча отрезать высокие от сабвуфера и КАК просто смиксовать каналы стерео в 2.1 (стерео+сабфуфер). Пример приведён для M-Audio revolution 7.1 но это НЕ суть. Пример есть мой .asoundrc который работает для всего alsa-умеющего.
Get fun, not pain!

для тех, кому лениво пишу .asoundrc который будет работать с русской локалью и патчем:
+pcm.ice1724_0 {
+ type hw
+ card 1
+ device 0
+ subdevice 0
+}
+
+pcm.ice1724_1 {
+ type hw
+ card 1
+ device 2
+ subdevice 1
+}
+
+pcm.ice1724_2 {
+ type hw
+ card 1
+ device 2
+ subdevice 2
+}
+
+
+pcm.ice_cv {
+ type multi;
+ slaves.a.pcm ice1724_0;
+ slaves.a.channels 2;
+ slaves.b.pcm ice1724_1;
+ slaves.b.channels 2;
+ slaves.c.pcm ice1724_2;
+ slaves.c.channels 2;
+ bindings.0.slave a;
+ bindings.0.channel 0;
+ bindings.1.slave a;
+ bindings.1.channel 1;
+ bindings.2.slave b;
+ bindings.2.channel 0;
+ bindings.3.slave b;
+ bindings.3.channel 1;
+ bindings.4.slave c;
+ bindings.4.channel 0;
+ bindings.5.slave c;
+ bindings.5.channel 1;
+}
+
+
+pcm.ice_plug {
+ type plug
+ slave.pcm ice_cv
+ slave.format S32_LE
+ slave.channels 6
+}
+
+pcm.ice_route {
+ type route;
+ slave.pcm ice_plug;
+ slave.channels 6;
+ ttable.0.0 1;
+ ttable.1.1 1;
+ ttable.0.2 1;
+ ttable.1.3 1;
+ ttable.0.4 1;
+ ttable.1.5 1;
+}
+
+pcm.ice_route2 {
+ type route;
+ slave.pcm ice_plug;
+ slave.channels 6;
+ #channels 4;
+ ttable.0.0 1;
+ ttable.1.1 1;
+ ttable.2.2 1;
+ ttable.3.3 1;
+ ttable.0.4 1;
+ ttable.1.5 1;
+}
+
+pcm.ice2_51to21 {
+ type plug
+ slave.pcm ice_cv
+ slave.format S32_LE
+ #slave.rate 48000
+ slave.channels 6
+ ttable {
+ 0.0 0.3333;
+ 1.1 0.3333;
+ 2.0 0.3333;
+ 3.1 0.3333;
+ 4.0 0.3333; #c->fl
+ 4.1 0.3333; #c->fr
+ 5.2 0.2;
+ 0.2 0.2;
+ 1.2 0.2;
+ 2.2 0.2;
+ 3.2 0.2;
+ }
+}
+
+
+pcm.ice2_20to21 {
+ type plug
+ slave.pcm ice2_21cutoffsub
+ #slave.pcm ice_cv
+ #slave.pcm ladspa
+ #slave.format S32_LE
+ #slave.rate 48000
+ slave.channels 6
+ ttable {
+ 0.0 1
+ 1.1 1
+ 0.2 0.5
+ 1.2 0.5
+ }
+}
+
+pcm.ice2_21cutoffsub {
+ type ladspa
+ slave.pcm ice_plug
+ path "/usr/lib/ladspa"
+ plugins {
+ 0 {
+ label lp4pole_fcrcia_oa
+ policy none
+ input.bindings.2 "Input";
+ output.bindings.2 "Output";
+ input {
+ controls [ 300 0 ]
+ }
+ }
+ 1 {
+ label delay_0.01s
+ input.bindings.0 "Input";
+ output.bindings.0 "Output";
+ input {
+ controls [ 0 1 ]
+ }
+ }
+ }
+}

БЕЗ патча можно применять LADSPA plugin только ко ВСЕМ каналам одновременно. policy none мне НЕ удалось заставить работать, может я чего-то не понял в исходниках, но по моему none вообще НЕ РАБОТАЛ, посему и поправил.
Если не закрыть ВСЕ каналы плугинами клиент может вывалиться в сегфаулт.
См англицкую доку в патче я там всё подробно расписал.
Щит бы побрал эти инстансы...
PS. в самой располедней alsa в cvs ничего в ladspa не поменялось. Так что патч весьма актуален.
Спасибо сказали:
Den001
Сообщения: 666
ОС: Suse 11

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение Den001 »

Простите за глупый вопрос, но что-то не догнал как рестартить алсу без перезагрузки компа? или эти эффекты применятся без рестарта оной?
Я так понял, что это делается чере alsactl restore. Но у меня он дает ошибку:
ALSA lib conf.c:1592:(snd_config_load1) _toplevel_:248:11:Unexpected char
ALSA lib conf.c:3056:(snd_config_update_r) /usr/share/alsa/alsa.conf may be old or corrupted: consider to remove or fix it
alsactl: set_controls:1088: snd_ctl_open error: Invalid argument

Вот что добавил в /usr/share/alsa/alsa.conf:

Код: Выделить всё

pcm.lowpass {
type ladspa
slave.pcm hw:0,0
path "/usr/lib/ladspa"
plugins [ {
label lpf
input {
controls [ 150 ]
}
} ]
}


Мне пока что не очень понятно, что тут не так...
Спасибо сказали:
gena2x
Сообщения: 3

Re: срез частот сабвуфера в alsa (subwoofer crossover frequency)

Сообщение gena2x »

Den001 писал(а):
06.12.2006 00:27
Простите за глупый вопрос, но что-то не догнал как рестартить алсу без перезагрузки компа? или эти эффекты применятся без рестарта оной?
Я так понял, что это делается чере alsactl restore. Но у меня он дает ошибку:
ALSA lib conf.c:1592:(snd_config_load1) _toplevel_:248:11:Unexpected char
ALSA lib conf.c:3056:(snd_config_update_r) /usr/share/alsa/alsa.conf may be old or corrupted: consider to remove or fix it
alsactl: set_controls:1088: snd_ctl_open error: Invalid argument

Вот что добавил в /usr/share/alsa/alsa.conf:

Код: Выделить всё

pcm.lowpass {
type ladspa
slave.pcm hw:0,0
path "/usr/lib/ladspa"
plugins [ {
label lpf
input {
controls [ 150 ]
}
} ]
}


Мне пока что не очень понятно, что тут не так...


Конфиг алсы читается каждый раз при запуске приложения. Т.е. если это xmms достаточно его отредактивать и перезапустить xmms, к xmms и любому следующему запущенному приложению причитается конфиг. Конфиг читает libasound при загрузке приложения.
Спасибо сказали: