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

 
 
> Определение периода сигнала, нужен простой алгоритм
ataradov
сообщение Aug 23 2010, 13:01
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



На картинке приведено несколько периодов колебания басовой струны гитары. Красным отмечен ожидаемый период. Необходимо определить частоту колебаний, но прямой подсчет дает в 2 раза завышенный результат, так как там полно гармоник, но на глаз период хоршо заметен. При этом амплитуда "внутреннего" колебания изменяется от полного пропадания, до равной и даже большей, чем "основного" колебания.

Нужен способ определить период, при этом сложные вычисления (типа FFT) не желательны, так как должно работать все на 8-бит микроконтроллере.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Microwatt
сообщение Aug 23 2010, 14:16
Сообщение #2


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Цитата(Taradov Alexander @ Aug 23 2010, 16:01) *
На картинке приведено несколько периодов колебания басовой струны гитары. Красным отмечен ожидаемый период. Необходимо определить частоту колебаний, но прямой подсчет дает в 2 раза завышенный результат, так как там полно гармоник, но на глаз период хоршо заметен. При этом амплитуда "внутреннего" колебания изменяется от полного пропадания, до равной и даже большей, чем "основного" колебания.

Нужен способ определить период,

Странная проблема.... "Ожидаемый период"- скорее всего, "неожиданный", это попытка измерить вторую субгармонику.
Из теории колебаний период однозначно связан с основонй частотой колебаний. Никакие гармоники не могут изменить его, могут изменить только форму колебаний, но не период. Т.е тембр струны может быть разным, но не основонй тон, частота.
Посему, нужно считать время меж пересечениями сигналом нуля, это даст полупериод. Время между фронтами или спадами даст период. Сигнал перед оцифровкой нужно пропустить через нуль-компаратор (усилитель с большим коэффициентом усиления).
"Ля" первой октавы должно давать 440гц.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Aug 23 2010, 14:47
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (Microwatt @ Aug 23 2010, 18:16) *
Странная проблема.... "Ожидаемый период"- скорее всего, "неожиданный", это попытка измерить вторую субгармонику.

Красным изображен период соответствующей частоте 82 Гц, 6 струна гитары. Синим - реальное колебание этой струны. Есть моменты, когда реальное колебание почти синус, но большую часть времени по нему бегут такие "волны". Програмные тюнеры схватываются за моменты чистой синусоиды, но они длятся долю секунды.

QUOTE (Microwatt @ Aug 23 2010, 18:16) *
Из теории колебаний период однозначно связан с основонй частотой колебаний. Никакие гармоники не могут изменить его, могут изменить только форму колебаний, но не период. Т.е тембр струны может быть разным, но не основонй тон, частота.

Именно так. Форма колебаний изменяется настолько, что в определенные моменты времени пересечений сигнала с 0 становится больше, но период сигнала не изменился и это видно из картинки. Такого искажения формы достаточно, чтобы простой метод подсчета длительности сигнала между пересечениями нуля давал сбои.

QUOTE (Microwatt @ Aug 23 2010, 18:16) *
Посему, нужно считать время меж пересечениями сигналом нуля, это даст полупериод. Время между фронтами или спадами даст период. Сигнал перед оцифровкой нужно пропустить через нуль-компаратор (усилитель с большим коэффициентом усиления).
"Ля" первой октавы должно давать 440гц.

Это все в теории (ну и на практике для более высокочастотных струн), но не работает для басовых струн, у них очень богатый спектр.

QUOTE (Oldring @ Aug 23 2010, 18:31) *
В настоящее время уже очень странное требование.

В конечном итоге важны цена и потребление. Если по цене действительно можно найти альтернативы, то по потреблению уже сложнее (ну если не пускать АРМ на 16 МГц, конечно).

Кроме применение мощного процессор противоречит самой идее простого гитарного тюнера.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Aug 23 2010, 15:17
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(Taradov Alexander @ Aug 23 2010, 18:47) *
В конечном итоге важны цена и потребление. Если по цене действительно можно найти альтернативы, то по потреблению уже сложнее (ну если не пускать АРМ на 16 МГц, конечно).

Кроме применение мощного процессор противоречит самой идее простого гитарного тюнера.


У вас действительно миллионные тиражи, чтобы бороться за плюс-минус доллар цены?
Задача явно для 16-битного DSP. По потреблению скорее всего DSP окажется эффективнее 8-битника - потребуется меньше команд для реализации одинакового алгоритма. Тем более, если он будет спать, когда не нужен.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Aug 23 2010, 15:27
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (Oldring @ Aug 23 2010, 19:17) *
У вас действительно миллионные тиражи, чтобы бороться за плюс-минус доллар цены?

Нет, у меня вообще нет планов по выпуску его. Возможно DSP будет и лучше. Можно убрать из вопроса требование к ресурсам.

FFT напрямую все-равно не подходит из-за недостаточного разрешения и неоднозначности результатов. Необходимо разрешение в единицы герц, желательно в десятые доли (это то, что заявляют китайцы в железках, но насколько им можно верить не мне судить). В спектре ложные составляющие иногда превышают по амплитуде правильные.

-----------
Прицепил wav-файл с записью звука всех струн, если кому интересно поэкспериментировать.
В матлабе можно сделать data = wavread('guitar2.wav'); и он весь ваш smile.gif

Сообщение отредактировал Taradov Alexander - Aug 23 2010, 15:31
Прикрепленные файлы
Прикрепленный файл  guitar2.wav.zip ( 890.05 килобайт ) Кол-во скачиваний: 63
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Taradov Alexander   Определение периода сигнала   Aug 23 2010, 13:01
- - scifi   Что-то мне подсказывает, что здесь без "сложн...   Aug 23 2010, 14:00
|- - Taradov Alexander   QUOTE (scifi @ Aug 23 2010, 18:00) И ещё ...   Aug 23 2010, 14:10
|- - Andrey_1   Цитата(Taradov Alexander @ Aug 23 2010, 19...   Apr 2 2011, 19:10
- - Oldring   Цитата(Taradov Alexander @ Aug 23 2010, 17...   Aug 23 2010, 14:31
- - Alex11   Вы бы поиграли с модельками, тем более, что у Вас ...   Aug 23 2010, 15:28
|- - Taradov Alexander   QUOTE (Alex11 @ Aug 23 2010, 19:28) Вы бы...   Aug 23 2010, 15:51
|- - Microwatt   Цитата(Taradov Alexander @ Aug 23 2010, 18...   Aug 23 2010, 16:06
|- - Taradov Alexander   QUOTE (Microwatt @ Aug 23 2010, 20:06) Во...   Aug 23 2010, 16:18
- - @Ark   Судя по Вашему описанию и картинкам, главное отлич...   Aug 23 2010, 17:42
- - rezident   Может я чего-то не понял, но почему из всего спект...   Aug 23 2010, 17:51
|- - Taradov Alexander   QUOTE (rezident @ Aug 23 2010, 21:51) Мож...   Aug 23 2010, 18:29
|- - demiurg_spb   Я для настройки гитары пользуюсь вот этой софтинко...   Aug 23 2010, 19:14
|- - Taradov Alexander   QUOTE (demiurg_spb @ Aug 23 2010, 23:14) ...   Aug 23 2010, 19:21
|- - demiurg_spb   Цитата(Taradov Alexander @ Aug 23 2010, 23...   Aug 23 2010, 19:36
|- - Самурай   Alexander, попробуйте посмотреть в сторону алгорит...   Aug 23 2010, 19:57
- - Microwatt   Ага, теперь из картинки "ОК" и "Пло...   Aug 23 2010, 19:08
- - GetSmart   Автокореляцию не пробовали? Вроде идеальная для эт...   Aug 23 2010, 23:04
- - Wise   ЦитатаВ идеале нужен алгоритм, который найдет подо...   Aug 23 2010, 23:22
- - fontp   Здесь много всего муыкального, в том числе и опред...   Aug 24 2010, 09:59
- - Taradov Alexander   И так, приемлемое решение нашлось. Алгоритм: 1. Вх...   Aug 24 2010, 18:39
|- - jer   Цитата(Taradov Alexander @ Aug 24 2010, 22...   May 11 2011, 12:34
- - Dmitry Valento   Александр, но ведь ваш алгоритм не дает высокой то...   Mar 31 2011, 08:05
- - Alexey Lukin   Улучшить точность можно с помощью параболической и...   Apr 7 2011, 09:15
- - Make_Pic   Цитата(Alexey Lukin @ Apr 7 2011, 12:15) ...   Apr 18 2011, 09:59


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:55
Рейтинг@Mail.ru


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