我正在构建一个带有循环选项的基于JavaScript的乐器。 要创建循环,首先记录笔记,它们的持续时间,间隙(在笔记之间)和整个循环的总时间。
例如,这就是我记录音符之间差距的方法:
$('.pad').on('touchstart', function(){
if (gapCount != null) {
clearInterval(gapCount)
loopInfo.push(noteInfo);
}
gapCount = setInterval(function () {
noteInfo.gap++
},1);
})
在我记录间隙的时间和总持续时间(以毫秒为单位)之后,我将信息传递给播放循环功能。然后我没有在音符之间暂停我刚刚录制的时间,而是播放所有内容的速度提高了4倍。这真的很奇怪,这种行为的原因是什么?
gap = loopInfo[i].gap;
setTimeout(function () {
PlayNoteInLoop(i)
}, gap) // the same number recorded in the function above, but in reality playing it 4 times faster`