私はピアノアプリケーションを開発しています。ノート名とその再生時間のjson配列があります。
var data= [{"duration":300,"value":"2C"},{"duration":400,"value":"2D"},{"duration":420,"value":"2E"},{"duration":600,"value":"2F"},{"duration":400,"value":"2G"}];
2C ノートを 300 マイクロ秒、2D ノートを 400 マイクロ秒、2E を 420 マイクロ秒という順序で再生する必要があります。つまり、前のノートの完了後に次のノートを再生します。
すべてのノートに .ogg 形式のオーディオ ファイルがあり、すべてのノートの長さが同じ 1018.776 マイクロ秒です。
上記の json データのメモを再生するために、javascript の setTimeout 関数を試しました。
$.each( data, function( key, value ) {
setTimeout(function(){
var audioElement = document.createElement('audio');
audioElement.setAttribute('src', './audio/'+value.value+'.ogg');
audioElement.play();
}, value.duration*key);
});
しかし、これは機能していません。主な問題は持続時間です。console.log(value.value) を使用すると、結果は 2C、2D、2E、2G、2F でした。ここでは、2F と 2G の順序が正しくありません。では、これらの音符をそれぞれの長さで正しい順序で再生するにはどうすればよいでしょうか?