Javascript 在浏览器中为节拍器精确计时声音

Javascript 在浏览器中为节拍器精确计时声音,javascript,audio,html5-audio,web-audio-api,Javascript,Audio,Html5 Audio,Web Audio Api,我想创建一个虚拟的,并发挥节拍器的声音与每一步。通常的方法,如setTimeout/setInterval不够精确。我怎样才能使它不延迟或不间断地工作呢?这里是每500毫秒一次的测试 功能蜂鸣音{ 新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据:音频/wav;wav;wav;wav;wawavvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

我想创建一个虚拟的,并发挥节拍器的声音与每一步。通常的方法,如setTimeout/setInterval不够精确。我怎样才能使它不延迟或不间断地工作呢?

这里是每500毫秒一次的测试

功能蜂鸣音{ 新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据;新的音频数据:音频/wav;wav;wav;wav;wawavvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvGOXJCLFZ3KGN//7月1日,一个10岁的家庭中有一个10岁的家庭,一个10岁的家庭,一个10岁的家庭,一个7岁的家庭,一个10岁的家庭,一个10岁的家庭,一个10岁的家庭,一个10岁的家庭,一个10岁的家庭,一个7岁的家庭,一个7月7月/9 vt/////9月一个10岁的家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,一个家庭,他们,他们的JZrNqasnkieOH5GI7BJ1.一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国政府一个中国L+kSJ5//rL2.目前,他们的研究结果是一个关于某个问题的研究。一个关于某个问题的研究结果。6个QQWW7/+10个单词(7)QQWW7/+10个关于这些问题的研究结果。他们的研究结果是一个关于一个关于某个问题的研究结果,一个关于一个关于一个关于一个关于某个问题的研究结果。6个QQQQWWW7/+一些关于一些关于这些问题的研究,或者或者他们的文章,关于一些关于一些关于一些关于这个问题,他们的研究结果,比如他们的研究,比如,比如他们的研究,比如,比如他们的一些关于关于关于他们的研究,他们的研究结果,比如,比如,比如他们的一些关于关于他们的文章,比如他们的第六六个关于关于他们的第六个关于他们的文章,或者或者或者他们的第六个关于关于他们的第六个关于他们的研究,或者或者或者或者或者或者或者或者或者他们的一些关于关于关于关于他们的一些关于PVUIUhorgWJP7MF/PRjxcFCPD在中国,一种新的视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频IAAAKQOAAHVYPL5M6AAGAACXDAAAD59JBLTIRQE9UPFSMZBPMUD7LZ1x1失调WPQNx2WQKTK0DMVUGWLBNJ44TLEPQ+Gsfb+GowokJoirwB3cimeeon6UmXV8MJ30YWPJOSA9UJJ8YWP5YW6Hvlep5O6Hv6B9Fikgusu/DMAmatrgX7N5P5P5IK5IK2LKZZZZZW5IK5IK2P9LK2LK2LK2LK2LK2LK2LK2LK2LK2LZZZZZZYYK2LK2LK2LK2LK2LK2LK2LK2LK2LK2LK2LK2LZZZZZZZZZZZZZZZZZZYYYYK2LK2LZZZ(2)在一次研究中,他们发现了一个新的视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频(2)在他们的视频视频视频中,他们发现了一个新的视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频视频ZYCQJ8月8日,中国政府对中国政府提出了一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一个关于中国政府的一些关于中国政府的一些关于中国政府的一些关于中国政府的一些6个关于中国政府的一些6个关于中国政府的一些6个关于中国政府的一些6 6层的一些6 6 6 6 6层的一些6 6层的一些6层。6 6 6层。6 6层。6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6。。。。6。6。7AUABPRRGCABDDUQ5GC7DQPQCGB在一份研究报告中,一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告的一份研究报告。一份研究的一份研究报告的一份研究报告的一份研究报告的一份研究结果是一份研究报告的一份研究报告。一份研究报告的一份研究报告的一份研究的一份研究报告的一份研究。一份研究的一份研究报告的一份研究报告。一份研究报告的一份研究报告,一份研究的一份研究报告,一份研究一份研究一份研究。一份研究报告的一份研究的一份研究。一份研究一份研究。一份研究一份研究的一份研究报告。一份NMW26MRPGU6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6月6日,6日,6月6日,6月6日,6日,6月6日,6日,6日,VVVVVVVVVVVVVVVVVVVVVVVVVZZZZZZZZZZZZZZZZZ1+2-VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVGZDWQKIWKNBVMOWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; 游戏; }
setIntervalbeep,500还不错,但两次嘟嘟声之间有一点延迟。还有更好的方法吗?@AliAhmadi有一个延迟,但应该只有1-2毫秒左右。我更新了答案。我认为可以使用requestAnimationFrame来提高精度,但它似乎比setTimeout更糟糕。我不认为你能做什么来改善这一点。我们能消除大约1-2毫秒的延迟吗?@AliAhmadi是的,这是可能的音频调度。但这超出了这个问题的范围。你可能想读这篇文章。节拍器的密码
使用调度的演示可以在我运行此代码时进行。声音之间的时间间隔为599ms-617ms。答案是使用AudioBufferSourceNode并调用。从When参数开始,以指示节拍器声音应该在哪个时间戳开始。这将保证音频的准确性。如果您还想在发生这种情况时触发其他代码,那么这是不可能的。一旦时间过去,你将不得不使用其他方法,比如间隔,来做其他事情。您可以使用audioContext.currentTime来确定当前时间戳。因此,无法在AudioBufferSourceNode.start;之后触发某些代码;?不是基于时间,不是。即使你可以,它也不会对你有帮助,因为它的时间可能是错的。所以,如果你需要安排音频,你需要提前打电话。从时间戳开始。如果你想在屏幕上显示东西,你可以使用requestAnimationFrame,但请注意,如果选项卡失去焦点,这将被限制或完全暂停。那么Brad先生,你建议如何在准确时间触发某些代码?最好的方法是什么?你不能。你需要找到另一种方法。张贴一个问题,明确说明你想做什么。