Алгоритм обнаружения удара
В настоящее время я работаю над идеей игры, которая включает в себя определение битов. Движок, с которым я работаю, - это Unity, и у меня никогда не было опыта работы со звуком, поэтому нужно быть осторожным:)
Я просмотрел несколько статей и опробовал несколько алгоритмов, в том числе несколько собственных, но ни в одном из них мы не очень успешны и не достаточно точны, и я чувствую, что все это время я что-то ошибался.
В частности, я попытался реализовать идею, представленную здесь: http://archive.gamedev.net/archive/reference/programming/features/beatdetection/index.html
но с небольшим успехом я все еще думаю, что я пропускаю кое-что, и я не могу точно определить это.
Если бы кто-то мог дать объяснение о том, как сделать действительно точный детектор ударов, я был бы очень благодарен.
РЕДАКТИРОВАТЬ: некоторые люди были сбиты с толку относительно того, с чем у меня проблемы. Вот моя последняя попытка обнаружения ударов, я до сих пор не понимаю, почему это так неточно: http://pastebin.com/BD8y9tfz
в этом я использовал (R1) уравнение в ссылке, которую я разместил выше, чтобы вычислить мгновенную энергию из 1024 выборок, которые я взял, а затем я использовал (R3), чтобы вычислить локальную среднюю звуковую энергию из буфера, содержащего все предыдущие вычисления мгновенной энергии Затем я проверил, есть ли существенное увеличение мгновенной энергии по сравнению со средней локальной звуковой энергией, если есть, это означает, что есть удар, если нет, программа продолжается как обычно.
(глупая система репутации не позволяет мне публиковать ссылки и картинки):).
Редактирование 2: добавлена реализация для R4,R5 и R6, но все еще не работает. добавили немного отладки, и по какой-то причине константа очень мала, такие числа как:
Constant: -103416
а также Constant: -54793.28
Я понятия не имею, почему я получаю эти цифры, любую помощь?