Автор Тема: Гитарный тюнер: теория и алгоритмы  (Прочитано 10006 раз)

0 Пользователей и 1 Гость просматривают эту тему.

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #20 : Января 23, 2012, 08:55:47 pm »
Да даже если будет - это можно решить как аппаратно - задавить ВЧ до триггера чтобы его не было, так и программно - написать код так, чтобы этот дребезг не мешал, если он конечно мал по длительности. Короче, думаю навскидку, что это не проблема. Почему не делают - не знаю. Но для меня это не повод считать что это нерабочий вариант :)

jer

  • Сообщений: 29
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #21 : Января 23, 2012, 09:03:07 pm »
Ну я , в свою очередь, считал бы это рабочим вариантом только тогда, когда это заработает. А про то что давить ВЧ, вот здесь как раз верно, и при этом появляются фильтры, о которых говорилось уже, и опять же отсюда давится полный диапазон измерений, остается узкий, автоматическим измерением хроматической гаммы не пахнет. Честно, был бы рад ,если б ошибался, самому нужен тюнер  в атмеге 64-ой.

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #22 : Января 23, 2012, 09:08:19 pm »
@ jer
Идея навскидку - ты наверное видел дешевые ("за 5 евро штука" (С)  ::)) китайские тестеры, которые меряют частоту? Они, если не ошибаюсь, меряют её именно только меандра. Подай сигнал с гитары через триггер на него, что покажет табло?
А насчет давить ВЧ - я не узкополосный фильтр гармоники предлагал, а просто отрезать все что немного повыше открытой первой струны = ми. И остается полный гитарный диапазон.
Я тоже конечно оставляю процент что я слишком оптимистичен, но мне кажется что вполне рабочий вариант. Во всяком случае, с нужной для тюнера точностью.

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #23 : Января 23, 2012, 09:16:25 pm »
Цитировать
Сомнения в том, что после триггера частота меандра будет равна частоте первой гармоники струны?
Тут скорей не сомнения, а уверенность - в том, что НЕ будет соответствовать.
Гитарный сигнал - не синус из ГСС...
« Последнее редактирование: Января 26, 2012, 05:27:02 pm от peratron »
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

jer

  • Сообщений: 29
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #24 : Января 23, 2012, 09:19:37 pm »
@ Ivana

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

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #25 : Января 23, 2012, 09:19:55 pm »
Цитировать
Вы опасаетесь что у этого меандра будет "дребезг" на фронтах?
И дребезг тоже. Но главное не в дребезге - главное в гармониках колебания струны, которые могут быть по амплитуде существенно больше основной гармоники.
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #26 : Января 23, 2012, 09:22:22 pm »
Хорошо, давайте углубимся в вопрос.
Если у нашего гитарного сигнала на середине и макушках квази-синусоиды будет твориться что угодно, только не пересекающее ноль - то триггеру это все равно. Значит, период (пойманный триггером по пересечению нуля) будет ловиться точно. Сомнения только в том, что у исходного сигнала вблизи пересечений нуля на самом деле много микропересечений за счет гармоник. Которые, кстати, и у ГСС тоже есть. Эти микропересечения могут вылиться только в дребезг на фронтах меандра. А общий период будет правильным, с точностью до этого дребезга (если он вообще будет). Так он имхо обходится и аппаратно и программно - уже писал выше об этом.

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #27 : Января 23, 2012, 09:29:29 pm »
Цитировать
а вобще, всем , кому интересно, не мешало бы попробовать любые варианты реализации тюнера и поделиться потом практическими наработками
Все практические наработки уже жеваны-пережёваны в темах про октаверы: как минимум, требуется не простой ТШ (с фиксированными порогами), а адаптивный (с детектированием огибающей и введением зависимости порогов от неё).
Но если в теме октаверов такой АТШ в целом достаточен, то при измерениях высоты тона требуется ещё ряд нетривиальных алгоритмических приёмов, что б получить удобоваримые показания.
Удобоваримые - это значит, появляющиеся достаточно быстро и остающиеся устойчивыми в процессе индикации.
Причём, в отношении тюнеров - простейшие аналоговые (стрелочные) порой показывают расстройку гораздо вразумительней, чем цифровые с недостаточно адаптированными к задаче алгоритмами.
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #28 : Января 23, 2012, 09:33:48 pm »
Цитировать
Сомнения только в том, что у исходного сигнала вблизи пересечений нуля на самом деле много микропересечений за счет гармоник.
Это не микропересечения! Просто синтезируй волновую форму с второй-третьей гармоникой - и посмотри, какая волновая форма получится и сколько раз будет пересекаться ноль (как и любая произвольно выбранная линия уровня).
А потом попиши гитарку - и посмотри в волновом редакторе на реальный живой сигнал, в котором ещё и колебательные моды играют, а с ними - и гармонический состав.
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #29 : Января 23, 2012, 09:36:55 pm »
Предлагаю всё таки отделить тему алгоритмизации тюнера от чисто микропроцессорных дел и вынести её в отдельное производство.
Модеры! Ау!
Плз, отрежьте последний (сегодняшний) кусок дискуссии и переместите его в тему "Гитарный тюнер: алгоритмы и реализации".
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #30 : Января 23, 2012, 09:40:12 pm »
Тоже хорошая идея - записать гитару через триггер на комп и в волновом редакторе посмотреть форму. Правда, дискретность АЦП съест возможный мелкий дребезг, но крупные артефакты останутся.
И все таки я продолжаю оптимистично надеяться, что из идеи можно сделать рабочий тюнер. Пусть и придется даже делать какой-то анализ выборки массива интервалов.

jer

  • Сообщений: 29
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #31 : Января 23, 2012, 09:40:48 pm »
@ Peratron

А еще какие-то варианты, кроме адаптивных триггеров Вам известны, может ссылочки есть какие, да хотя б и на эту тему с октаверами, почитал бы. Правда с аналоговой схемотехникой и теорией у меня хуже, чем с цифрой. Но мало ли, мож чего пригодится. :)
Кстати, да! про отдельную тему - это ТЕМА! ))
« Последнее редактирование: Января 23, 2012, 09:42:48 pm от jer »

jer

  • Сообщений: 29
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #32 : Января 23, 2012, 09:49:43 pm »
Я кстати повторюсь, сам делал тюнер с подсчетом максимумов функции автокорреляции от гитарного сигнала. В чем вижу выигрыш, нет зависисмости от того какой сигнал на входе просто синус или сложный гармонический. Не нужны фильтры, можно померять любую частоту. Минусы, аппаратные возможности мне не позволили сделать быстрый и точный анализ на атмеге 64. Хотя опять же в железе еще не смотрел , только в протеусе (комповый симулятор железа).

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #33 : Января 23, 2012, 09:50:29 pm »
@ jer

Раз уж вспомнили про Остапа Бендера - то как он говорил Адаму Козлевичу - "Бензин ваш, идеи наши! Поехали!" (С)  ::)

Вам эта тема практически интересна, вы понимаете что по фронтам считать проще чем БПФ и т.п. :) Вот и опубликуйте результаты ваших опытов с триггером в тестере и волновом редакторе с картинками, для начала  8-) Гитара, надеюсь, у вас есть  ::)

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #34 : Января 23, 2012, 09:52:56 pm »
@ Ivana
А вот тебе вопросик на засыпку: расскажи ка, как ты намереваешься получить при помощи частотомера время реакции (выдачи показаний) не более 0.1 сек при разрешении по частоте ну хотя б 1 Гц (хотя по уму желательно 0.1 Гц).
Ы?

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

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #35 : Января 23, 2012, 09:56:49 pm »
@ jer
Автокорелляционный анализ - это хорошо. Но немножко из пушки по воробьям. ИМХО.
В задаче выделения основного тона хорошо работает синхронная фильтрация - там сразу реализуется гребенчатый фильтр, учитывающий все гармоники, а не пытающийся уследить за единственной - которая может и вовсе пропадать в силу вращения первой колебательной моды поперёк вектора чувствительности датчика.
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...

OlegFX

  • Сообщений: 5097
    • Просмотр профиля
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #36 : Января 23, 2012, 09:59:31 pm »
http://diyfactory.ru/forum/index.php?showtopic=1086&hl=%F2%FE%ED%E5%F0
Вот здесь парни значительно продвинулись в теме (выделения первой гармоники) и даже сделали работающие образцы. А в целом, конечно, (устойчивое) выделение этой самой первой гармоники - задача нетривиальная, триггером тут не отделаешься.
« Последнее редактирование: Января 23, 2012, 10:00:59 pm от olegfx »

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #37 : Января 23, 2012, 10:01:32 pm »
Видимо, я настолько оптимистичен и несведущ, что не вижу даже подводных камней. Время (частота) выдачи показаний у нас имхо не определяется точностью измерения частоты. Даже если я буду получать значение частоты каждые 0.1 сек, я могу выдавать их через 0.05 сек - просто дублируя предыдущее пока не получил следующее, хотя это и несколько "неспортивно" :)
Ну и разрешение по частоте измерения совсем не пойму как тут завязано. В идеале - нижняя частота измерения у нас.... ну пусть 50гц. Значит я получаю за 0.1 сек 10 значений полупериодов. Могу их статистически обработать и выдать результат. Более того, прошлые значения могу накапливать в буфере любой длины для удлиннения статистики (если надо).
Или я не понял подколки вопроса.

ivana

  • Сообщений: 3
  • GtLab.Net forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #38 : Января 23, 2012, 10:13:25 pm »
@ OlegFX

Спасибо за ссылку, интересно. В итоге автор удовлетворился автокорреляцией :) Но имхо для тюнера достаточно поймать ноту на большой громкости, без хвостов, и с большой задержкой. И даже если 2-я и 3-я гармоники будут портить полупериоды, программно их нейтрализовать на накопительном интервале выборки.

Peratron

  • Сообщений: 13579
  • GTLab - forever!
    • Просмотр профиля
    • E-mail
Re: Гитарный тюнер: теория и алгоритмы
« Ответ #39 : Января 23, 2012, 10:13:41 pm »
Цитировать
@Peratron
А еще какие-то варианты, кроме адаптивных триггеров Вам известны,
В отношении выделения основного тона?
Известны - например нейронная сеть, а-ля Аксон  ::)
Про синхронный (гетеродинный) фильтр я уже упомянул.
Ну, автокоррелятор - таки да, тоже справный метод.
Классический фурье - само собой. Но он в неадаптивном варианте слишком тормозной и не позволяет получить значение тона одновременно и быстро, и точно. Впрочем, гетеродинная фильтрация тоже эффективна только в адаптивном варианте.
Ну, тупой - но правильный вариант, это гребёнка фильтров. Но не фурье - с его постоянной частотной полоской фильтра: оптимальна в данном случае гребёнка с постоянной добротностью (линейно возрастающей пол частоте полосой пропускания).

Наиболее простым и правильным вариантом для решения задачи не-полифонического тюнера я считаю сочетание  программно реализованного АТШ с несложной системой измерения периода и пост-обработкой (пересчётом периода в частоту для индикации).
Схемотехническая мантра: титцешенкохоровицехилл. Повторять до просветления...