Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.17;
Скачать: CL | DM;

Вниз

Частотный анализ звука   Найти похожие ветки 

 
Nick_N_A ©   (2003-01-29 06:56) [0]

Не знает ли кто-нибудь как отделить в wav-форме отдельные частоты, как сделать своеобразный математический фильтр,
или может что собой представляет катушка и конденсатор
с мат. точки зрения.
У меня пока получилось фильтровать только один диапазон частот,
вышло что
g(x)=|f(x)-f(x+1)| - убирает нижние частоты
h(x)=(f(x)+f(x+1))/2 - сглаживание - уберает верние частоты
а g(x)/h(x) - остаются только самые низкие частоты, ничего кроме
низких ударных
как бы этот фильтр перестроить на другую частоту?


 
Digitman ©   (2003-01-29 08:30) [1]

а чем тебе не нравится FFT-алгоритм ?


 
Nick_N_A ©   (2003-01-30 05:11) [2]

Простите, я о нем первый раз слышу, а с чем его едят ?


 
trotski   (2003-01-30 06:34) [3]

После проведения над твоей функцией "амплитуда от времени" быстрого преобразования Фурье (БПФ=FFT) ты получишь функцию "амплитуда от частоты" - спектр. С ним поработаешь, потом обратное рпеобразование проведешь и все. В инете инфы много по этому поводу


 
Digitman ©   (2003-01-30 08:43) [4]


> Nick_N_A


FFT - быстрое преобразование Фурье. В сети навалом готовых реализаций алгоритмов прямого и обратного преобразования. Достаточно набрать "FFT" - и любая поисковая система завалит тебя ссылками, "выбирай - не хочу")

Весьма неплоха реализация этих алгоритмов в Intel Signal Processing Library, ибо там на полную мощь используется MMX-расширение системы команд CPU i80x86. Зайди на сайт Intel"а.

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


 
REA ©   (2003-01-30 11:19) [5]

FFT штука хорошая, но медленная и непредсказуемая. Я сделал себе фильтр, но как-то он не так работает как хочется. Или руки кривые у меня. А насчет навалом - на Delphi не так уж и много. Да и на C тоже не слишком под x86.


 
Ketmar ©   (2003-01-30 11:29) [6]

>REA © (30.01.03 11:19)
"математика штука хорошая, но медленная и непредсказуемая". в орешник.

Satanas Nobiscum! 30-Jan-XXXVIII A.S.


 
Digitman ©   (2003-01-30 12:13) [7]


> REA


))... да уж, математика - это такая хрень, что лучше не трогать ее "кривыми руками")


> А насчет навалом - на Delphi не так уж и много


Ищи и обрящешь) .. Та же IntelSPL в штатной поставке содержит достаточно неплохой демо-проект для Делфи, где наглядно демонстрируется программное использование практически всех возможностей продукта


> Да и на C тоже не слишком под x86.


Язык-то здесь причем ? Высококачественная обработка должна выполняться в основном с использованием FPU-инструкций, что без задействования SSE/MMX-сабсета действительно проблематично в плане высокой производительности


 
Jeer ©   (2003-01-30 12:33) [8]

На самом деле, корректное использование FFT требует усилий.
Да и алгоритмически (если говорить о FFT) сложно.

Возможно стоит воспользоваться рекурсивными или нерекурсивными фильтрами

Рекурсивный фильтр 2-го порядка получаемый из звена второго порядка H(s) = Wa/(s^2+Wa^2)
методом билинейного Z-преобразования s= (2/T)*(1-Z^(-1))/(1+Z^(-1))
в разностном уравнении выглядит так

y(i) = G*x(i)+b1*y(i-1)+b2*y(i-2)

где
T - период дискретизации
a = R/(2*L)
Wc = ((1/(L*C))-(R/(2*L)^2))^0.5
b1 = 2*exp(-a*T)*Cos(Wc*T)
b2 = -exp(-2*a*T)
G = (1/Wc)*(a/(L*C))*exp(-a*T)*Sin(Wc*T)
R,L,C - параметры контура (можно перейти от R к добротности)


 
Jeer ©   (2003-01-30 12:43) [9]

Нерекурсивный фильтр еще проще:))
Это взвешенная сумма отсчетов

y(i) = sum (a(i)*x(i))
i = 0..N-1

В наиболее простом случае (проектирование методом частотной выборки) коф-ты рассчитываются как коэф-ты Фурье умноженные на одну из оконных функций (Хемминга, Хариса, Блэкмана и тп)

Хемминг
w(i) = 0.54 + 0.46*Cos(2*PI*i/(N-1))


 
Ketmar ©   (2003-01-30 12:48) [10]

>Jeer © (30.01.03 12:33)
ну нельзя же с утра и так жестоко... %-)

Satanas Nobiscum! 30-Jan-XXXVIII A.S.


 
Nick_N_A ©   (2003-01-31 05:41) [11]

Jeer>Спасибо большое



Страницы: 1 вся ветка

Текущий архив: 2003.02.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
14-53172
NetBreaker666
2003-02-02 17:38
2003.02.17
Ну, что, меня здесь еще кто-нибудь помнит ?


14-53178
Владимир
2003-02-02 05:46
2003.02.17
Как узнать что посылать функциям в системной ДЛЛ?


3-52759
fool
2003-01-30 18:21
2003.02.17
Как с помощью T-SQL создать значение


1-52971
denis24
2003-02-10 09:53
2003.02.17
строки в tmemo разного цвета


1-52826
b-Ars
2003-02-06 12:32
2003.02.17
Как программно создать ярлык в меню