[3/4 OFF] Софтовый тюнер или Ау, девелоперы :-) |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
[3/4 OFF] Софтовый тюнер или Ау, девелоперы :-) |
14.8.2006, 9:11
Сообщение
#1
|
|
![]() Сообщений: 68 Регистрация: 21.6.2004 Из: Уфа |
Всем привет, а девелоперам особенно! :-)
Поясните, плиз, как устроен софтовый тюнер (ну, наверное, и тюнер вообще). Как я понимаю, тюнер должен отображать ноту, которую я дернул на гитаре, анализируя кусочек звукового потока и вычленять оттуда значение наиболее часто встречающейся амплитуды. Количество повторов примерно равных амлитуд и будет "герцность" искомой ноты, т.е. если какая-та амлитуда встретилась примерно 440 раз в секундном фрагменте, то, значицца, мы дернули ноту "Ля" и т.д. Но в этом случае нужно записывать СЕКУНДУ звука, что для тюнера неприемлимо. Если пропорционально уменьшить время записи фрагмента, увеличиться "оперативность" тюнера, но также возрастет и ошибка (причем латентность все равно будет нехилая).
Народ! Мож, я, конечно, чушь пишу, но не будьте так строги - объясните убогому, чего в Датском королевстве наперекосяк?
P.S. При анализе пользовался FFT, т.е. в математике уж не совсем ламер, хотя... ;-)
ВСЕМ ЗАРАНЕЕ ОГРОМНОЕ ЛИЗАРДКИНГОВСКОЕ СПАСИБО!
|
|
|
|
|
|
14.8.2006, 10:42
Сообщение
#2
|
|
|
Сообщений: 1 Регистрация: 21.6.2005 |
зачем
ты можешь насчитать 220 колебаний в 0.5 сек
110 колебаний в 0.25 сек
и т.д.
поступающий сигнал сразу и непрерывно раскладывается в ряды. наверное кстати поэтому иногда вначале они показывают ноту на октаву выше реальной. какой отрезок времени при этом берется даже не знаю, но по опыту задержки показаний тюнера ~ 0.2..0.5 сек. этого достаточно для анализа (не менее 110 циклов попадает)
и зачем кстати тюнеру такая оперативность менее 0.5 сек. все равно струну нужно строить не по первым мгновениям звучания, а когда натяжение спадет
|
|
|
|
14.8.2006, 10:47
Сообщение
#3
|
|
![]() Сообщений: 68 Регистрация: 21.6.2004 Из: Уфа |
110 колебаний в 0.25 сек - это же все-таки не факт, что в 1 сек будет 440! Наверное...
Но сам принцип-то верный или как?
|
|
|
|
14.8.2006, 13:20
Сообщение
#4
|
|
|
Сообщений: 1 Регистрация: 21.6.2005 |
принцип верный
думаю здесь можно почитать об этом больше
http://forum.sources.ru/index.php?showtopic=9061
|
|
|
|
14.8.2006, 13:42
Сообщение
#5
|
|
![]() Сообщений: 68 Регистрация: 21.6.2004 Из: Уфа |
Спасибо! Щаз гляну.
|
|
|
|
14.8.2006, 13:47
Сообщение
#6
|
|
![]() Сообщений: 2166 Регистрация: 18.10.2003 |
При поступлении звука нужно раскладывать в ряд Фурье и смотреть частоту самой низкой гармоники. Это и даст ноту (насколько я помню физику волн).
В общем, я никогда такими вещами не занимался, но в голове сейчас появилась идея типа того: звук поступает дискретно (с частотой к примеру 44100 раз в секунду). Соответственно эти числа (амплитуда колебаний интенсивности звуковой волны, я так понимаю) запихиваем в некий массив по порядку, и отдельным потоком по таймеру делаем FFT (оно же БПФ :)), анализируем его, выявляем искомую гармонику и отображаем его.
Я мог наврать в понятиях и в математике :) Но на алгоритме это не должно сильно сказаться, так что надеюсь будет работать. Главное с потоками грамотно оптимизировать все.
Кстати, а звук каким макаром считывается? Это ведь тоже влияет, и причем существенно, на латентность.
|
|
|
|
14.8.2006, 14:22
Сообщение
#7
|
|
![]() Сообщений: 68 Регистрация: 21.6.2004 Из: Уфа |
Шнайдер - я так и делал, алгоритм рабочий, но чета фигня какая-та получалась. Лан, попробую еще, мож просто руки с мозгами из одного места растут :-\
Звук рекордил WinAPI'шными функциями. Через Direct не пробовал пока.
Ок, всем спасибо :-) буду пробовать еще!
|
|
|
|
14.8.2006, 14:32
Сообщение
#8
|
|
![]() Сообщений: 2166 Регистрация: 18.10.2003 |
Попробуй через Direct Sound. Там все просто по идее (я с ним правда не работал, но DX вообще штука несложная), но эффективно и универсально.
Я так понимаю, основная проблема - это скорость?
|
|
|
|
14.8.2006, 14:39
Сообщение
#9
|
|
![]() Сообщений: 68 Регистрация: 21.6.2004 Из: Уфа |
Именно. Большой фрагмент - большая точность, но низкая скорость обновления (срабатывания) и наоборот. Вот. Нуна компромисс искать.
Попробую. Вообще как-то начал копать Директ и нашел там много интересных вещей (типа панорамирования, возможности запуска нескольких независимых источников и т.д.). А вообще директ предназначен в первую очередь для воспроизведения звука, а не для записи.
|
|
|
|
14.8.2006, 14:40
Сообщение
#10
|
|
![]() Сообщений: 68 Регистрация: 21.6.2004 Из: Уфа |
P.S. Коли уж оффтоп так разросся, добавлю СУБоффтоп - сегондя заказал в МузДетали уж очень приглянувшуюся мне акустику Skylark :-) чуть ли не самая дешевая, но что-то зацепила она меня :-) вот так люди влюбляются... наверное :-)
|
|
|
|
14.8.2006, 14:46
Сообщение
#11
|
|
![]() Сообщений: 266 Регистрация: 7.12.2004 Из: Москва |
Schneider:
Кстати, а звук каким макаром считывается? Это ведь тоже влияет, и причем существенно, на латентность.
Ну, если взять за истину то что для более-менее достоверного определения частоты, нужно как минимум 0.25 сек, то думаю пофигу каким макром считывается :) Думаю, любая, самая захудалая карта даже через Windows Wave Mapper способна нормально без косяков выдавать 250 миллисекундные буфферы.
|
|
|
|
14.8.2006, 15:25
Сообщение
#12
|
|
![]() Сообщений: 2166 Регистрация: 18.10.2003 |
OverHead:
Ну, если взять за истину то что для более-менее достоверного определения частоты, нужно как минимум 0.25 сек, то думаю пофигу каким макром считывается :) Думаю, любая, самая захудалая карта даже через Windows Wave Mapper способна нормально без косяков выдавать 250 миллисекундные буфферы.
Из этого по-твоему следует, что задержка тюнера меньше 250 миллисекунд не получится, так что ли? :)
Здесь нужно имхо уменьшать сильно размер буффера для уменьшения латентности (т.е. времени на "разгон"), и вот тут уже будет важно, через что считывать звук, т.к. увеличивается число обращений к устройству. В принципе пользователю в течении первой секунды необязательно видеть совсем в копеечку правильную и адекватную ноту, ему важно видеть хотя бы что-нибудь, главное чтобы результат показывался оперативно и без тормозов.
А уж тут могут быть проблемы всякого рода.
|
|
|
|
14.8.2006, 15:59
Сообщение
#13
|
|
![]() Сообщений: 266 Регистрация: 7.12.2004 Из: Москва |
Тоже правда.
|
|
|
|
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 может там есть исходники тюнера. очень не исключено!
|
|
|
|
15.8.2006, 14:44
Сообщение
#17
|
|
![]() Сообщений: 68 Регистрация: 21.6.2004 Из: Уфа |
janson
+1
Димка
Угу, гляну. Времени вот пока нет, это я для себя с тюнером решил разобраться, на работе совсем другая конопля :-}}
|
|
|
|
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
|
|
|
|
16.8.2006, 5:53
Сообщение
#20
|
|
![]() Сообщений: 68 Регистрация: 21.6.2004 Из: Уфа |
janson
Дык :-) завод химпромный :-) у нас тут зайцы по территории бегают непуганые... одного заколбасили, так он в темноте светился :-)
|
|
|
|
|
|
![]() ![]() |
<% %> <% %> |
Текстовая версия | Сейчас: 10.6.2026, 22:07 |