Я пытаюсь выполнить детекцию основного тона в реальном времени с использованием C++. Я тестирую некоторый код от performous (http://performous.org/), потому что все остальное не сработало для меня. Я точно знаю, что это работает, но я просто не могу заставить его работать. Я пробовал это в течение нескольких недель, и я не смог получить код обнаружения тональности.Обнаружение тангажа в реальном времени с использованием FFT
ответ
Вместо использования микрофонного микрофона вы должны создать данные известной частоты и запустить их через программу и посмотреть, приведет ли он вам правильный результат. Затем вы можете добавить к нему гармоники и посмотреть, работает ли это. Данные реального мира слишком переменны для первоначального тестирования.
Исполняемый аудиокодек имеет некоторые оптимизации, пределы частоты и эвристики, которые делают его пригодным только для пения (и других аналогичных тонов). Оптимальный диапазон составляет около 80-600 Гц.
C/C++/Obj-C Real-time algorithm to ascertain Note (not Pitch) from Vocal Input
Проверьте принятый ответ на эту ссылку.
Я искал SO для ответа на эту проблему, и это самый полезный ресурс, который я нашел.
Оказывается, что Performous использует этот алгоритм, но это трудно сделать из Performous кода
EDIT: Я, наконец, удалось рабочее решение. напишите мне, если вы заинтересованы в sunfish | gmail | c0m
«не может работать» означает ??? (не будет компилироваться? не запускается?) превращает ваш компьютер в пламя?) –
компилирует, но выводит частоты от 0 до 1024 – Niall
и что не так? Средний C составляет 440 Гц, поэтому диапазон кажется разумным, если вы пробовали свой микрофон. Какие частоты вы ожидаете? – AShelly