Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Пн июл 02, 2012 17:40:29
Добрый вечер)) Не спрашивайте зачем (дабы делаю из чистого любопытства
), но хетелось бы узнать, возможно ли реализовать на базе Атмеги распознаватель нот из окружающей среды?
Идея в том, чтобы при появлении звука устройство выдавало на дисплей ноту, которая соответствует данному звуку в данный момент. Поскольку каждая нота является по сути определённой частотой звуковых колебаний, задача сводится к распознаванию частоты, поступающего с микрофона сигнала.
Хотелось бы узнать, возможна ли реализация данной идеи вообще, и если возможна, то как именно?
Пн июл 02, 2012 18:01:05
Смотря какие звуки.. Если, например, меандр или синус, то будет просто частотомер, каких полно. Беда только, что таких звуков практически не бывает. Проблема в том, что у каждого инструмента свой тембр звучания с многочисленнми гармониками. Например, у гитары амплитуда второй гармоники почти в 2 раза превышает амплитуду первой. Сделать настройщик даже для гитары - нетривиальная задача, где по-серьезному без DSP не обойтись. Меги для этого подходят крайне плохо. Имеются, конечно, проекты настройщиков и на Мегах, но это баловство. Впрочем, можете погуглить проекты настройщиков для понимания проблемы. При распознавании звуков, особенно без ограничения на инструмент, возникнут те-же проблемы, что и в настройщиках.
Пн июл 02, 2012 18:08:31
Распознавать нужно будет звук пианино.
Вот к примеру на картинке изображено соответствие нот и частот.
здесь с учётом октавы
http://www.myguitar1.narod.ru/index/lessons/urok_tabl_not.htmЕсли сделать частотомер и определёные интервалы присвоить определённым нотам, то как поведёт себя аппарат?
Пн июл 02, 2012 18:42:28
Проблема не в частотомере, а в определении периода колебаний сложной формы с богатым спектром гармоник. Может это и проще для спектра пианино, но я сомневаюсь. Надо исследовать. Для начала посмотрите сигнал с микрофона на осциллографе при нажатии клавиш. У меня дома нет пианино.
Пн июл 02, 2012 19:05:08
А у меня нет осциллографа
.
Может вы сможете скачать эмулятор пианино и посмотреть сигнал, ато мне вообще никак
Пн июл 02, 2012 19:13:57
Извините, я занят по горло другими проектами. Посмотрите для начала
этот проект и особенно линки на аналогичные в конце.
Пн июл 02, 2012 19:20:28
эмулятор и живой инструмент- разные для исследования вещи. Запиши сигнал с микрофона в WaveLab или Sound Forge
Пн июл 02, 2012 20:18:53
Котофеи! Пианино звучит, только за счёт механической вибрации струн. А если, допустим, в районе струн установить звукосниматель для гитары. Мне кажется замеры будут точнее чем с микрофона. Далее снятый звук разложить побыринькому с помощью господина Фурье, ну и выделить нужную частоту. Как идейка? Спектроанализатор нужно человеку сделать с точными частотами.
Пн июл 02, 2012 21:49:01
Далее снятый звук разложить побыринькому с помощью господина Фурье,
Тут лучше покатит
алгоритм Герцеля, т.к. надо распознавать частоты из конечного набора. Сразу отпадает проблема формы, ибо основную гармонику нота уж точно будет содержать. По сути то же ДПФ, только в виде фильтра. И гораздо менее ресурсоемко.
1. Заполняем буфер отсчетами.
2. Прогоняем алгоритм Герцеля для интересующих нот.
3. Решаем, какие пристутствуют в сигнале, и гордо показываем результат.
Пн июл 02, 2012 22:32:56
Мдя... я конечно постораюсь понять принцип работы и использования алгоритма, но сомневаюсь что выйдет, пока для меня это другая планета
Пойду, окунусь в мир неизвестного
Вт июл 03, 2012 19:20:02
принцип работы и использования алгоритма
Сам алгоритм детально описан (я бы даже сказал, разжеван) по ссылке, что я дал выше. Сам ей пользовался.
Вкратце:
1. Считаем несколько волшебных коэффициентов.
2. N раз вычисляем несколько уравнений.
3. По простой формуле получаем амплитуду интересующей гармоники в попугаях. Чем больше попугаев, тем выраженнее интересующая гармоника в сигнале.
Единственное, для AVR желательно реализовать этот алгоритм для чисел с фиксированной точкой, ибо с float без FPU будет зело медленно. Т.е., тупо умножаем коэффициенты на, скажем, 10.
Вт июл 03, 2012 20:05:34
Похоже для моего полугуманитарного мозга это слишком сложная задача
Придётся заморозить проект....
Вт июл 03, 2012 20:19:39
Если не много переделать
http://elm-chan.org/works/akilcd/report_e.html то я думаю должно получится.
Вт июл 03, 2012 20:24:13
Из Вашего пояснения не понятно в один момент времени , сколько нот будет звучать?
Вт июл 03, 2012 20:31:23
в один момент одна нота.
Вт июл 03, 2012 20:46:13
Частотомер + таблица нот. Коротко и быстро
Вт июл 03, 2012 23:22:31
Я вот тоже такого мнения... Только никак не въеду в работу частотометра на атмеге. Там получается поступает сигнал на ногу, по таймеру считает (к примеру каждую секунду) количество импульсов и вычисляет частоту. Я в правильном направлении мыслю?
Ср июл 04, 2012 00:23:34
В абсолютно правильном.
Ср июл 04, 2012 18:58:30
Лучше измерять период.
Ср июл 04, 2012 21:50:33
Кстати верно говорите...
Подсчитать несколько периодов и вычислить амплитуду сигнала, дабы не принимать помехи за сигналы...
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.