Я работаю с API аудио данных Mozilla, следуя инструкциям here.Обнаружение битов аудиоданных API
В приведенном выше коде используется Float32Array
в алгоритме FFT. Кажется, что он имеет вариацию частоты, которая позже заполняется magnitude
. Я хотел бы сделать условие, чтобы определить, если это число больше 1, например, так:
if (magnitude > 1) {
beat = true;
} else {
beat = false;
}
Это условие не выполнено, у вас есть какие-либо идеи, почему? Спасибо.
Какой размер БПФ вы используете? В общем, БПФ являются плохим выбором для обнаружения биений, поскольку ему не хватает временного разрешения. – marko
Хмм, что вы имеете в виду по размеру БПФ? Я просто считаю, что использовать этот API для меня проще, потому что у меня нет отличных навыков для алго ... – keepthepeach
Это очень важно. БПФ работают на окнах образцов. По определению временное разрешение любого алгоритма, пытающегося обнаружить onset с помощью БПФ, является периодом этого окна, а на практике меньше. Если вы работали с 1024-кратным FFT, это дает разрешение на 44,1 кГц в 23 мс - что еще один путь, 43-й секунды. Практические алгоритмы обнаружения начала, как правило, не основаны на частотной области. – marko