Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
3-1138614007
Barsky
2006-01-30 12:40
2006.03.19
Чтение Number из файла Paradox (*.db)


2-1141477184
ViktorZ
2006-03-04 15:59
2006.03.19
Правильный вывод данных в DBGrid


2-1141048637
Hadroran
2006-02-27 16:57
2006.03.19
Обновление с проблемой


15-1140476564
Германн
2006-02-21 02:02
2006.03.19
Потрепаться vs Прочее


2-1141213696
Wel
2006-03-01 14:48
2006.03.19
Добавить процедуру





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский