www.diyfactory.ru



Страницы: (2) [1] 2   ( Перейти к первому непрочитанному сообщению ) Ответ в темуСоздание новой темыСоздание опроса

> Подавление гармоник, для детектирования питча
Diz
Дата 12.01.2010 - 17:47
Цитировать сообщение




Unregistered












ќткуда:


Уважаемые дисторшностроители и мастера нелинейной обработки !

Как бы ослабить гармоники в гитарном сигнале и сделать более
значимым основной тон ? Возможно, фильтрация + ограничение либо
наоборот, ограничение с фильтрацией в несколько каскадов,
логарифмический усилитель или что-то еще в таком духе.

Реализовал неплохой и весьма шустрый алгоритм для детектирования
питча и применил его в стробоскопическом тюнере.

Работает замечательно, не считая варианта 'открытые струны + бриджевый датчик', где амплитуда третьей гармоники не меньше, чем у основного тона.Прямо как у Дональда Тиллмана

Алгоритм с радостью ее детектирует и выдает B4 вместо E2. Если удастся уменьшить третью гармонику на 3-6 дБ, то все будет работать корректно.

Видео в действии

Это сообщение отредактировал Diz - 12.01.2010 - 17:50
Top
Tuvalu
Дата 12.01.2010 - 22:02
Цитировать сообщение




Unregistered












ќткуда:


Выделение основного тона - самая фундаментальная проблема для всех гитаросинтезаторных строителей. Идеального решения нет, сразу скажу.
Приближено к идеалу (и, дествительно, хорошо работает) - схема выделения основного тона в октавере Босс (то же самое - в гитарном синтезаторе Электро Гармоникс), часть схемы от входа до первого триггера (тот, что RS). Цена вопроса - 6 шт. ОУ + триггер. Рекомендую TL062(TL064) как малопотребляющие и отлично работающие в этой схеме. В сети есть эти схемы, только в самдельно-нарисованной схеме BOSS OC-2 - принципиальная ошибка, поэтому лучше скачать их фирменный сервис мануал - там всё правильно. Cкажу честно, могут быть ошибки на открытых 6 и 3(если она сильно тонкая) струнах, но не в ноте, а в октаве - из-за очень большого содержания 2-ой гармоники могут быть кратковременные чередования тон--октава выше.
Другие схемы хоть и проще (часто - намного проще), но работают непропорционально хуже, так что их не рекомендую. Хотя, может для тюнера и сойдёт, в таком случае посмотрите схему октавера KORG.

По поводу фильтрации. Можно, конечно, но фильтр должен быть следящим, т.к. для пассивного фильтра диапазон слишком широк, и высокие ноты будут подавляться и/или низкие не очень хорошо фильтроваться от гармоник. Следящий фильтр - довольно сложная штука. Я бы сказал, неоправданно сложная, как для тюнера.
Ну, а ограничение создаст больше гармоник, а значит, - и больше проблем. Т.е. в октавере, например, сигнал, конечно же, ограничен (триггер), но это уже "после"...
Цитата
Реализовал неплохой и весьма шустрый алгоритм для детектирования
питча

А можно подробней, очень интересно!! Может, схемку, если только не на МП...

ПС. Вспомнил, где схема:
http://www.godiksennet.com/images/sch/Boss_OC2_Oktave.jpg

Это сообщение отредактировал Tuvalu - 13.01.2010 - 00:28
Top
vilager
Дата 12.01.2010 - 23:13
Цитировать сообщение




Unregistered












ќткуда:


можно подойти к проблеме выделения базового тона и с другой стороны - со стороны чисто железа. но это сильно усложняет всё. если убрать "перекатывание" гармоник вследствие колебания струны в двух плоскостях, то работать с сигналом будет уже легче. вобщем, надо снимать полный сигнал, а не только его одноосную составляющую. или дополнительный съём на 90 градусов, или струна внутри кольцевого съёмника, или ещё как... есть над чем подумать wink.gif
да, и на каждую струну своя линейка съёма-обработки.
Top
Tuvalu
Дата 13.01.2010 - 00:18
Цитировать сообщение




Unregistered












ќткуда:


Цитата
можно подойти к проблеме выделения базового тона и с другой стороны - со стороны чисто железа.

Гранды так и делают. Отдельный датчик на струну, отдельный же канал обработки. И всё равно, всунули следящий фильтр (Roland GR300). В более поздней модели обошлись без него, но схема тоже не детская.
Цитата
вобщем, надо снимать полный сигнал, а не только его одноосную составляющую. или дополнительный съём на 90 градусов,

Думал об этом, даже искал патенты на эту тему. Нашёл интересную конструкцию оптического датчика, снимающего колебания с двух фотодиодов под углом 90 град. Те, в свою очередь, стоят под углом 45 град к деке, хотя это, наверное, уже несущественно.
Цитата
или струна внутри кольцевого съёмника

Именно так и было, Вы как в воду глядели.
Но это мы уже оффтопим, т.к., по понятным причинам, к теме тюнера это вряд ли относится.

Это сообщение отредактировал Tuvalu - 13.01.2010 - 00:31
Top
Diz
Дата 13.01.2010 - 00:32
Цитировать сообщение




Unregistered












ќткуда:


Спасибо за ответы.

Со схемой Boss OC-2 знаком (и имею бехровский клон), действительно, выдает ошибки на самых низких нотах (этакие скачки между нотами).
Выдает и ошибки на гармониках в тех же местах, но за счет самого характера звука (отфильтрованный меандр после делителя) это не столь заметно.

Мой вариант детектора (можно видеть на видео, работает весьма корректно)
полностью софтовый и похож на алгоритм выделения DTMF-сигналов в телефонии. Интересно как раз немного улучшить сигнал в аналоге перед оцифровкой, дабы облегчить детектирование.
Сам алгоритм в первом приближении - банк из 48 полосовых фильтров, текущая нота определяется по фильтру с максимальной амплитудой.

PS Тюнер - это только начало :-)

Это сообщение отредактировал Diz - 13.01.2010 - 00:40
Top
Tuvalu
  Дата 13.01.2010 - 00:50
Цитировать сообщение




Unregistered












ќткуда:


Цитата
Мой вариант детектора... полностью софтовый

Цитата
Тюнер - это только начало

Вот бы Вам, в таком случае, наверное, интересно бы было узнать, как определяют базовый тон в разных гармонайзерах, ведь там надо безошибочно выстраивать нужный интервал согласно заданного лада. Притом, не так, как в питч-шифтере - в нём всё просто сдвигается, например, на малую терцию (что несложно), а именно на малую или большую терцию - где как надо по гармонии.
Кстати, а в патентах описываются подобные вещи (алгоритмы), т.е. то, что потом зашивается в кристалл? Или просто секретят - и все дела.
Цитата
Сам алгоритм в первом приближении - банк из 48 полосовых фильтров, текущая нота определяется по фильтру с максимальной амплитудой.

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

Это сообщение отредактировал Tuvalu - 13.01.2010 - 01:28
Top
Jansen
Дата 13.01.2010 - 09:47
Цитировать сообщение




Unregistered












ќткуда:


Цитата
Гранды так и делают. Отдельный датчик на струну, отдельный же канал обработки. И всё равно, всунули следящий фильтр (Roland GR300). В более поздней модели обошлись без него, но схема тоже не детская.

Схема не детская, но выделить основной тон так легче всего, несмотря на кажущуюся сложность звукоснимателя.
http://www.rmcpickup.com/products.html
Правда при этом значительно упрощается выделение основного тона, потому, что в каждом канале звучит всего один голос - одна струна - одна основная частота. Более того, при таком способе съема появляется огромное поле для экспериментов, несравненно больше, чем при традиционном , одноканальном съеме.
(пробовал, поэтому и говорю) Вот во что это выливается: http://i96.photobucket.com/albums/l173/Valery_011/5.jpg

Это сообщение отредактировал Jansen - 13.01.2010 - 09:50
Top
Diz
Дата 13.01.2010 - 11:47
Цитировать сообщение




Unregistered












ќткуда:


В гармонайзерах-питч шифтерах для детектирования F0 часто используют автокорреляцию - многократное умножение сигнала самого на себя со сдвигом по фазе. Первый максимум на графике АКФ (автокорреляционной функции) указывает на F0. Очень ресурсоемкий алгоритм, плюс надо накопить окно из N сэмплов для обработки (как с FFT), что ведет к задержке. Второй вариант - FFT и cepstrum, менее ресурсоемко но и менее точно. Возможно, где-то используют алгоритмы, придуманные для обработки речи (там тоже важно знать F0).

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

Со раздельными звукоснимателями все становится сильно проще, да. Точно известен диапазон нот для каждой струны - значит, можно применить полосовой фильтр, точно настроенный на нужные частоты. Все третьи гармоники уже будут лежить вне полосы фильтра. Со вторыми сложнее :-)

Это сообщение отредактировал Diz - 13.01.2010 - 11:48
Top
Tuvalu
Дата 13.01.2010 - 15:13
Цитировать сообщение




Unregistered












ќткуда:


Diz, спасибо за описание алгоритма.
Про раздельные звукосниматели спору нет, действительно все интересней и, даже, проще в конечном итоге получится. Правда, это уже будет не примочка, а целый комплекс, обычно даже со специальной гитарой (точнее, гитара с развитой коммутацией/управлением, канальными преампами... +монструозным разъёмом на выходе).
Цитата
Вот во что это выливается: http://i96.photobucket.com/albums/l173/Valery_011/5.jpg

Jansen, не понял, на рисунке в рэке, ведь, просто компрессоры? Не думаю, что полифоническую гитару стОило затевать только ради этого, гитара отлично работает и с одноканальным компрессором.
Top
Jansen
Дата 13.01.2010 - 17:42
Цитировать сообщение




Unregistered












ќткуда:


Цитата
не понял, на рисунке в рэке, ведь, просто компрессоры?

На самом деле, там не только компрессоры. Выбран PICO компрессор в качестве лимитера для записи. там же собраны шесть преампов, далее сигнал записывается на комп, чистятся треки (очень поучительно прослушивание треков пострунно, незаглушенные струны живут своей жизнью, и добавляют много грязи) и выводятся обратно на любое устройство оборудованием разъемом Gexaphonic , Roland VG88, мидиконвертер, и т.д.
Top
vilager
Дата 14.01.2010 - 00:13
Цитировать сообщение




Unregistered












ќткуда:


а, ну да, разговор о тюнере... а я увлёкся)) но, кстати, можно и в отдельный сабж вынести - тема интересная.
Top
Diz
Дата 14.01.2010 - 01:54
Цитировать сообщение




Unregistered












ќткуда:


И обязательно обсудить полифонический дисторшн ! :-)

Это сообщение отредактировал Diz - 14.01.2010 - 01:54
Top
Jansen
Дата 14.01.2010 - 08:58
Цитировать сообщение




Unregistered












ќткуда:


Цитата
И обязательно обсудить полифонический дисторшн !

Так пробовали, именно на этом и предыдущем деваайсе http://i96.photobucket.com/albums/l173/Valery_011/13Pin.jpg
Сделанном из магнитофона TASCAM, с использованием его усилителей, индикатора и куска системы шумопонижения DBX , его компрессорной части.
Обсуждать устройство с такими широкими возможностями бессмысленно, надо его пробовать.
Top
Diz
Дата 7.02.2010 - 20:51
Цитировать сообщение




Unregistered












ќткуда:


Победил-таки. Переделал алгоритм, теперь использую автокорреляцию.
Распознает ноту за два периода минимальной частоты (~30 мс) и довольно
уверенно. Надо бы вывести ноту наружу по миди и получить подобие гитарного синта :-)
Top
Medved
Дата 8.02.2010 - 13:47
Цитировать сообщение




Unregistered












ќткуда:


Diz
30мс - ощутимая задержка, для полноценного риалтайм синта не покатит rolleyes.gif Собственно, как и один период в 12мс на 82гц.
Top
Diz
Дата 8.02.2010 - 15:33
Цитировать сообщение




Unregistered












ќткуда:


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

В принципе, к задержке такого порядка адаптируешься и начинаешь играть
чуть вперед (ощущал давным-давно на звуковушке без asio).
Top
Diz
Дата 5.03.2010 - 12:58
Цитировать сообщение




Unregistered












ќткуда:


Тюнеры получаются, ура !:

User posted image
Top
Diz
Дата 6.03.2010 - 07:00
Цитировать сообщение




Unregistered












ќткуда:


А вот что получается, если детектированную ноту вывести по MIDI (без динамики, лишь номер ноты). Как-бы гитарный синт. Запись атонально-лажовая, но все равно любопытно.
gs_demo.mp3
Top
Medved
Дата 6.03.2010 - 19:00
Цитировать сообщение




Unregistered












ќткуда:


С ЛФО прикольно. Вроде стабильненько, не ошибается. Как задержка на басовых ощущается?
Top
Diz
Дата 7.03.2010 - 10:44
Цитировать сообщение




Unregistered












ќткуда:


У меня по алгоритму получается одинаковая задержка (и для баса и высоких). Ощущается, но подстроиться можно.

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

Сейчас постобработка простая - наружу выдается нота, продержавшаяся без изменения 3 окна сэмплирования подряд. Соответственно, имеем задержку :-)
Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Страницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса

 

<% COPYRIGHT %>