Главная Форум Интернет-магазин

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
[3/4 OFF] Софтовый тюнер или Ау, девелоперы :-)
LizardKing
сообщение 14.8.2006, 9:11
Сообщение #1


Сообщений: 68
Регистрация: 21.6.2004
Из: Уфа



Всем привет, а девелоперам особенно! :-) Поясните, плиз, как устроен софтовый тюнер (ну, наверное, и тюнер вообще). Как я понимаю, тюнер должен отображать ноту, которую я дернул на гитаре, анализируя кусочек звукового потока и вычленять оттуда значение наиболее часто встречающейся амплитуды. Количество повторов примерно равных амлитуд и будет "герцность" искомой ноты, т.е. если какая-та амлитуда встретилась примерно 440 раз в секундном фрагменте, то, значицца, мы дернули ноту "Ля" и т.д. Но в этом случае нужно записывать СЕКУНДУ звука, что для тюнера неприемлимо. Если пропорционально уменьшить время записи фрагмента, увеличиться "оперативность" тюнера, но также возрастет и ошибка (причем латентность все равно будет нехилая). Народ! Мож, я, конечно, чушь пишу, но не будьте так строги - объясните убогому, чего в Датском королевстве наперекосяк? P.S. При анализе пользовался FFT, т.е. в математике уж не совсем ламер, хотя... ;-) ВСЕМ ЗАРАНЕЕ ОГРОМНОЕ ЛИЗАРДКИНГОВСКОЕ СПАСИБО!
Перейти в начало страницы
 
+Цитировать сообщение

Andy
сообщение 14.8.2006, 10:42
Сообщение #2


Сообщений: 1
Регистрация: 21.6.2005



зачем ты можешь насчитать 220 колебаний в 0.5 сек 110 колебаний в 0.25 сек и т.д. поступающий сигнал сразу и непрерывно раскладывается в ряды. наверное кстати поэтому иногда вначале они показывают ноту на октаву выше реальной. какой отрезок времени при этом берется даже не знаю, но по опыту задержки показаний тюнера ~ 0.2..0.5 сек. этого достаточно для анализа (не менее 110 циклов попадает) и зачем кстати тюнеру такая оперативность менее 0.5 сек. все равно струну нужно строить не по первым мгновениям звучания, а когда натяжение спадет
Перейти в начало страницы
 
+Цитировать сообщение
LizardKing
сообщение 14.8.2006, 10:47
Сообщение #3


Сообщений: 68
Регистрация: 21.6.2004
Из: Уфа



110 колебаний в 0.25 сек - это же все-таки не факт, что в 1 сек будет 440! Наверное... Но сам принцип-то верный или как?
Перейти в начало страницы
 
+Цитировать сообщение
Andy
сообщение 14.8.2006, 13:20
Сообщение #4


Сообщений: 1
Регистрация: 21.6.2005



принцип верный думаю здесь можно почитать об этом больше http://forum.sources.ru/index.php?showtopic=9061
Перейти в начало страницы
 
+Цитировать сообщение
LizardKing
сообщение 14.8.2006, 13:42
Сообщение #5


Сообщений: 68
Регистрация: 21.6.2004
Из: Уфа



Спасибо! Щаз гляну.
Перейти в начало страницы
 
+Цитировать сообщение
Schneider
сообщение 14.8.2006, 13:47
Сообщение #6


Сообщений: 2166
Регистрация: 18.10.2003



При поступлении звука нужно раскладывать в ряд Фурье и смотреть частоту самой низкой гармоники. Это и даст ноту (насколько я помню физику волн). В общем, я никогда такими вещами не занимался, но в голове сейчас появилась идея типа того: звук поступает дискретно (с частотой к примеру 44100 раз в секунду). Соответственно эти числа (амплитуда колебаний интенсивности звуковой волны, я так понимаю) запихиваем в некий массив по порядку, и отдельным потоком по таймеру делаем FFT (оно же БПФ :)), анализируем его, выявляем искомую гармонику и отображаем его. Я мог наврать в понятиях и в математике :) Но на алгоритме это не должно сильно сказаться, так что надеюсь будет работать. Главное с потоками грамотно оптимизировать все. Кстати, а звук каким макаром считывается? Это ведь тоже влияет, и причем существенно, на латентность.
Перейти в начало страницы
 
+Цитировать сообщение
LizardKing
сообщение 14.8.2006, 14:22
Сообщение #7


Сообщений: 68
Регистрация: 21.6.2004
Из: Уфа



Шнайдер - я так и делал, алгоритм рабочий, но чета фигня какая-та получалась. Лан, попробую еще, мож просто руки с мозгами из одного места растут :-\ Звук рекордил WinAPI'шными функциями. Через Direct не пробовал пока. Ок, всем спасибо :-) буду пробовать еще!
Перейти в начало страницы
 
+Цитировать сообщение
Schneider
сообщение 14.8.2006, 14:32
Сообщение #8


Сообщений: 2166
Регистрация: 18.10.2003



Попробуй через Direct Sound. Там все просто по идее (я с ним правда не работал, но DX вообще штука несложная), но эффективно и универсально. Я так понимаю, основная проблема - это скорость?
Перейти в начало страницы
 
+Цитировать сообщение
LizardKing
сообщение 14.8.2006, 14:39
Сообщение #9


Сообщений: 68
Регистрация: 21.6.2004
Из: Уфа



Именно. Большой фрагмент - большая точность, но низкая скорость обновления (срабатывания) и наоборот. Вот. Нуна компромисс искать. Попробую. Вообще как-то начал копать Директ и нашел там много интересных вещей (типа панорамирования, возможности запуска нескольких независимых источников и т.д.). А вообще директ предназначен в первую очередь для воспроизведения звука, а не для записи.
Перейти в начало страницы
 
+Цитировать сообщение
LizardKing
сообщение 14.8.2006, 14:40
Сообщение #10


Сообщений: 68
Регистрация: 21.6.2004
Из: Уфа



P.S. Коли уж оффтоп так разросся, добавлю СУБоффтоп - сегондя заказал в МузДетали уж очень приглянувшуюся мне акустику Skylark :-) чуть ли не самая дешевая, но что-то зацепила она меня :-) вот так люди влюбляются... наверное :-)
Перейти в начало страницы
 
+Цитировать сообщение
Sam (OverHead)
сообщение 14.8.2006, 14:46
Сообщение #11


Сообщений: 266
Регистрация: 7.12.2004
Из: Москва



Schneider: Кстати, а звук каким макаром считывается? Это ведь тоже влияет, и причем существенно, на латентность. Ну, если взять за истину то что для более-менее достоверного определения частоты, нужно как минимум 0.25 сек, то думаю пофигу каким макром считывается :) Думаю, любая, самая захудалая карта даже через Windows Wave Mapper способна нормально без косяков выдавать 250 миллисекундные буфферы.
Перейти в начало страницы
 
+Цитировать сообщение
Schneider
сообщение 14.8.2006, 15:25
Сообщение #12


Сообщений: 2166
Регистрация: 18.10.2003



OverHead: Ну, если взять за истину то что для более-менее достоверного определения частоты, нужно как минимум 0.25 сек, то думаю пофигу каким макром считывается :) Думаю, любая, самая захудалая карта даже через Windows Wave Mapper способна нормально без косяков выдавать 250 миллисекундные буфферы. Из этого по-твоему следует, что задержка тюнера меньше 250 миллисекунд не получится, так что ли? :) Здесь нужно имхо уменьшать сильно размер буффера для уменьшения латентности (т.е. времени на "разгон"), и вот тут уже будет важно, через что считывать звук, т.к. увеличивается число обращений к устройству. В принципе пользователю в течении первой секунды необязательно видеть совсем в копеечку правильную и адекватную ноту, ему важно видеть хотя бы что-нибудь, главное чтобы результат показывался оперативно и без тормозов. А уж тут могут быть проблемы всякого рода.
Перейти в начало страницы
 
+Цитировать сообщение
Sam (OverHead)
сообщение 14.8.2006, 15:59
Сообщение #13


Сообщений: 266
Регистрация: 7.12.2004
Из: Москва



Тоже правда.
Перейти в начало страницы
 
+Цитировать сообщение
janson
сообщение 15.8.2006, 14:15
Сообщение #14


Сообщений: 78
Регистрация: 13.8.2004
Из: Санкт-Петербург, Россия



Я тут был, читал... Понял только цифры: 440, 220, 110 и 44100 =))
Перейти в начало страницы
 
+Цитировать сообщение
Димка
сообщение 15.8.2006, 14:28
Сообщение #15


Сообщений: 0
Регистрация: 20.8.2003



Мож я чего не понимаю но мне кажется что не факт что нота ля должна определяться именно по 440 Гц. Там же ещё гармоники идут. Тебе надо как в спектроанализаторе наверное самую "громкую" гармонику выделять - это и будет твоя нота.
Перейти в начало страницы
 
+Цитировать сообщение
Димка
сообщение 15.8.2006, 14:29
Сообщение #16


Сообщений: 0
Регистрация: 20.8.2003



ваще зайди на www.sourceforge.net может там есть исходники тюнера. очень не исключено!
Перейти в начало страницы
 
+Цитировать сообщение
LizardKing
сообщение 15.8.2006, 14:44
Сообщение #17


Сообщений: 68
Регистрация: 21.6.2004
Из: Уфа



janson +1 Димка Угу, гляну. Времени вот пока нет, это я для себя с тюнером решил разобраться, на работе совсем другая конопля :-}}
Перейти в начало страницы
 
+Цитировать сообщение
janson
сообщение 15.8.2006, 15:21
Сообщение #18


Сообщений: 78
Регистрация: 13.8.2004
Из: Санкт-Петербург, Россия



LizardKing (Уфа): "на работе совсем другая конопля :-}}" А-а-а-а... вот почему такая тема появилась!!! =))
Перейти в начало страницы
 
+Цитировать сообщение
Димка
сообщение 15.8.2006, 15:47
Сообщение #19


Сообщений: 0
Регистрация: 20.8.2003



Да, там тюнеров дофига... http://sourceforge.net/search/?type_of_search=soft&words=tuner
Перейти в начало страницы
 
+Цитировать сообщение
LizardKing
сообщение 16.8.2006, 5:53
Сообщение #20


Сообщений: 68
Регистрация: 21.6.2004
Из: Уфа



janson Дык :-) завод химпромный :-) у нас тут зайцы по территории бегают непуганые... одного заколбасили, так он в темноте светился :-)
Перейти в начало страницы
 
+Цитировать сообщение


Ответить в данную темуНачать новую тему

 

RSS <% %> <% %> Текстовая версия Сейчас: 10.6.2026, 11:23

Copyright © 1997-2018, Guitar.ru. Информация для музыкантов. Все права защищены.
Форум IP.Board © 2009 IPS, Inc