根据我的基本理解,JavaScript音频可视化工具是根据实际的声波反射音乐的。我想构建一个类似于节拍器(http://bl.ocks.org/1399233)的东西,在其中我为每个x节拍的一些DOM元素设置动画。
我现在这样做的方式是,我手动计算出歌曲的节奏,假设是120bpm,然后我将其转换为毫秒来运行setInterval回调。但这似乎不起作用,因为浏览器的性能导致它不精确。有没有更好的方法来确保回调完全按照歌曲的节奏执行?
如果没有,有什么其他的策略来同步JavaScript动画与歌曲的节奏,而不是一个音频可视化工具?
更新:看起来像这样的东西?https://github.com/bestiejs/benchmark.js/blob/master/benchmark.js#L1606
发布于 2011-12-01 06:41:22
这篇文章可能是相关的:
要点是,您在setInterval()中运行函数的速度略快于您的节奏,例如,每隔100ms。长例简而言之,您可以通过检查(new Date()).getMilliseconds()的值并查看是否已经过了相当于毫秒一个节拍的时间,而不是依赖不太准确的setTimeout或setInterval函数,来跟踪是否到了播放“节拍”的时候。
即使这样,音乐本身,除非由计算机产生,否则可能不会有完美或一致的节奏,所以对你来说,计算错误的节拍可能是一个障碍,这可能就是为什么使用音频分析来找出实际节拍将发生在哪里可能是一个更好的方法。
https://stackoverflow.com/questions/8333981
复制相似问题