DIGILIGHT
Макросы | Функции
Спектральный анализ звука

Обработка звукового сигнала методом FFT. Подробнее...

Макросы

#define DOUBLE_BUFFERED_SAMPLING
 

Функции

void * get_reserved_memory (uint16_t *size)
 запрос резервной памяти Подробнее...
 
 ISR (ADC_vect)
 
 INIT (7)
 
void sample_and_fft (void)
 Захват семплов и обработка методом FFT. Подробнее...
 
uint16_t get_result_fft (uint8_t index)
 получение запрошенной гармоники FFT. Подробнее...
 

Подробное описание

Обработка звукового сигнала методом FFT.

Модуль сопряжения с библиотекой FFT от японского гения Chen-а - единственной реализации быстро работающего FFT для микроконтроллеров AVR.
В текущей реализации модуля введена двойная буфферизация для FFT, что кардинально увеличивает общую производительность - см. DOUBLE_BUFFERED_SAMPLING Двойная буфферизация заключается в том, что пока в один массив по прерываниям заносятся семплы сигнала, другой массив подвергается FFT-преобразованию, а затем массивы меняются местами.

Макросы

◆ DOUBLE_BUFFERED_SAMPLING

#define DOUBLE_BUFFERED_SAMPLING

Если есть желание убедиться, что двойная буфферизация дает выигрыш в производительности, можно заремарить этот макрос и проверить, как будет БЕЗ неё.

См. определение в файле spectrum.h строка 22

Используется в get_result_fft().

Функции

◆ get_reserved_memory()

void* get_reserved_memory ( uint16_t *  size)

запрос резервной памяти

Функция возвращает указатель на блок резервной памяти, доступный любым модулям

Аргументы
sizeв этом параметре функция получает размер запрашиваемой памяти, и в нем же возвращает количество фактически выделенной памяти.
Возвращает
указатель на блок резервной памяти, NULL если доступной памяти нет

См. определение в файле spectrum.c строка 58

Перекрестные ссылки lock_input.

◆ get_result_fft()

uint16_t get_result_fft ( uint8_t  index)

получение запрошенной гармоники FFT.

Возвращает значение указанной гармоники из результатов БПФ

Аргументы
indexпорядковый номер гармоники
Возвращает
относительный уровень гармоники

См. определение в файле spectrum.c строка 166

Перекрестные ссылки DOUBLE_BUFFERED_SAMPLING.

◆ INIT()

INIT ( )

инициализирует АЦП: встроенный AREF выравнивание результата влево автозапуск по событию - срабатыванию компаратроа 0-го таймера

См. определение в файле spectrum.c строка 106

Перекрестные ссылки ADC_PIN и ADC_PORT.

◆ ISR()

ISR ( ADC_vect  )

Обработчик прерывания по завершению АЦП. Заполняет буфер значениями семплов входного сигнала

См. определение в файле spectrum.c строка 78

◆ sample_and_fft()

void sample_and_fft ( void  )

Захват семплов и обработка методом FFT.

Захват семплов ведется с двойной буфферизацией или без нее

См. также
DOUBLE_BUFFERED_SAMPLING

См. определение в файле spectrum.c строка 124