реклама на сайте
подробности

 
 
> Спектральный анализ 44kHz stereo на STM32Fxxx..., Возможность и современный опыт сообщества?
KnightIgor
сообщение Feb 22 2017, 16:49
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Привет всем.

Первичный поиск по форуму дал мне не много результатов. Тема немного затрагивалась в 2013.

Вопросы:
- делал ли кто сабж,
- какой минимально возможный STM32F мог бы потянуть задачу спектрального анализа музыки 44kHz 16 бит стерео на предмет определения гармонии (скорее - доминирующего тона в каждый момент времени в медленных композициях); данные идут по I2S.

Спасибо за внимание.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_pv
сообщение Feb 22 2017, 17:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



fft у кортексов очень грубо говоря - 100 тактов на отсчёт у M4, раза в два больше у М3.
отдельные ноты неплохо бы различать, то есть корень 12й степени из 2 = 5%, от, пусть будет 200Гц. то есть 10 Гц разрешения по частоте хотя бы иметь надо, то есть ~100мс и соответственно FFT на 4k точек, даёт 4e3 * 100 / 0.1 = аж 4МГц тактовой частоты. => STM32 абсолютно любой, даже M0, у которого на FFT десять раз больше времени уйдёт, если ему данные малость проредить (зачем ему 44кГц для определения частоты в районе 1кГц) то и F0 вполне справится.

ну и если надо просто некую "среднюю" частоту сигнала найти, то отношение среднеквадратичного значения производной к среднеквадратичному значению сигнала можно хоть на калькуляторе руками успеть посчитать sm.gif
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Feb 23 2017, 10:21
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(_pv @ Feb 22 2017, 19:09) *
Отдельные ноты неплохо бы различать, то есть корень 12й степени из 2 = 5%, от, пусть будет 200Гц. то есть 10 Гц разрешения по частоте хотя бы иметь надо

Тут я задумался и засомневался, подходит ли FFT для анализа именно гармонии по той самой причине, что музыкальный тональный ряд нелинеен и есть степенная функция, то есть тот самый корень 12-й степени из 2 на полутон, спасибо Баху за темперирование. Может замутить, скажем, 12*N отдельных цифровых фильтра, где N - количество перекрываемых октав? Думаю, трех - малой, первой и второй, - будет достаточно. Это получается от 131Hz "до" малой до 1047Hz "си" второй. Какова оценка необходимой производительности будет?

Спасибо заранее.

Цитата(khach @ Feb 23 2017, 12:04) *
Спектроанализатор, блютус, USB, I2S на одном камне в риалтайме? Не верю (с). Как пример - SDR радио на кортексах (любительское). Конечно без особой оптимализации, но в эпоху STM32F4 пришлось использовать два процессора с межпроцессорным взаимодействием. И только с появлением STM32F7 все "утопталось" в один камень.

Не все так страшно. Во-первых, BT - отдельный модуль с I2S выходом. CPU лишь настраивает его по UART. Во-вторых, спектроанализатор с I2S как вход CPU и USB с I2S как выходом - альтернативно-работающие объекты.
Go to the top of the page
 
+Quote Post
_pv
сообщение Feb 23 2017, 11:13
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(KnightIgor @ Feb 23 2017, 16:21) *
Может замутить, скажем, 12*N отдельных цифровых фильтра, где N - количество перекрываемых октав? Думаю, трех - малой, первой и второй, - будет достаточно. Это получается от 131Hz "до" малой до 1047Hz "си" второй. Какова оценка необходимой производительности будет?

Герцелю надо лишь умножение и сложение на отсчёт, но в результате 5-10 тактов на отсчёт набежит, соответственно если надо посчитать спектр на отдельных 10-20 частотах, то Герцель будет быстрее, плюс сетка частот произвольная, но если больше 20, то ФФТ хоть и для всего спектра будет быстрее.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Feb 23 2017, 11:33
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(_pv @ Feb 23 2017, 13:13) *
Герцелю надо лишь умножение и сложение на отсчёт, но в результате 5-10 тактов на отсчёт набежит, соответственно если надо посчитать спектр на отдельных 10-20 частотах, то Герцель будет быстрее, плюс сетка частот произвольная, но если больше 20, то ФФТ хоть и для всего спектра будет быстрее.

Я так понимаю, что для случая 36 частот FFT будет быстрее, но вопрос остается, как "попасть" на нотный стан отсчетами FFT: шаг между частотами растет от 8Hz внизу малой октавы быстро до 55Hz в конце второй. Если взять шаг те же 8Hz, то получим (1047-131)/8=115 бинов частот, или 230 FFT точек. Так? Для анализа наличия нот надо будет просто выбрать подходящие близкие бины из результата?
Go to the top of the page
 
+Quote Post
_pv
сообщение Feb 23 2017, 12:21
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(KnightIgor @ Feb 23 2017, 17:33) *
Я так понимаю, что для случая 36 частот FFT будет быстрее, но вопрос остается, как "попасть" на нотный стан отсчетами FFT: шаг между частотами растет от 8Hz внизу малой октавы быстро до 55Hz в конце второй.

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

Цитата(KnightIgor @ Feb 23 2017, 17:33) *
Если взять шаг те же 8Hz, то получим (1047-131)/8=115 бинов частот, или 230 FFT точек. Так?

Нет, 230 точек на 44кГц дадут разрешение по частоте 190Гц.

Цитата(KnightIgor @ Feb 23 2017, 17:33) *
Для анализа наличия нот надо будет просто выбрать подходящие близкие бины из результата?

полученный спектр можно тоже интерполировать и брать значение на нужной частоте. хотя и интерполяция "ближайшим соседом" возможно тоже подойдёт.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- KnightIgor   Спектральный анализ 44kHz stereo на STM32Fxxx...   Feb 22 2017, 16:49
|- - KnightIgor   Цитата(_pv @ Feb 22 2017, 19:09) STM32 аб...   Feb 22 2017, 20:57
||- - KnightIgor   Цитата(_pv @ Feb 23 2017, 14:21) Нет, 230...   Feb 23 2017, 16:56
|- - khach   Цитата(KnightIgor @ Feb 23 2017, 14:33) н...   Feb 23 2017, 12:22
- - Obam   На we.easyelectronics.ru года 3 назад делали цвето...   Feb 22 2017, 18:26
- - khach   Берите семерки STM32F746 или STM32F769 - там и ...   Feb 22 2017, 19:05
|- - Allregia   Цитата(khach @ Feb 22 2017, 20:05) Берите...   Feb 23 2017, 05:10
|- - KnightIgor   Цитата(Allregia @ Feb 23 2017, 07:10) Смо...   Feb 23 2017, 09:20
- - Genadi Zawidowski   Тогда точно придется утаптывать в целочисленку... ...   Feb 22 2017, 21:19
- - khach   Спектроанализатор, блютус, USB, I2S на одном камне...   Feb 23 2017, 10:04
|- - jcxz   Цитата(khach @ Feb 23 2017, 12:04) Как пр...   Feb 23 2017, 17:43
||- - KnightIgor   Цитата(jcxz @ Feb 23 2017, 19:43) Странно...   Feb 24 2017, 09:04
||- - jcxz   Цитата(KnightIgor @ Feb 24 2017, 11:04) З...   Feb 24 2017, 15:28
|- - Allregia   Цитата(khach @ Feb 23 2017, 11:04) Спектр...   Feb 24 2017, 09:23
- - khach   Проблемы были не со скоростью а с памятью- буфера ...   Feb 24 2017, 10:40
- - Allregia   Выводить спектроанализатор - не кино смотреть (и н...   Feb 24 2017, 11:04
- - KnightIgor   Цитата(KnightIgor @ Feb 22 2017, 18:49) ...   Feb 27 2017, 13:25
|- - romas2010   Цитата(KnightIgor @ Feb 27 2017, 16:25) П...   Feb 28 2017, 17:43
|- - KnightIgor   Цитата(romas2010 @ Feb 28 2017, 19:43) Я ...   Feb 28 2017, 19:50
|- - Aleksandr Baranov   Цитата(KnightIgor @ Feb 28 2017, 14:50) Ч...   Feb 28 2017, 20:43
- - Obam   Нету у ТС пока "сопра"...   Feb 28 2017, 18:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 04:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016