Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Господа и дамы! Срочно нужен 30 полосный эквалайзер!
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
goryn
Господа! Может, у кого есть 30 - полосный эквалайзер с приемлемым интерфейсом, чтобы на выходе были 4096 коэфф. для фирфильтра. Идеально было бы, чтоб написан в CVI. Может, у кого есть готовый, а если нет - то сколько стоит разработать???
Спасибо!
Uuftc
Цитата(goryn @ Mar 18 2008, 22:45) *
Господа! Может, у кого есть 30 - полосный эквалайзер с приемлемым интерфейсом, чтобы на выходе были 4096 коэфф. для фирфильтра. Идеально было бы, чтоб написан в CVI. Может, у кого есть готовый, а если нет - то сколько стоит разработать???
Спасибо!

Маловато инфы - на ТЗ не тянет :-)
Хоть частоты, разрядности, требования к кристалу... что такое приемлемый интерфейс?
как это 4096 коэфф. на выходе?
goryn
Так это даже не ТЗ, а начало для разговора. Нужен софт, такой, чтобы по произвольной кривульке в звуковом диапазоне получить коэффициенты для фирфильтра. Кривулька довольно плавная (не ругайтесь!!), на ней торчат пики с добротностью не выше 30. Приемлемый интерфейс - это такой, чтоб кривульку можно было бы легко нарисовать и редактировать. Количество коэф - 4096. Есои использовать мультибанд, то 30 полос вполне хватит. Так как я в этом не корифей, то не знаю - может, есть более изящное решение.
Спасибо!
Uuftc
Цитата(goryn @ Mar 21 2008, 09:32) *
Так это даже не ТЗ, а начало для разговора. Нужен софт, такой, чтобы по произвольной кривульке в звуковом диапазоне получить коэффициенты для фирфильтра. Кривулька довольно плавная (не ругайтесь!!), на ней торчат пики с добротностью не выше 30. Приемлемый интерфейс - это такой, чтоб кривульку можно было бы легко нарисовать и редактировать. Количество коэф - 4096. Есои использовать мультибанд, то 30 полос вполне хватит. Так как я в этом не корифей, то не знаю - может, есть более изящное решение.
Спасибо!


имхо немного не в том разделе тогда сообщение. вообще - берете нужную частотку фильтра, делаете обратное фурье и вобщем, все.... потом начинаются пляски с разрядностью, точностью, округлениями, вечный вопрос флоат или фиксед и еще 153 нюанса, которые у Вас будут всплывать по ходу погружения в тему :-)
goryn
Оно, конечно, спасибо, не че делать-то?
Михаил_K
Цитата(goryn @ Mar 21 2008, 23:52) *
Оно, конечно, спасибо, не че делать-то?


Поставить MathLab и разобраться с функциями синтеза фильтров smile.gif
goryn
Спасибо, попробую.
Stanislav
Цитата(Михаил_K @ Mar 27 2008, 10:18) *
Поставить MathLab и разобраться с функциями синтеза фильтров smile.gif
Нет такого программного продукта - MathLab. Потому, что MatLab - это Matrix Laboratory.
Для расчёта всяческих фильтров и эквалайзеров лучше него сыскать что-либо, конечно, трудно...
Михаил_K
Цитата(Stanislav @ Mar 28 2008, 01:07) *
Нет такого программного продукта - MathLab. Потому, что MatLab - это Matrix Laboratory.
Для расчёта всяческих фильтров и эквалайзеров лучше него сыскать что-либо, конечно, трудно...


Ну простите меня за опечатку smile.gif
Uuftc
Цитата(Михаил_K @ Mar 27 2008, 11:18) *
Поставить MathLab и разобраться с функциями синтеза фильтров smile.gif

Да, поддерживаю - начинайте с матлабовского фильтертулбокс, затем, на любом удобном Вам языке напишите фурье - вкус почувствуете быстро и многое станет яснее.
вот.
успехов!
Grt
Цитата(goryn @ Mar 18 2008, 23:45) *
Господа! Может, у кого есть 30 - полосный эквалайзер с приемлемым интерфейсом, чтобы на выходе были 4096 коэфф. для фирфильтра. Идеально было бы, чтоб написан в CVI. Может, у кого есть готовый, а если нет - то сколько стоит разработать???
Спасибо!


Если я вас правильно понимаю, вам нужем параметрическом эквалайзер на 30 полос ? Обычно делают через бих фильтры 1-2 порядка. 30 полос будет много ресурсов кушать.
Не проще ли обойтись графическим эквалайзером через фурье анализ с диною окна 4096 ?
fontp
Matlab Filter Toolbox, это конечно, хорошо. Только не понятно как он будет рассчитаные фильтры вставлять в свою программу. Это нужно же делать интерактивно?

Вряд ли это можно считать ПРИЕМЛЕМЫМ интерфейсом: в Матлабе посчитал, в файл сохранил, программа файл считывает и пользует :-)
Матлаб не станет реальные сигналы пропускать через посчитаные фильтры
Grt
Цитата(fontp @ Apr 10 2008, 14:26) *
Matlab Filter Toolbox, это конечно, хорошо. Только не понятно как он будет рассчитаные фильтры вставлять в свою программу. Это нужно же делать интерактивно?

Вряд ли это можно считать ПРИЕМЛЕМЫМ интерфейсом: в Матлабе посчитал, в файл сохранил, программа файл считывает и пользует :-)
Матлаб не станет реальные сигналы пропускать через посчитаные фильтры


С помощью Матлаба можно подсчитать коэфф. фильтров для каждой полосы. А далее фильтруем в своей программе ...
fontp
Цитата(Grt @ Apr 10 2008, 14:48) *
С помощью Матлаба можно подсчитать коэфф. фильтров для каждой полосы. А далее фильтруем в своей программе ...


Фиксированый эквалайзер. Не интерактивный. Может для себя сгодится. А пользователь, думаю, даст в морду )))
Мне всегда казалось, что эквалайзер это такая графическая программка со скролл-барами, с помощью которой интерактивно можно порулить чкх реального канала


В сети заведомо должны быть OpenSource проекты эквалайзера

А известный оптимальный алгоритм синтеза FIR-фильтров (remez) здесь
http://www.janovetz.com/
iosifk
Цитата(goryn @ Mar 18 2008, 22:45) *
Может, у кого есть готовый, а если нет - то сколько стоит разработать???

Посмотрите у ADI есть такая штука - сигма DSP.
Сейчас на нее уже есть стартовые наборы.
alex_os
Цитата(goryn @ Mar 18 2008, 22:45) *
Господа! Может, у кого есть 30 - полосный эквалайзер с приемлемым интерфейсом, чтобы на выходе были 4096 коэфф. для фирфильтра. Идеально было бы, чтоб написан в CVI. Может, у кого есть готовый, а если нет - то сколько стоит разработать???
Спасибо!

Вот наверное самый простой в мире smile.gif эквалайзер (matlab 6.5)
Код
NumBands = 10;
L = 256
% h  - ФНЧ прототип. Каждая из полос получается сдвижкой по частоте АЧХ
% ФНЧ прототипа
h = remez(L-1, [0,1/(2*NumBands), 1.5/(2*NumBands), 1],[1, 1, 0, 0]);

h_all = zeros(1, length(h));
A = ones(1, NumBands); % коэф. усиления каждой из полос эквалайзера

for i =2:5
  A(i) = A(i-1)*power(10, -10/20); % -10dB step down
end

for i =6:10
  A(i) = A(i-1)*power(10, 10/20); % +10dB step up  
end    


for i=1:NumBands-1
    h_all = h_all + A(i)*sin( i*pi/2+(1:L)*i*pi/NumBands);
end

h_all = h_all.*h;
%h_all - синтезированный фильтр
figure(3);
freqz(h_all,1)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.