Gtlab Forum

Тематический => Гитарные усилители и примочки => Тема начата: jer от Января 23, 2012, 06:21:38 pm

Название: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 06:21:38 pm
Цитировать
Тюнер тоже - безо всяких АЦП даже (хотя можно и с ними) - превращаем сигнал в меандр триггером и снимаем частоту по 0/1 на входной ноге, остается грамотно вывести показание на индикатор. И даже это всё, вместе с футсвичем, имхо можно засунуть в 8-миногую 8-мибитную Tiny-13 какую-нибудь (если хватит ног, ОЗУ и памяти программы :) ) ::)
И что это будет за тюнер?? Настройка строго определенной струны, причем фильтровать придется на каждую струну, и нафиг это надо, когда сейчас уже только хроматические рулят, да еще и с нехилым функционалом!
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 06:40:44 pm
Перечислите желаемый "нехилый функционал" (что можно вообще требовать от тюнера?  ::)).
Предполагалась настройка любой открытой струны. И для баса и для 7-струнки в том числе. При желании - и нестандартные строи можно зашить. Проблем нет.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 06:49:15 pm
Да че там функционал то. Просто хроматический тюнер сделайте, учитывая, что Вы предлагаете подсчитывать фронты (ну то же самое что переходы через ноль - более распространенное выражение), получится? Настройка 6-7 открытых струн - это слабенько для современного тюнера, ну естественно, это реализуемо на обычном 8-битном контроллере с чуть-чуть памяти и 8 МГц тактовой частоты. Давно уже так делали, надо что-то получше, например, через автокорреляционную функцию вполне реально сделать хроматический тюнер на 8-битном контроллере, ОЗУ бы только побольше, чем 2К и АЦП побыстрее, чем у меги.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 06:54:36 pm
Не вижу сложностей в хроматичности. Любую желаемую шкалу частот можно задать, хоть даже явную лажу. И не вижу, почему бы это не сделать безо всяких АЦП по высокому-низкому уровню на ногах от входящего меандра. Если вы видите какие-то противоречия - напишите подробнее.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 07:11:04 pm
@ Ivana

Ну потому что такой тюнер будет путаться в сложном гармоническом сигнале (гитарном), это же не синусоида одной постоянной частоты. Весь диапазон частот гитарного сигнала проанализировать сразу не выйдеть, а перестраивать фильтр в процессе измерения не айс, да еще и угадай какая гармоника считается в данный момент первая или дальше? Т.е. в нужном диапазоне меряем или надо перестроиться. Т.е. с подсчетом фронтов это только , когда сам диапазон измерений задаешь, причем узкий, чтоб попадала только одна гармоника сигнала - первая.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 07:23:43 pm
Вы так и не озвучили "нехилый функционал современных тюнеров". Может имеется в виду, что берешь все 6 струн любого аккорда, а он говорит человеческим голосом "да, более менее потянет, но я бы вторую подтянул на 0.2337865 тона и шестую опусти на 3.7623432 тона, но тогда есть риск легкого натурального нестроя в открытых аккордах - а ну дай соль мажор, и не передавливай струны!"  ;D  Но те простенькие тюнеры что я видел работают так - дергаешь ОДНУ струну - стрелка показывает отклонение от нужной частоты=ноты. Не понял что вы хотели сказать про "гармоники". Я триггером делаю из почти синуса струны меандр - и меряю его частоту. Его первой гармоники, по фронтам. Она измерится с точностью до тактовой частоты МК. И сравниваю её с заложенной в ОЗУ нужной частотой настройки. В каком-то виде выдаю на индикатор результат сравнения. Все.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 07:50:10 pm
про функционал - это различные варианты настройки, я их сейчас сам все не помню, но погуглить можно, но это вобще не суть. Вот скажите, какую частоту покажет ваш тюнер если вы дернете, ну пусть 6-ю струну Ми? 82Гц?
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 07:54:34 pm
Не помню какая частота у этой ми, но если 82Гц - то да, именно её.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 07:56:51 pm
остальные гармоники фильтруете?
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: rational gaze от Января 23, 2012, 08:03:24 pm
Я за 4,87 евро купил малюсенькую хроматическую прищепку с ЖК дисплеем и разноцветной подсветкой.
Изобретаем даже не велосипед, а самокат :(.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 08:03:58 pm
Какие в баню гармоники?!....
Ещё раз - я делаю из сигнала струны меандр - с помощью тиггера Отто Юльевича Шмитта! Частота первой гармоники меандра будет в точности равна частоте первой гармоники входного сигнала с гитары! Меандр 82Гц - это смена логических уровней высокий-низкий-высокий... через время = 1/(2*82) секунды! И это время я засекаю! Или уважаемый, вы - тролль?  ::)

На последнее: Так купи любой преамп-усилок-кабинет какой хочешь вдобавок и не теряй время на форуме, где все изобретают самокаты! Речь не о том что это ноу-хау, а о том, что можно навскидку засунуть в МК на котором KMG сделал навороченный футсвич. Простое теоретизирование. Ни он, ни я, ни кто другой скорее всего этого делать не будут.

ЗЫ вбил в столб первый гвоздь....  :(
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: rational gaze от Января 23, 2012, 08:18:59 pm
Цитировать
На последнее: Так купи любой преамп-усилок-кабинет какой хочешь вдобавок и не теряй время на форуме, где все изобретают самокаты!
Преамп-усилок-кабинет в отличие от тюнера имеет смысл делать самому по ряду причин, в том числе по экономической. Кстати, тут вовсе не все самокаты изобретают  :).
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 08:26:05 pm
А тюнер имеет смысл делать самому в силу своих причин - например, если хочешь освоить программирование МК на С/asm на хорошем понятном практическом примере, а не просто освоить процесс покупки дешевого китайского готового девайса, который кто-то другой умный запрограммировал. Я вот, к примеру, не стану трансформаторы мотать а отдам спецам за деньги задание, потому что я не хочу в этом совершенствоваться. А многие тут мотают, но я же не говорю им что проще купить?

Цитировать
Кстати, тут вовсе не все самокаты изобретают
Верно, тут 99% участников вообще ничего не изобретают. Зато грустят смайликами по поводу того, что кто-то изобретает самокат, лучше которого они купили за 5 евро...
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 08:27:54 pm
@ Ivana

Нет не тролль я. Может я излишне углубляюсь, но Вы чего-то не договариваете, а именно, что значит частота первой гармоники меандра? Наверное меандр с частотой первой гармоники, но как первую гармонику вы отловили триггером то? Если фильтр поставили, чтоб выделить ее, то Вы остальные загасили, и в автомате настроить все струны не выйдет. Я б на осциллограмму посмотрел Вашего сигнала с гитары, и выхода с триггера . Не ну если Вы, действительно, реализовали в железе и меряете в автомате любую частоту подсчетом фронтов сигнала с триггера, то тогда я походу тролль и нихрена не понимаю, с удовольствием взглянул бы на это устройство. Я лично делал тюнер иначе по обозначенным причинам, правда в симуляторе только смотрел. Но до железа он обязательно доберется.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: Peratron от Января 23, 2012, 08:32:13 pm
Цитировать
Ни он, ни я, ни кто другой скорее всего этого делать не будут.
За себя можно высказываться. За других - не надо.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 08:39:48 pm
@ Peratron
Верну при случае. Хотя, сейчас могу вернуть следующее - помнится, кто-то говорил "что-то я не заметил шерифской звезды - а без неё не получится указывать кому и что делать." Не напомните, кто это был? Вот и передайте ему его же слова.
Ответ #232 в http://forum.gtlab.net/cgi-bin/yabb2/YaBB.pl?num=1281556453/235

@ jer
Ну давай жевать имхо очевидное. То что я измерю частоту меандра - сомнений вроде нет? Сомнения в том, что после триггера частота меандра будет равна частоте первой гармоники струны?
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 08:43:10 pm
Цитировать
@ jer
Сомнения в том, что после триггера частота меандра будет равна частоте первой гармоники струны?
Именно так.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: Rst7 от Января 23, 2012, 08:45:18 pm
Цитировать
с помощью тиггера Отто Юльевича Шмитта!

Чисто прооффтоплю -  не Отто Юльевича (он вообще Шмидт), а Otto Herbert Schmitt'а.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 08:47:43 pm
А для меня это было настолько очевидным, что я даже не счел возможным усомниться в этом. Даже если мы не подавим фильтром ВЧ мусор, то он не приведет к ложным переключениям триггера, если это не будет шум на фоне слабого сигнала. Есть класс фузов, построенных напрямую на триггере, и они отлично выдают красивый меандр первой гармоники даже если на их вход подать уже ограниченный по амплитуде сигнал после ограничителя. Вы опасаетесь что у этого меандра будет "дребезг" на фронтах? Я специально не анализировал этот процесс до разрешения в несколько мегагерц, но почему-то уверен что не будет.

Rst7 ну это такой оборот речи! Я же понимаю что этот Шмитт не плавал на льдине, как известный в советской республике отец Остапа Бендера  ::)
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 08:52:28 pm
@ Ivana

А я думаю будет высокочастотный дребезг по фронтам, тоже специально не анализировал, но теперь проверю. Не пойму че тогда все заморачиваются с БПФ и в тюнерах тоже, если хроматический тюнер делается через подсчет фронтов с триггера.  ::)
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 08:55:47 pm
Да даже если будет - это можно решить как аппаратно - задавить ВЧ до триггера чтобы его не было, так и программно - написать код так, чтобы этот дребезг не мешал, если он конечно мал по длительности. Короче, думаю навскидку, что это не проблема. Почему не делают - не знаю. Но для меня это не повод считать что это нерабочий вариант :)
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 09:03:07 pm
Ну я , в свою очередь, считал бы это рабочим вариантом только тогда, когда это заработает. А про то что давить ВЧ, вот здесь как раз верно, и при этом появляются фильтры, о которых говорилось уже, и опять же отсюда давится полный диапазон измерений, остается узкий, автоматическим измерением хроматической гаммы не пахнет. Честно, был бы рад ,если б ошибался, самому нужен тюнер  в атмеге 64-ой.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 09:08:19 pm
@ jer
Идея навскидку - ты наверное видел дешевые ("за 5 евро штука" (С)  ::)) китайские тестеры, которые меряют частоту? Они, если не ошибаюсь, меряют её именно только меандра. Подай сигнал с гитары через триггер на него, что покажет табло?
А насчет давить ВЧ - я не узкополосный фильтр гармоники предлагал, а просто отрезать все что немного повыше открытой первой струны = ми. И остается полный гитарный диапазон.
Я тоже конечно оставляю процент что я слишком оптимистичен, но мне кажется что вполне рабочий вариант. Во всяком случае, с нужной для тюнера точностью.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: Peratron от Января 23, 2012, 09:16:25 pm
Цитировать
Сомнения в том, что после триггера частота меандра будет равна частоте первой гармоники струны?
Тут скорей не сомнения, а уверенность - в том, что НЕ будет соответствовать.
Гитарный сигнал - не синус из ГСС...
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 09:19:37 pm
@ Ivana

По возможности попробую с тестером, а вобще, всем , кому интересно, не мешало бы попробовать любые варианты реализации тюнера и поделиться потом практическими наработками .
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: Peratron от Января 23, 2012, 09:19:55 pm
Цитировать
Вы опасаетесь что у этого меандра будет "дребезг" на фронтах?
И дребезг тоже. Но главное не в дребезге - главное в гармониках колебания струны, которые могут быть по амплитуде существенно больше основной гармоники.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 09:22:22 pm
Хорошо, давайте углубимся в вопрос.
Если у нашего гитарного сигнала на середине и макушках квази-синусоиды будет твориться что угодно, только не пересекающее ноль - то триггеру это все равно. Значит, период (пойманный триггером по пересечению нуля) будет ловиться точно. Сомнения только в том, что у исходного сигнала вблизи пересечений нуля на самом деле много микропересечений за счет гармоник. Которые, кстати, и у ГСС тоже есть. Эти микропересечения могут вылиться только в дребезг на фронтах меандра. А общий период будет правильным, с точностью до этого дребезга (если он вообще будет). Так он имхо обходится и аппаратно и программно - уже писал выше об этом.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: Peratron от Января 23, 2012, 09:29:29 pm
Цитировать
а вобще, всем , кому интересно, не мешало бы попробовать любые варианты реализации тюнера и поделиться потом практическими наработками
Все практические наработки уже жеваны-пережёваны в темах про октаверы: как минимум, требуется не простой ТШ (с фиксированными порогами), а адаптивный (с детектированием огибающей и введением зависимости порогов от неё).
Но если в теме октаверов такой АТШ в целом достаточен, то при измерениях высоты тона требуется ещё ряд нетривиальных алгоритмических приёмов, что б получить удобоваримые показания.
Удобоваримые - это значит, появляющиеся достаточно быстро и остающиеся устойчивыми в процессе индикации.
Причём, в отношении тюнеров - простейшие аналоговые (стрелочные) порой показывают расстройку гораздо вразумительней, чем цифровые с недостаточно адаптированными к задаче алгоритмами.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: Peratron от Января 23, 2012, 09:33:48 pm
Цитировать
Сомнения только в том, что у исходного сигнала вблизи пересечений нуля на самом деле много микропересечений за счет гармоник.
Это не микропересечения! Просто синтезируй волновую форму с второй-третьей гармоникой - и посмотри, какая волновая форма получится и сколько раз будет пересекаться ноль (как и любая произвольно выбранная линия уровня).
А потом попиши гитарку - и посмотри в волновом редакторе на реальный живой сигнал, в котором ещё и колебательные моды играют, а с ними - и гармонический состав.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: Peratron от Января 23, 2012, 09:36:55 pm
Предлагаю всё таки отделить тему алгоритмизации тюнера от чисто микропроцессорных дел и вынести её в отдельное производство.
Модеры! Ау!
Плз, отрежьте последний (сегодняшний) кусок дискуссии и переместите его в тему "Гитарный тюнер: алгоритмы и реализации".
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 09:40:12 pm
Тоже хорошая идея - записать гитару через триггер на комп и в волновом редакторе посмотреть форму. Правда, дискретность АЦП съест возможный мелкий дребезг, но крупные артефакты останутся.
И все таки я продолжаю оптимистично надеяться, что из идеи можно сделать рабочий тюнер. Пусть и придется даже делать какой-то анализ выборки массива интервалов.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 09:40:48 pm
@ Peratron

А еще какие-то варианты, кроме адаптивных триггеров Вам известны, может ссылочки есть какие, да хотя б и на эту тему с октаверами, почитал бы. Правда с аналоговой схемотехникой и теорией у меня хуже, чем с цифрой. Но мало ли, мож чего пригодится. :)
Кстати, да! про отдельную тему - это ТЕМА! ))
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 23, 2012, 09:49:43 pm
Я кстати повторюсь, сам делал тюнер с подсчетом максимумов функции автокорреляции от гитарного сигнала. В чем вижу выигрыш, нет зависисмости от того какой сигнал на входе просто синус или сложный гармонический. Не нужны фильтры, можно померять любую частоту. Минусы, аппаратные возможности мне не позволили сделать быстрый и точный анализ на атмеге 64. Хотя опять же в железе еще не смотрел , только в протеусе (комповый симулятор железа).
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 09:50:29 pm
@ jer

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

Вам эта тема практически интересна, вы понимаете что по фронтам считать проще чем БПФ и т.п. :) Вот и опубликуйте результаты ваших опытов с триггером в тестере и волновом редакторе с картинками, для начала  8-) Гитара, надеюсь, у вас есть  ::)
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: Peratron от Января 23, 2012, 09:52:56 pm
@ Ivana
А вот тебе вопросик на засыпку: расскажи ка, как ты намереваешься получить при помощи частотомера время реакции (выдачи показаний) не более 0.1 сек при разрешении по частоте ну хотя б 1 Гц (хотя по уму желательно 0.1 Гц).
Ы?

Вопрос с подколкой - но с небольшой: контрольный ответ существует, и мы твой ответ сверим с ним.
Ага?
А целью этого вопроса является не попытка загнать оппонента в угол, а лишь желание показать, что задача вовсе не так тривиальна, как пока предполагается обсуждающими. Точней, одним из обсуждающих...
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: Peratron от Января 23, 2012, 09:56:49 pm
@ jer
Автокорелляционный анализ - это хорошо. Но немножко из пушки по воробьям. ИМХО.
В задаче выделения основного тона хорошо работает синхронная фильтрация - там сразу реализуется гребенчатый фильтр, учитывающий все гармоники, а не пытающийся уследить за единственной - которая может и вовсе пропадать в силу вращения первой колебательной моды поперёк вектора чувствительности датчика.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: OlegFX от Января 23, 2012, 09:59:31 pm
http://diyfactory.ru/forum/index.php?showtopic=1086&hl=%F2%FE%ED%E5%F0
Вот здесь парни значительно продвинулись в теме (выделения первой гармоники) и даже сделали работающие образцы. А в целом, конечно, (устойчивое) выделение этой самой первой гармоники - задача нетривиальная, триггером тут не отделаешься.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 10:01:32 pm
Видимо, я настолько оптимистичен и несведущ, что не вижу даже подводных камней. Время (частота) выдачи показаний у нас имхо не определяется точностью измерения частоты. Даже если я буду получать значение частоты каждые 0.1 сек, я могу выдавать их через 0.05 сек - просто дублируя предыдущее пока не получил следующее, хотя это и несколько "неспортивно" :)
Ну и разрешение по частоте измерения совсем не пойму как тут завязано. В идеале - нижняя частота измерения у нас.... ну пусть 50гц. Значит я получаю за 0.1 сек 10 значений полупериодов. Могу их статистически обработать и выдать результат. Более того, прошлые значения могу накапливать в буфере любой длины для удлиннения статистики (если надо).
Или я не понял подколки вопроса.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 10:13:25 pm
@ OlegFX

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

Наиболее простым и правильным вариантом для решения задачи не-полифонического тюнера я считаю сочетание  программно реализованного АТШ с несложной системой измерения периода и пост-обработкой (пересчётом периода в частоту для индикации).
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: ivana от Января 23, 2012, 10:17:41 pm
Цитировать
Цитировать
Наиболее простым и правильным вариантом для решения задачи не-полифонического тюнера я считаю сочетание  программно реализованного АТШ с несложной системой измерения периода и пост-обработкой (пересчётом периода в частоту для индикации).
Или я совсем туплю глубокой ночью, или я не понимаю чем это отличается от моего предложения  :-?
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: research от Января 24, 2012, 10:05:07 am
это случайно не та ветка, где говорилось, что тюнер делается за 20 минут? :) (минуты поэзии)

@ OlegFX
тупорезый цифровой фильтр еще как поможет. Можно и Фурье/FFT, но это для полифонического тюнера актуальней.

Что до 8 МГц, видел тюнер на 150кГц тактовой :) В гугле набрел. И никакой ОЗУ, кроме как под стэк.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: jer от Января 24, 2012, 10:13:14 am
Цитировать
Что до 8 МГц, видел тюнер на 150кГц тактовой :) В гугле набрел. И никакой ОЗУ, кроме как под стэк.
Ну он видимо переходы через ноль считает, поэтому и простой. Есть ссылка?
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: rational gaze от Января 24, 2012, 10:22:52 am
На всякий случай сообщу, что другой "китайский тюнер за 5 евро штука"(C), не прищепка, отлично меряет с выхода хайгейн преампа.
Название: Re: Гитарный тюнер: теория и алгоритмы
Отправлено: research от Января 24, 2012, 10:28:30 am
дык тупенький цифровой фильтр-усреднялка (назовем его "электронный конденсатор" задавит все гармоники).
афаик, FFT есть библиотеки для любого приличного МК.