Форум: "Media";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];
ВнизЕквалайзер в проигрывателе Найти похожие ветки
← →
SergProger © (2005-09-22 21:08) [0]Всем привет! Кто-нибудь знает, как реализовать еквалайзер в проге или найти документацию по этому вопросу? Спасибо.
← →
Jeer © (2005-09-23 10:26) [1]Гребенка фильтров с регулируемым уровнем пропускания каждого.
Реализация фильтров не принципиальна, в первом приближении.
← →
Sergey_R © (2005-09-23 17:05) [2]Используй BASS
← →
SergProger © (2005-09-23 19:48) [3]Jeer, спасибо, это я знаю, но как это реализовать???
← →
Дмитрий Белькевич (2005-09-25 16:23) [4]FFT, например. Готовых бесплатных реализаций есть.
← →
Zer0 © (2005-09-25 19:03) [5]гребенка фильтов и FTT - это мрачняк =)
нужно использовать сверточную функцию
← →
Дмитрий Белькевич (2005-09-25 23:34) [6]Вопрос: как пользовать свёртки на одномерных данных? (Wav файл)?
← →
Jeer © (2005-09-26 11:14) [7]Zer0 © (25.09.05 19:03) [5]
FFT, в данном случае, это та же "гребенка фильтров".
И что в этом мрачного ?
Свертка ?
Может быть имелись в виду FIR ?
А для реализации быстрой свертки во временной области все равно используют
умножение в частотной, т.е. быстрые алгоритмы ДПФ (FFT)
Zer0 © (25.09.05 19:03) [5]
Что реализовать ? Фильтры ?
См. любой учебник по DSP.
← →
Дмитрий Белькевич (2005-09-26 13:00) [8]>Может быть имелись в виду FIR ?
Ото ж и я говорю. Верхи, конечно, можно порезать, усреднив вавку - верхи сразу уедут. Можно это даже свёрткой назвать - типа 1 1 1 по трём отсчетам. Но толку? Честного эквалайзера всё равно не получится, пока всё в частотную область не перекинешь.
← →
Jeer © (2005-09-26 15:08) [9]Дмитрий Белькевич (26.09.05 13:00) [8]
Я ж уточнил, что метод реализации "гребенки" пока не принципиален.
Можно и на FIR сделать приличный эквалайзер, а в основе FIR все таже свертка во временной области. На современных пнях и амд и так все будет летать.
← →
Asprofi (2005-09-29 11:21) [10]Там есть компоненты, в том числе и EQ
..::: www.dx-worx.de :::..
← →
Asprofi (2005-09-29 11:22) [11]Там есть компоненты, в том числе и EQ
..::: www.dsp-worx.de :::..
← →
SergProger © (2005-09-29 19:47) [12]Огромное всем спасибо! Теперь осталось разобраться с компонентами.
← →
Дмитрий Белькевич (2005-09-30 04:03) [13]>Можно и на FIR сделать приличный эквалайзер
С каких пор фнч и фвч стали полосу резать?
← →
Дмитрий Белькевич (2005-09-30 04:06) [14]Или, тем более, что-то усиливать. Эквалайзер, насколько я помню, предполагает не только - но и +
← →
Jeer © (2005-09-30 12:08) [15]Дмитрий Белькевич (30.09.05 04:03) [13]
А с каких это пор FIR только LowPass или HighPass ?
> что-то усиливать.
А умножение на >1 это не усиление ? :))
← →
Дмитрий Белькевич (2005-10-01 04:19) [16]>А с каких это пор FIR только LowPass или HighPass ?
Посмотрел по ссылкам:
"Эти фильтры реализованы через процесс, называемый сверткой (convolution): есть таблица размера n, которая комбинирует (складывает) последние n точек функции в одну выходную точку, умножая каждую из них на определенное число - весовой коэффициент. Таблица свертки строится один раз в начале по требуемому частотному воздействию."
Там же:
"На самом деле влоб делать свертку очень медленно. Применяется другой процесс, для больших сверток в сотни раз более быстрый, но полностью аналогичный этому - FFT, умножение в частотном пространстве, обратный синтез"
Интересно, как вообще можно посчитать коэффициенты в этом случае? Матрица коэффициентов 1x100 что ли? Как можно к мешанине отсчетов, где все частоты смешаны применить свёртку? Не понятно. Сглаживание n x 1 прибьет верхние частоты, единственное, что можно представить. Хотя, возможно, я не прав.
>А умножение на >1 это не усиление
Умножение всего - да, но как умножить определенную частоту? В fft - без пробем. Разложили - поумножали на коэффициенты, синтезировали опять а здесь как?
← →
Jeer © (2005-10-03 13:24) [17]
> Дмитрий Белькевич (01.10.05 04:19) [16]
Небольшой ликбез по DSP.
В одномерной линейной дискретной системе связь между входом и выходом задается разностным уравнением
Y(k) = sum(B[n] * X[k-n]) - sum(A[m] * Y[k-m])
В таком виде это есть рекурсивный ЦФ (РЦФ / IIR), т.е. фильтр с обратной связью
Если коэф. A[m] равны 0, то получаем нерекурсивный ЦФ (НРЦФ / FIR)т.е. фильтр без обратных связей.
Если коэф-ты A или B зависят от л, то имеем параметрический фильтр, иначе - инвариантный.
Поведение фильтра (АЧХ и ФЧХ) целиком и полностью зависит от значений коэф. A и B
В общем случае, цифровая линейная система может выполнять любую
Нет никаких ограничений на реализацию тех или иных подвидов частото-зависимых цепей, кроме естественных для цифровых систем.
Свертка (convolution) во временной области это и есть НРЦФ.
Коэффициент усиления ЦФ (в целом) определяется коэф-ми A и/или B или вынесенным умножающим звеном (множителем)
Для реализации эквалайзера на заданное число полос ( обычно N = 5 -11) можно использовать набор из N нерекурсивных или рекурсивных фильтров.
Для реализации полосового НРЦФ используется комбинация из ФНЧ и ФВЧ с коэфф. B1[] и B2[], которые заменяются, с учетом коммутативности свертки, на массив коэф-тов B[] = B1[] * B2[], т.е. длина фильтра остается неизменной.
ФВЧ реализуется из ФНЧ методов инверсии.
НРЦФ (FIR) хороши тем, что проще считаются, имеют линейную фазу.
НРЦФ считаются методами:
- оконных функций;
- разложением АЧХ в ряд Фурье;
- наименьшими квадратами;
- Ремеза (численное решение Чебышевской аппроксимации)
Недостаток - возможна значительная длина фильтра (порядок свертки) для достижении требуемых параметров.
Впрочем, на современных процессорах класса P-IV это не накладывает сильных ограничений на скорость вычисления отсчета, но остается проблема временной задержки.
Известный метод сглаживания данных
Y = 0.2*(x1+x2+x3+x4+x5), не что иное как двустронний симметричный нерекурсивный ЦФ нижних частот.
Рекурсивные ЦФ часто считаются по фильтру-прототипу, а далее методами перехода от аналогового прототипа к дискретному (например, метод билинейного преобразования) рассчитывается цифровой фильтр.
Для перехода от ФНЧ к другому типу фильтра (ФВЧ, ПФ, ЗФ) используются соответствующие формулы аппроксимации оператора Лапласа через z-преобразование.
> Умножение всего - да, но как умножить определенную частоту
Умножается выход соответствующего полосного фильтра - собственно это и есть работа эквалайзера - изменить относительное содержание заданной полосы частот.
← →
ArtemESC © (2005-10-03 18:56) [18]я использовал TrackBar ...
{Основная идея:
По таймеру инкрементировать Position...}
TrackBar конечно не очень красиво, но есть множество
видов Track-ов в Инете с гибкими настройками...
← →
Antonn © (2005-10-04 03:35) [19]ArtemESC © (03.10.05 18:56) [18]
речь не о контролле
← →
Дмитрий Белькевич (2005-10-08 04:39) [20]>Небольшой ликбез по DSP.
Спасибо за труд. Если не сложно, ответьте плз, еще на несколько вопросов.
К ФНЧ у меня собственно почти никаких вопросов. Только немного неочевидно, как частоту среза изменять. А вот как реализовать ФВЧ, и следующие из связки ФНЧ + ФВЧ ПФ и ЗФ?
>ФВЧ реализуется из ФНЧ методов инверсии.
Инверсии чего?
>формулы аппроксимации оператора Лапласа через z-преобразование
Это и есть "инверсия"?
>Y = 0.2*(x1+x2+x3+x4+x5), не что иное как двустронний симметричный нерекурсивный ЦФ нижних частот
Как я и говорил, только для пяти отсчетов. Фильтр 1 1 1 1 1.
Но как частоту среза поменять - не понятно. Она будет зависеть от частоты дискретизации, как я понимаю, и больше ни от чего.
Как посчитать массив B[n]?
← →
Jeer © (2005-10-10 11:59) [21]Спасибо за труд. Если не сложно, ответьте плз, еще на несколько вопросов.
К ФНЧ у меня собственно почти никаких вопросов. Только немного неочевидно, как частоту среза изменять. А вот как реализовать ФВЧ, и следующие из связки ФНЧ + ФВЧ ПФ и ЗФ?
>ФВЧ реализуется из ФНЧ методов инверсии.
Q:Инверсии чего?
A: Инверсия спектра.
ФВЧ может быть определен как результат вычитания из входного сигнала, сигнала после фильтра НЧ, т.е.
Y[k] = X[k] - sum(B[n]*X[k-n])
Если Hlow[n] - импульсная хар-ка ФНЧ, то имп. хар-ка ФВЧ определяется как Hh(0) = 1 - Hlow(0), Hh[n] = - Hlow[n]
Есть другой способ - реверс частоты АЧХ ФНЧ, т.е. замена w* = PI - w
Это приводит к смене знака у всех нечетных членов импульсной хар-ки.
Полосовой образуется через перемножение B[n] соотвествующих ФНЧ и ФВЧ.
Заграждающий - через инверсию полосового.
>формулы аппроксимации оператора Лапласа через z-преобразование
Q:Это и есть "инверсия"?
A: Нет, инверсия см. выше.
Аппроксимация - это один из методов синтеза рекурсивных фильтров - наиболее распространено билинейное преобразование, вместо оператора Лапласа p в фильтре прототипе подставляется (g - нормирующий множитель)
p == g*(1-Z^-1)/(1+Z^-1)
>Y = 0.2*(x1+x2+x3+x4+x5), не что иное как двустронний симметричный нерекурсивный ЦФ нижних частот
Q:Как я и говорил, только для пяти отсчетов. Фильтр 1 1 1 1 1.
Q:Но как частоту среза поменять - не понятно. Она будет зависеть от частоты дискретизации, как я понимаю, и больше ни от чего.
A:АЧХ IIR определяется как
H(w) = sqrt( sum( B[n] * Cos(w*n*t))^2 +sum( B[n] * Sin(w*n*t))^2)
Q:Как посчитать массив B[n]?
A:
Уже приводил методы:
НРЦФ считаются методами:
- оконных функций;
- разложением АЧХ в ряд Фурье;
- наименьшими квадратами;
- Ремеза (численное решение Чебышевской аппроксимации)
Наиболее просто - через оконные функции.
Применяемость - фильтры с относительно небольшой длиной и "идеальной" характеристикой, т.е. близкой к прямоугольной.
Считается, как обычно, импульсная хар-ка идеального (прямоугольного) ФНЧ (через преобразование Фурье)
H[n] = sin(2*PI*n*w)/(PI*n)
Вектор коэффициентов B[n] определется умножением на вектор коэффициентов одной из используемых оконных функций W[n]
B[n] = H[n] * W[n]
Предложено много оконных функций с различными корректирующими свойствами.
По существу основной задачей является устранение эффекта Гиббса (сильная осцилляция АЧХ при использовании идеальной АЧХ)
Окна: Ханн, Хемминг, Блэкман, Барлетт, Ланцош-Каппелини,Папуллис, Коши, Гаус и др
Например, окно Ханна
W[n] = 0.5*(1+cos(2*PI*n/(N-1)))
А вообще-то, рекомендую обратиться к учебникам по цифровыи фильтрам.
Я не могу писать здесь новый:))
← →
Дмитрий Белькевич (2005-10-11 02:45) [22]Спасибо за ответ.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.014 c