Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
Dr_Zto
1

Точное определение частоты.

02.05.2011, 10:45. Просмотров 4552. Ответов 4
Метки нет (Все метки)

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

Информация которую я собрал:
<ul><li>Частоты нот, которые можно извлечь на гитаре - от 74гц (дропРе 6я открытая) до 680гц(12 лад первой струны). Можно продолжить до 24лада, но это усложняет задачу.</li><li>Сигнал с гитары - сложная комбинация синусов, причем изменяющихся со временем.

<Изображение удалено>
На этой картинке смотрите на input syknal.</li><li>Время от взятия ноты до получения частоты должно быть не более 40мс, желательно меньше.</li></ul>
Мысли которые приходили в голову:

<ol style="list-style-type: decimal"><li>Считать число переходов через ноль - не работает, изза сложности самого сигнала.</li><li>БПФ - не слишком точен, для точности нужно много озу и времени.</li><li>ДПФ - нужно много озу и времени.</li></ol>
Может быть юзать не особо точный БПФ + таблицу нот к которой приближать частоту? Но тогда нужна точно отстроенная гитара... Да и мензура должна быть точно отстроенной. И алгоритм обещает быть громозким, одна таблица нот - порядка 40-50 чисел.

Какие алгоритмы можете посоветовать? Под рукой есть Меги 32, 8535 и 8515 (к которой могу прикрутить 32к внешней ОЗУ). Если нужно - могу привести осциллограммы сигналов.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2011, 10:45
Ответы с готовыми решениями:

Точное определение браузера
Извините за дублирование темы, но решение на javascript и мнение людей которые знают javascript (в...

Точное определение частотности
Вчера составил таблицу частотностей, конкуренции.. использовал программу &quot;Словоеб&quot; + wordstat, по...

Точное определение местоположения
здравствуйте,может кто знает как решаются такие задачи? нужно узнать точное местоположения(в...

[ Решение] Точное определение браузера?
Вообщем озадачился решением задачи, как с точностью в 99% определить например браузер и ОС клиента....

4
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
02.05.2011, 15:40 2
Поставить на вход усилительный каскад для приведения к логическим уровням, он же будет будет фильтром и отсекать мелкие колебания сигнала около нуля.
Далее - классически - мерять длину периода в тактах самого МК, собрать несколько измерений и усреднить.
Ноты лучше все-таки задать классической таблицей,можно в EEPROM.

Пример гитарного тюнера с программой - http://www.myplosi.nu/avr/gtuner/index.htm
0
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 1,142
02.05.2011, 17:04 3
А зачем доли герца?

Алгоритм в копилку - считать автокорреляционную функцию.
Замерили массив данных, дальше со сдвигом во времени насчитываем еще массивов и на первый скалярно помножаем.
В итоге получается функция, первый локальный максимум которой есть несущая частота сигнала.
Посмотреть можно тут: http://ru.wikipedia.org/wiki/Автокорреляционная_функция
Но на вики интегральное представление, плюс несильно понятно.
Рекомендую эту книжку:
http://www.ozon.ru/context/detail/id/5434289/
Все просто и понятно, аж даже с детскими картинками:)

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

Кстати, а чем БПФ от ДПФ по точности-то отличается? Это же одно и тоже, только алгоритм расчета оптимизирован.
0
Dr_Zto
02.05.2011, 21:31 4
kytikot, в том то и проблема что такие тюнеры определяют ноту после приблизительно 2х секунд с момента ее взятия.

yv_s, за автокорреляцию спасибо, а с БПФ и ДПФ да, согласен - затупил).
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
03.05.2011, 01:03 5
Неужели БПФ и автокорреляция будут быстрее считаться? Особенно в 8-ми битных МК?

Прикидочный расчет: нота А - 440 Гц. Период - 2.3мс. Если, скажем, усреднять по 8-ми измерениям - то приблизительно цикл измерения - 23мс.
Самая низкая нота на басу - 80Гц. Период - 12.5мс. Усреднение - 125мс
Явно меньше 2с.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2011, 01:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Циско,дать точное определение
http://s49.***********/i125/1205/43/492bcab636e0t.jpg IP Хаб4 - ПК-1 - 1.1.1.1, ПК-10 - 1.1.1.10,...

Точное определение скорости интернета
Привет. Подскажите, где я могу посмотреть реальную скорость интернета? на всех сайтах по-разному...

Есть ли точное определение двойной планеты
Вопрос Есть ли точное определение двойной планеты? И чего не хватило Луне, чтобы из спутника...

Точное определение вхождения подстроки в строку цифр
Добрых времени суток. Есть строка 1,2,3,4,12,13,15/2,15/1,5,1,3,2 Нужно узнать входит ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.