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

 
 
 
Reply to this topicStart new topic
> Алгоритм на основе FFT и интерполяции, помогите разобраться
Burenkov Sergey
сообщение Jan 11 2013, 09:07
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 10-01-13
Пользователь №: 75 145



Доброго дня!
Нашел в сети древнюю статью про тюнер для пианино, там сигнал после ких фильра подается на бпф с последующей интерполяцией по двум соседним бинам. Мне непонятен следующий момент:
Описан Down Sampling, как я понял по описанию тут после фильтра в массив для бпф заносится каждый 11 сэмпл, чтобы увеличить разрешение по частоте... в этом случае разрешение будет 2.112 Гц на бин, но тогда при размере буфера в 512 сэмплов частота самого последнего бина будет только 1кГц, а нужно определять до 4кГц. Тут видимо я что то недопонимаю
Если кому-то не лень прочитать статью, буду благодарен за советы!
Go to the top of the page
 
+Quote Post
KalashKS
сообщение Jan 11 2013, 10:32
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



А какая у вас частота дискретизации?
При 96кГц и прореживании в 11 раз должно быть видно до 96/22=4.3 кГц с разрешением 17 Гц при длине окна 512 отсчетов. На сколько точность оценки поднимет интерполяция, не знаю.
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Jan 11 2013, 10:47
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 10-01-13
Пользователь №: 75 145



Извиняюсь) ссылку то не привел на статью http://www.tedknowlton.com/resume/CCPPT.htm
Тут используется 11,894 Hz
Go to the top of the page
 
+Quote Post
KalashKS
сообщение Jan 11 2013, 11:41
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Целиком не прочитал, выделил основное. Для настройки разных нот применяется разный коэффициент децимации. Не знаю, насколько снижение точности при этом критично для струн, настраиваемых в унисон, а для различных нот оно должно быть не так заметно.
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Jan 11 2013, 18:01
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 10-01-13
Пользователь №: 75 145



Цитата(KalashKS @ Jan 11 2013, 15:41) *
Целиком не прочитал, выделил основное. Для настройки разных нот применяется разный коэффициент децимации. Не знаю, насколько снижение точности при этом критично для струн, настраиваемых в унисон, а для различных нот оно должно быть не так заметно.

Спасибо. Жалко, тогда автоматически определить ноту не получается...
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jan 24 2013, 23:00
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Определить ноту можно и без прореживания, тут особая точность по частоте не нужна.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Jan 26 2013, 00:43
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



В статье, похоже, пытались минимальными аппаратными средствами получить максимальную точность определения частоты. Можно получить ту же точность увеличив буфер. При этом не требуется различное прореживание для различных нот, достаточно длинного буфера. Время счета, естественно, возрастает. Но для современных DSP это не проблема. RealTime все равно получается. В статье не учтено совершенно различие частоты для нескольких струн, по которым ударяет одна клавиша. Это упомянуто во введении, а дальше как-то опущено. Мне кажется, что точность настройки должна быть очень хорошей. Можно смотреть по огибающей, но, мне кажется, лучше применить окно, чтобы увеличить разрешение по частоте.
Для одной частоты можно получить интерполяцией очень высокую точность ее определения. Когда же там смесь близких частот, то нужно их разрешать, чтобы понять какая струна дает какую частоту.
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Jan 29 2013, 07:33
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 10-01-13
Пользователь №: 75 145



Цитата(Alexey Lukin @ Jan 25 2013, 03:00) *
Определить ноту можно и без прореживания, тут особая точность по частоте не нужна.

На низких нотах разница между двумя соседними нотами чуть больше герца, точность нужна хорошая.


Цитата(Alex11 @ Jan 26 2013, 04:43) *
В статье, похоже, пытались минимальными аппаратными средствами получить максимальную точность определения частоты. Можно получить ту же точность увеличив буфер. При этом не требуется различное прореживание для различных нот, достаточно длинного буфера. Время счета, естественно, возрастает. Но для современных DSP это не проблема. RealTime все равно получается. В статье не учтено совершенно различие частоты для нескольких струн, по которым ударяет одна клавиша. Это упомянуто во введении, а дальше как-то опущено. Мне кажется, что точность настройки должна быть очень хорошей. Можно смотреть по огибающей, но, мне кажется, лучше применить окно, чтобы увеличить разрешение по частоте.
Для одной частоты можно получить интерполяцией очень высокую точность ее определения. Когда же там смесь близких частот, то нужно их разрешать, чтобы понять какая струна дает какую частоту.

У меня немного другая задача, мне не нужно определять частоту для двух струн, только для одной. Более длинная выборка это не только время счета но время самой выборки. Например, нота Ми большой октавы, ее частота 82.41Гц. на пол тона ниже (на 9,63Гц) на частоте 77.78Гц находится ми бемоль, т.е. даже если я определю частоту с точностью 0,5Гц я получу на этих нотах ошибку в 5%, это будет заметно на слух. Можно поподробнее насчет "окна"?
Go to the top of the page
 
+Quote Post
KalashKS
сообщение Jan 29 2013, 08:23
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Цитата(Burenkov Sergey @ Jan 11 2013, 22:01) *
Спасибо. Жалко, тогда автоматически определить ноту не получается...


Тут, если вычислительные мощности позволяют, можно последовательными приближениями ее определить. Если я правильно считаю, то без прореживания при длине окна 512 можно определить ноту с точностью до октавы. После этого можно проредиться и на следующем шаге определить уже и саму ноту. При меньшем окне понадобится больше шагов, но при этом может снизится вычислительная сложность.
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jan 29 2013, 18:23
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Цитата(Burenkov Sergey @ Jan 29 2013, 10:33) *
На низких нотах разница между двумя соседними нотами чуть больше герца, точность нужна хорошая.

Я имел в виду, что без прореживания можно определить примерное положение ноты, а затем уже выбрать нужный коэффициент прореживания в зависимости от этого.
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение Jan 30 2013, 10:33
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 10-01-13
Пользователь №: 75 145



Спасибо всем за советы, буду пробовать. Отпишу по результату)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:43
Рейтинг@Mail.ru


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