我正在尝试将音频输入 + beatdetektor 示例放在一起,这样我就可以计算通过我的线路(甚至麦克风输入)播放的轨道的 BPM。
不幸的是,我并不完全理解应该如何使用“过程”方法中的“时间”参数(特别是在这种情况下,我不一定知道轨道何时改变等)。
这是我尝试使用可爱的 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>
最佳答案
根据the documentation on the BeatDetektor library , process()
函数接受 中的参数秒 .
我的猜测是,参数是歌曲开始后的秒数,而不是绝对日期。现在你正在传递自 1970 年以来的毫秒数。我不知道有那么长的歌曲。
Here是使用 process()
的示例模拟一首歌曲的 30 秒的功能。
看起来你必须记录歌曲的开始时间,然后计算调用 process()
时已经过去了多少时间。功能。处理有一个方便的 millis()
可能会帮助您的功能。
关于javascript - 使用javascript检测音频输入的bpm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38029623/