0

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

0 に答える 0