Реализация эффектов эхо и реверберации
Код программы для выполнения этого задания позаимствован из учебного диска с сайта www.ti.com (Chapter3 “Echo and Reverberation").
Звуковое эхо это отражённый звук. Обычно эхо замечают, если слышат также прямой звук от источника, когда в одной точке пространства можно несколько раз услышать звук из одного источника, пришедший по прямому пути и отражённый от окружающих предметов. Так как при отражении звуковая волна теряет энергию, то звуковая волна от более сильного источника звука сможет отразиться от поверхностей много раз, проходя через одну точку, что вызовет многократное эхо.
Рис. 5.1. Принципиальная схема реализации эффекта “эхо”
Выход = Вход + Вход (прошедший через задержку и усиление)
Усиление < 1
В данной схеме рассмотрено эхо, при однократном отражении, но в реальных условиях происходят множественное отражение сигнала от различных поверхностей.
Сущность реверберации состоит в том, что исходный звуковой сигнал смешивается со своими копиями, задержанными относительно него на различные временные интервалы. Этим реверберация напоминает эхо. Отличие заключается в том, что при реверберации число задержанных копий сигнала может быть значительно больше, чем при эхо. Теоретически число копий может быть бесконечным. Кроме того, при реверберации, чем больше время запаздывания копии сигнала, тем меньше ее амплитуда. Эффект зависит от того, каковы временные промежутки между копиями сигнала и какова скорость уменьшения уровней их громкости. Если промежутки между копиями малы, то получается собственно эффект реверберации – возникает ощущение объемного гулкого помещения, звучание музыкальных инструментов становится сочным, объемным, с богатым тембровым составом, голоса певцов приобретают напевность, а присущие им недостатки становятся малозаметными.
Для начала работы нам нужно создать входной сигнал для того чтобы наблюдать результат наложения эффектов. Входной сигнал мы будем генерировать с помощью программы Cool Edit. Для этого запускаем программу Cool Edit и создаем новый файл, выбрав пункт меню File - New и в появившемся окне (Рис. 5.2.) выбираем нужные нам параметры сигнала.
Рис. 5.2 Настройки сигнала
В качестве входного, был выбран тестовый синусоидальный сигнал с частотой дискретизации 8000Гц (что вполне достаточно при исследовании речевого сигнала). Для его генерации в данной программе выбираем Generate - Tones и в открывшемся окне можем настроить требуемую форму сигнала (Рис. 5.3).
Рис. 5.3.Настройка параметров синуса
После настройки получили сигнал синусоидальный формы частотой 50Гц. Для того чтобы исследовать результат наложения эффектов эха и реверберации нужно чтобы длительность полезного сигнала было малой относительно длительности интервала прослушивания. В результате мы получим сигнал, который будем подавать на вход ЦСП (Рис. 5.4.).
Рис. 5.4.Форма входного сигнала
Сигнал со звуковой карты подаётся на плату eZdsp, на разъём STEREO IN (Рис. 5.5.).
Рис. 5.5.Подключенный к STEREO IN
Теперь можем создать проект с именем Echo в CCS. Для просмотра результатов работы ЦСП, потребуется в код модуля main.c внести несколько изменений. Добавить три буфера для хранения различных значений (Рис. 5.6.):
· buffer[15000] - для хранения исходного сигнала
· buffer_echo[15000] - для хранения сигнала с эффектом эхо
· buffer_rev[15000] - для хранения сигнала с эффектом реверберации
Рис. 5.6.Добавления в коде
Перед компиляцией необходимо настроит параметры активного проекта. Для этого через контекстное меню на проекте входим в Propetis (Рис. 5.7.) и устанавливаем модель памяти huge(по умолчанию large), Specify type size = 32 (по умолчанию 16) и silicon_version = 5515.
Рис. 5.7.Настройки проекта
Для подключения ранее созданной конфигурации надо через контекстное меню выбрать (Рис. 5.8.):
Рис. 5.8.Подключение к проекту ранее созданной конфигурации
Для начала работы с ЦСП нужно пометить проект как активный (Set as Active Project) и оттранслировать его выбором Project Build Active Project. После появления сообщения Build complete for project Echo в консоли, можем приступить к отладке проекта на ЦСП. Для этого выбираем Debug - Debug Active Project после чего открывается окно отладчика (Debug) среды eclipse (Рис. 5.9.).
Через меню Target подключаем плату (через Connect), загружаем результат трансляции (файл с расширением out, через меню Load Program).
Рис. 5.9. Окно отладчика “Debug”
После настройки и загрузки проекта в ЦСП можно запустить его на выполнение Debug->Target->Run. Перед этим нужно добавить требующиеся нам переменные в окно Watch (Рис. 5.10.), чтобы в дальнейшем их можно было просматривать.
Рис. 5.10.Окно “Watch”
В данном окне для каждой переменной имеется несколько полей:
· Name - полное имя переменной
· Value - значение переменной
· Address - адрес по которому хранится переменная в памяти ЦСП
· Type - тип переменной
В нашем случае буферы представлены в виде массивов. Поэтому в поле Value указывается адрес первого элемента, а если нажать на символ «+» то можно увидеть все значения элементов массива.
Теперь можно запустить проект, нажав клавишу F8 (Рис. 5.11.). В окне Console мы можем наблюдать ход выполнения программы.
Рис. 5.11.Выполнение программы
Для визуализации результат работы программы воспользуемся стандартным средством CCS Graph. Для этого нужного поставить на паузу выполнение программы, повторным нажатием клавиши F8 (либо остановиться по заранее заданной точке останова breakpoint) и выбрать Tools - Graph - Single Time. Появившееся окно дает возможность настроить параметры отображения входного сигнала, сигнала с эффектом эха, сигнала с эффектом реверберации соответственно (Рис. 5.12.). Поля Acquisition Buffer Size содержит размер буфера данных, Dsp Data Type - тип данных, Start Address - адрес первого элемента буфера, Display Data Size - количество элементов отображаемых на графиках.
Рис. 5.12. Настройки для отображения сигналов
После нажатия клавиши OK, мы получим графическое отображение интересующих сигналов (Рис. 5.13.): исходный сигнал, сигнал с эхо, сигнал с реверберацией соответственно
Рис. 5.13. Сигналы
На Рис. 5.13 можем наблюдать, как изменяется исходный сигнал при наложении на него эффектов эха и реверберации. Аналогичную картину можно наблюдать на экране осциллографа, подключённого к STEREO OUT.