javascript - 使用javascript检测音频输入的bpm?

标签 javascript audio p5.js

我正在尝试将音频输入 + 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/

相关文章:

javascript - 如何将 p5.js 引入网站?

javascript - 二维数组与 javascript (p5js)

javascript - 如何打印 MongoDB 数组中嵌入文档的值?

java - 我可以在Android Studio中的单个耳机上播放声音吗?

ubuntu - 在 Ubuntu Docker 镜像上录制声音

iphone - 播放OpenAL源不是从声音剪辑的开头开始吗?

javascript - 生命游戏bug

javascript - 使用 jquery 隐藏和显示元素

javascript - 关于“AngularJS 与 Plupload 一起使用”的一些问题

javascript - 从网络推送通知负载中获取值(value)