@sebastbake/music-tempo
Version:
Finding out tempo of the music
48 lines (41 loc) • 1.43 kB
HTML
<html>
<head>
<script src="../dist/browser/music-tempo.min.js"></script>
</head>
<body>
<input type="file" name="" id="fileInput">
<p>Sample rate <input type="number" name="" id="sampleRateInput" value="44100" /></p>
<script>
var context = new AudioContext({
sampleRate: document.getElementById("sampleRateInput").value,
});
var fileInput = document.getElementById("fileInput");
fileInput.onchange = function () {
var files = fileInput.files;
if (files.length == 0) return;
var reader = new FileReader();
reader.onload = function(fileEvent) {
context.decodeAudioData(fileEvent.target.result, calcTempo);
}
reader.readAsArrayBuffer(files[0]);
}
var calcTempo = function (buffer) {
var audioData = [];
// Take the average of the two channels
if (buffer.numberOfChannels == 2) {
var channel1Data = buffer.getChannelData(0);
var channel2Data = buffer.getChannelData(1);
var length = channel1Data.length;
for (var i = 0; i < length; i++) {
audioData[i] = (channel1Data[i] + channel2Data[i]) / 2;
}
} else {
audioData = buffer.getChannelData(0);
}
var mt = new MusicTempo(audioData);
console.log(mt);
}
</script>
</body>
</html>