ループ オプションを使用して 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`