Версия для печати


Компонент «Визуализатор спектра»
http://www.delphikingdom.com/asp/viewitem.asp?catalogID=1295

Василий Макаров
дата публикации 05-12-2006 08:55

Компонент «Визуализатор спектра»

Причиной создания данного компонента является восполнить пробел в теме "Преобразование Фурье".

В данной теме содержатся вопросы, касающиеся визуализации спектра цифрового аудиосигнала, но конкретных решений данной проблемы в этих темах нет. Трёхдневный поиск подобных решений в Интернете привёл только к теории в виде алгоритмов преобразования Фурье. Но для реализации этих алгоритмов необходимо хорошо знать математику, что для многих программистов проблематично. Так же не нашлось ни одного ресурса с доступным исходным кодом анализаторов-визуализаторов спектра на Delphi.

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

Входным параметром для данного компонента является буфер с аудиоданными, частотой дискретизации 44100 герц и форматом 16 бит/семпл, стерео/моно. Длинна буфера фиксирована, может выбираться из нескольких значений 1024, 2048, 4096, 8192, 16384, 32768 семплов. Внешний вид компонента в работе изображен на нижеприведенном рисунке.


Внешний вид компонента

Компонент имеет нелинейные характеристики отображения амплитуд и частот, а также градиентную окраску пиков спектра в зависимости от амплитуды.

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

Имеются всего два специфических свойства компонента, доступных в инспекторе объектов:

  1. BufferSize — (размер буфера аудиоданных) может быть установлен в следующие значения: bs1024, bs2048, bs4096, bs8192, bs16384, bs32768. По умолчанию это значение bs8192 т.е. 8192 семплов/ буфер.
  2. ChanelMode — (канальный режим) может принимать два значения: cmMono, cmStereo. По умолчанию cmStereo (хотя при визуализации оба канала суммируются, параметр необходим визуализатору для определения режима данных: моно/стерео).

Для начала работы визуализатора необходимо вызвать метод Start, соответственно для окончания работы — метод Stop. Для передачи аудиоданных для визуализации служит метод Process(const Buff), где Buff (нетипизированная константа) — буфер с аудиоданными. Можно передавать через этот параметр разименованный указатель на буфер с аудиоданными.

Компонент создан и тестировался на Delphi 7.

Прилагаемые материалы: архив TZSpectrView.rar c компонентом и демонстрационной программой, включая исходный код.

© 2006 ZEF
http://dj-zef.narod.ru



К материалу прилагаются файлы: