Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как программно выделить определённую частоту? [D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]


Xdebugger ©   (2007-09-25 19:30:00) 

Как программно выделить определённую частоту(звука)?
И отфильтровать её.


Сергей М.   (2007-10-15 12:19:00) [1]


> я еще чайник


http://www.mitov.com/index.html


Jeer   (2007-10-15 09:35:00) [2]


> hahol_64_rus   (13.10.07 13:00) [10]


Не поверишь, но поиск, известно где, по ключевым словам "алгоритм FFT" принесет массу полезной информации.


hahol_64_rus   (2007-10-13 13:00:00) [3]

мастера я тут прочитал ваше обсуждение
и чет мне тоже захотелось " воткнуть в плеер эквалайзер"
я как то пытался эт сделать но чет асоба не получилось
читал про FFT и (мне кажеца) понял его принцип
но програмно реализовать не смог этот механиз
плз покажите че тм делать
у меня плеер сдэлан в DirectShow
прошу без критики (типа там отвали с такими просьбами) я еще чайник


Jeer   (2007-10-08 17:09:00) [4]


> DeBUGger13 ©   (08.10.07 14:44) [7]



> задать определённый диапазон частот и отфильтровать их


Полосовой фильтр (пропускающий или заграждающий/режекторный).
Способ реализации зависит от требований, но если off-line - можно практически любой.


> Возможность частотного среза в своей проге.


Фильтр верхних или нижних частот. Реализация - аналогично.

P.S.
Берешь книжку по DSP и штудируешь.
http://dsp-book.narod.ru/books.html


Сергей М.   (2007-10-08 16:56:00) [5]


> Вообщем, дело в том, что мне надо сделать


Делай.
Мы не возражаем.

Ты вообще-то в [6] вник ?
Или там буквы для тебя незнакомые сплошь и рядом ?)


DeBUGger13   (2007-10-08 14:44:00) [6]

Спасибо всем за инфу!
//Hfpldjtybt kbxyjcnb
Вообщем, дело в том, что мне надо сделать:
1.Off-line фильтр частот(Можно задать определённый диапазон частот и отфильтровать их).
2.Возможность частотного среза в своей проге.

Если кто знает, где можно найти подробную инфирмацию, пожалуйста,
Киньте ссылку.


Jeer   (2007-09-27 10:08:00) [7]


> Xdebugger ©   (25.09.07 19:30)


Для начала вернемся к вопросу автора.
"Программно выделить определенную частоту"

В вопросе неоднозначность, а именно:
1. Определить наличие некоторой частоты в сигнале (например, в системах тонального кодирования, DTFM и пр).
2. В сигнале с широким спектром определить уровень сигнала искомой частоты.
3. Если "частота выделена", то говорить о ее фильтрации уже бессмысленно - она и так синус или косинус, как нравится.

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

1.Если вопрос относится к первому типу:
- можно использовать разновидность прямого преобразования Фурье - алгоритм Герцеля (Hoertzel).
Алгоритмически и по затратам намного эффективнее как классического ПФ, так и БПФ.
- вторым подходом может являться нерекурсивная цифровая фильтрация на . основе гребенчатого фильтра.
Целесообразность использования определяется степенью разрешения по частоте.

2. Если вопрос относится ко второму типу:
- уже упомянутое прямое преобразование Фурье (ПФ или БПФ - не суть) + методы устранения явлений Гиббса (windowing - "окнование")
- классические фильтры (рекурсивные или нерекурсивные) полосно-пропускающего типа.
- вейвлет-преобразование, позволяющее выявить "структуру" сигнала, а также ответить на вопрос о спектральной плотности мощности сигнала в заданной тонкой структуре, т.е. полосе частот.

P.S.
Важным фактором, часто определяющим единственно подходящий вариант "детектирования", является необходимость on-line или возможность off-line обработки.
Пока нет ответа на этот вопрос, можно только теоретизировать.


Pavia   (2007-09-26 20:41:00) [8]

Делается это так, берем пробразование Фурье. Прогоняем не для всех частот, а только для одной- нужной.
После получив ее амплитуду и фазу. Можно отфильтровывать. Отфильтровывание идет путем вычитания из амплетуды нашу волну.  

Можно, через БПФ. Делаем быстрое преобразование Фурье. В полученном спекторе занижаем нужную нам частоту. И делаем обратное преобразование фурье.

Лучше, через БПФ так-как не всегда получается создать идеальный фильтр. А используя БПФ можно построить более гибкий фильтр.

Есть еще способ. Но его я расказывать не буду, пусть Jeer рассказывает раз он знает о чем я подумал.


Efir   (2007-09-26 20:18:00) [9]


> Jeer ©   (26.09.07 10:11) [3]


А о чём он подумал?


Jeer   (2007-09-26 10:11:00) [10]


> pavia ©   (26.09.07 07:36) [2]


Можно и без того, о чем Вы подумали:)


pavia   (2007-09-26 07:36:00) [11]

Можно и без FFT.


Efir   (2007-09-26 00:07:00) [12]

FFT?


Наверх

Титульная страница Поиск, карта сайта Написать письмо