The following JavaScript ought to (in my mind) play a sequence of notes 0.5 sec apart. But it plays them all as a single simultaneous chord. Any idea how to fix it?
function playRecording() {
if (notes.length > 0) {
for (var i = 0; i < notes.length; i++) {
var timeToStartNote = 500 * i;
setTimeout(playNote(i), timeToStartNote);
}
}
}
function playNote(i) {
var noteNumber = notes[i];
var note = new Audio("/notes/note_" + noteNumber + ".mp3");
note.play();
}
JavaScript closures, wrap this in a self-executing function:
for (var i = 0; i < notes.length; i++) {
(function(i) {
var timeToStartNote = 500 * i;
setTimeout(function() {
playNote(i)
}, timeToStartNote);
})(i)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With