Василий Макаров дата публикации 05-12-2006 08:55 Компонент «Визуализатор спектра»
Причиной создания данного компонента является восполнить пробел в теме "Преобразование Фурье".
В данной теме содержатся вопросы, касающиеся визуализации спектра цифрового аудиосигнала, но конкретных решений данной проблемы в этих темах нет. Трёхдневный поиск подобных решений в Интернете привёл только к теории в виде алгоритмов преобразования Фурье. Но для реализации этих алгоритмов необходимо хорошо знать математику, что для многих программистов проблематично. Так же не нашлось ни одного ресурса с доступным исходным кодом анализаторов-визуализаторов спектра на Delphi.
Предлагаемый компонент TZSpectrView предназначен для визуального восприятия спектра аудиосигнала в реальном масштабе времени. Его можно использовать в различных проигрывателях аудио/видео файлов, рекордерах и других программах работы со звуком. Данный компонент всего лишь пример использования преобразования Фурье на практике, не претендующий на роль профессионального анализатора спектра.
Входным параметром для данного компонента является буфер с аудиоданными, частотой дискретизации 44100 герц и форматом 16 бит/семпл, стерео/моно. Длинна буфера фиксирована, может выбираться из нескольких значений 1024, 2048, 4096, 8192, 16384, 32768 семплов. Внешний вид компонента в работе изображен на нижеприведенном рисунке.
Внешний вид компонента
Компонент имеет нелинейные характеристики отображения амплитуд и частот, а также градиентную окраску пиков спектра в зависимости от амплитуды.
Для демонстрации работы компонента прилагается тестовое приложение — проигрыватель аудиофайлов формата WAV. Данное приложение может служить примером использования данного компонента, а также анализ исходного кода позволяет произвести подключение компонента к различным разработкам программистов, заинтересованных в данном компоненте.
Имеются всего два специфических свойства компонента, доступных в инспекторе объектов:
- BufferSize — (размер буфера аудиоданных) может быть установлен в следующие значения: bs1024, bs2048, bs4096, bs8192, bs16384, bs32768. По умолчанию это значение bs8192 т.е. 8192 семплов/ буфер.
- ChanelMode — (канальный режим) может принимать два значения: cmMono, cmStereo. По умолчанию cmStereo (хотя при визуализации оба канала суммируются, параметр необходим визуализатору для определения режима данных: моно/стерео).
Для начала работы визуализатора необходимо вызвать метод Start, соответственно для окончания работы — метод Stop. Для передачи аудиоданных для визуализации служит метод Process(const Buff), где Buff (нетипизированная константа) — буфер с аудиоданными. Можно передавать через этот параметр разименованный указатель на буфер с аудиоданными.
Компонент создан и тестировался на Delphi 7.
Прилагаемые материалы: архив TZSpectrView.rar c компонентом и демонстрационной программой, включая исходный код.
© 2006 ZEF http://dj-zef.narod.ru
К материалу прилагаются файлы:
[Преобразование Фурье]
Обсуждение материала [ 23-04-2008 10:32 ] 17 сообщений |