2016-06-25 6 views
0

Я пытаюсь собрать пример аудиовхода + beatdetektor, чтобы я мог рассчитать BPM трека, воспроизводящего мою линию (или даже вход микрофона).Обнаружение bpm аудиовхода с использованием javascript?

К сожалению, я не понял точно, как должен использоваться параметр «время» из метода «процесс» (особенно в том случае, когда я не обязательно знаю, когда изменяется трек и т. Д.).

Вот какой-то код, который я собрал, пытаясь решить эту головоломку, используя прекрасную библиотеку p5.js, пожалуйста, дайте мне знать, как я мог бы настроить ее для достижения желаемого эффекта.

<script src="js/p5-zip/p5.js"></script> 
<script src="js/p5-zip/addons/p5.sound.js"></script> 

<script src="js/beatdetektor-master/beatdetektor.js"></script> 

<script> 

    // beatdetektor stuff 

    bd_med = new BeatDetektor(85,169); 

    vu = new BeatDetektor.modules.vis.VU(); 
    kick_det = new BeatDetektor.modules.vis.BassKick(); 

    // p5 stuff 
    mic = new p5.AudioIn(); 
    mic.start(); 
    fft = new p5.FFT(); 
    fft.setInput(mic); 

    funk = function(){ 
    spectrum = fft.analyze(); 

    bd_med.process((new Date).getTime(), spectrum) 
    } 

    // analyse with 60 frames, we could maybe use requestAnimationFrame here 
    setInterval(funk, 1000/60) 

</script> 

ответ

0

В соответствии с the documentation on the BeatDetektor library, функция process() принимает аргумент в секунд.

Я предполагаю, что аргумент - это секунды с момента начала песни, а не абсолютная дата. Прямо сейчас вы проезжаете миллисекунды с 1970 года. Я не знаю ни одной песни, которая так долго.

Here является примером использования функции process() для имитации 30 секунд песни.

Похоже, вам нужно будет отслеживать время начала песни, а затем подсчитать, сколько времени прошло при вызове функции process(). Обработка имеет удобную функцию millis(), которая может помочь вам.