Распознание нот AtMega8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Распознание нот AtMega8

Сообщение isx »

Добрый вечер)) Не спрашивайте зачем (дабы делаю из чистого любопытства :) ), но хетелось бы узнать, возможно ли реализовать на базе Атмеги распознаватель нот из окружающей среды?
Идея в том, чтобы при появлении звука устройство выдавало на дисплей ноту, которая соответствует данному звуку в данный момент. Поскольку каждая нота является по сути определённой частотой звуковых колебаний, задача сводится к распознаванию частоты, поступающего с микрофона сигнала.
Хотелось бы узнать, возможна ли реализация данной идеи вообще, и если возможна, то как именно?
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Распознание нот AtMega8

Сообщение Ser60 »

Смотря какие звуки.. Если, например, меандр или синус, то будет просто частотомер, каких полно. Беда только, что таких звуков практически не бывает. Проблема в том, что у каждого инструмента свой тембр звучания с многочисленнми гармониками. Например, у гитары амплитуда второй гармоники почти в 2 раза превышает амплитуду первой. Сделать настройщик даже для гитары - нетривиальная задача, где по-серьезному без DSP не обойтись. Меги для этого подходят крайне плохо. Имеются, конечно, проекты настройщиков и на Мегах, но это баловство. Впрочем, можете погуглить проекты настройщиков для понимания проблемы. При распознавании звуков, особенно без ограничения на инструмент, возникнут те-же проблемы, что и в настройщиках.
Реклама
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Распознание нот AtMega8

Сообщение isx »

Распознавать нужно будет звук пианино.
Вот к примеру на картинке изображено соответствие нот и частот.
Изображение

здесь с учётом октавы http://www.myguitar1.narod.ru/index/les ... bl_not.htm

Если сделать частотомер и определёные интервалы присвоить определённым нотам, то как поведёт себя аппарат?
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Распознание нот AtMega8

Сообщение Ser60 »

Проблема не в частотомере, а в определении периода колебаний сложной формы с богатым спектром гармоник. Может это и проще для спектра пианино, но я сомневаюсь. Надо исследовать. Для начала посмотрите сигнал с микрофона на осциллографе при нажатии клавиш. У меня дома нет пианино.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Распознание нот AtMega8

Сообщение isx »

А у меня нет осциллографа :) .
Может вы сможете скачать эмулятор пианино и посмотреть сигнал, ато мне вообще никак :(
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Распознание нот AtMega8

Сообщение Ser60 »

Извините, я занят по горло другими проектами. Посмотрите для начала этот проект и особенно линки на аналогичные в конце.
Реклама
Аватара пользователя
Flasher
Мудрый кот
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Re: Распознание нот AtMega8

Сообщение Flasher »

эмулятор и живой инструмент- разные для исследования вещи. Запиши сигнал с микрофона в WaveLab или Sound Forge
Аватара пользователя
zhu4er
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пт июн 04, 2010 17:40:13
Откуда: Непокорный город-герой Севастополь

Re: Распознание нот AtMega8

Сообщение zhu4er »

Котофеи! Пианино звучит, только за счёт механической вибрации струн. А если, допустим, в районе струн установить звукосниматель для гитары. Мне кажется замеры будут точнее чем с микрофона. Далее снятый звук разложить побыринькому с помощью господина Фурье, ну и выделить нужную частоту. Как идейка? Спектроанализатор нужно человеку сделать с точными частотами.
Даже у стен есть уши...
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Распознание нот AtMega8

Сообщение YS »

Далее снятый звук разложить побыринькому с помощью господина Фурье,
Тут лучше покатит алгоритм Герцеля, т.к. надо распознавать частоты из конечного набора. Сразу отпадает проблема формы, ибо основную гармонику нота уж точно будет содержать. По сути то же ДПФ, только в виде фильтра. И гораздо менее ресурсоемко.

1. Заполняем буфер отсчетами.
2. Прогоняем алгоритм Герцеля для интересующих нот.
3. Решаем, какие пристутствуют в сигнале, и гордо показываем результат.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Распознание нот AtMega8

Сообщение isx »

Мдя... я конечно постораюсь понять принцип работы и использования алгоритма, но сомневаюсь что выйдет, пока для меня это другая планета :)
Пойду, окунусь в мир неизвестного :))
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Распознание нот AtMega8

Сообщение YS »

принцип работы и использования алгоритма
Сам алгоритм детально описан (я бы даже сказал, разжеван) по ссылке, что я дал выше. Сам ей пользовался.

Вкратце:

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

Единственное, для AVR желательно реализовать этот алгоритм для чисел с фиксированной точкой, ибо с float без FPU будет зело медленно. Т.е., тупо умножаем коэффициенты на, скажем, 10.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Распознание нот AtMega8

Сообщение isx »

Похоже для моего полугуманитарного мозга это слишком сложная задача :(
Придётся заморозить проект....
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Распознание нот AtMega8

Сообщение phanis »

Если не много переделать http://elm-chan.org/works/akilcd/report_e.html то я думаю должно получится.
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: Распознание нот AtMega8

Сообщение ILYAUL »

Из Вашего пояснения не понятно в один момент времени , сколько нот будет звучать?
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Распознание нот AtMega8

Сообщение isx »

в один момент одна нота.
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: Распознание нот AtMega8

Сообщение ILYAUL »

Частотомер + таблица нот. Коротко и быстро
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Распознание нот AtMega8

Сообщение isx »

Я вот тоже такого мнения... Только никак не въеду в работу частотометра на атмеге. Там получается поступает сигнал на ногу, по таймеру считает (к примеру каждую секунду) количество импульсов и вычисляет частоту. Я в правильном направлении мыслю? :solder:
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: Распознание нот AtMega8

Сообщение ILYAUL »

В абсолютно правильном.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Распознание нот AtMega8

Сообщение YS »

Лучше измерять период.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: Распознание нот AtMega8

Сообщение isx »

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

Вернуться в «Микроконтроллеры и ПЛИС»