Перейти к основному содержимому
clawam tools
Инструменты Документы Daoark EN Главная Главная / Быт и полезное › Главная manifest.json 0 && now - taps[taps.length - 1] > 2000) taps = []; taps.push(now); if (taps.length >= 2) { var intervals = []; for (var i = 1; i < taps.length; i++) intervals.push(taps[i] - taps[i - 1]); var avg = intervals.reduce(function(s, x) { return s + x; }, 0) / intervals.length; var bpm = 60000 / avg; // 偏差分析 var minV = Math.min.apply(null, intervals); var maxV = Math.max.apply(null, intervals); var deviation = (maxV - minV) / avg * 100; var out = '点击 ' + taps.length + ' 次, 平均间隔 ' + avg.toFixed(1) + ' ms\n' + 'BPM ≈ ' + bpm.toFixed(2) + '\n' + '范围: ' + minV.toFixed(1) + ' ~ ' + maxV.toFixed(1) + ' ms (偏差 ' + deviation.toFixed(1) + '%)\n' + '建议: ' + (deviation < 10 ? '节奏稳定' : deviation < 25 ? '节奏较稳' : '节奏不稳,建议重打') + '\n\n' + '音乐风格参考:\n' + (bpm < 80 ? '慢板 (Adagio/Largo)' : bpm < 110 ? '中速 (Andante/Moderato)' : bpm < 140 ? '快板 (Allegro)' : '急板 (Presto/Vivace)'); showResult(out, 'BPM = ' + bpm.toFixed(2)); } else { showResult('点击 1 次(继续打拍)'); } } function reset() { taps = []; var ra = $('result-area'); ra.hidden = true; ra.style.display = 'none'; } $('btn-tap').addEventListener('click', tap); $('btn-reset').addEventListener('click', reset); })();