SoundManager2 の一連のサウンド ファイルをループして、さまざまな時点で再生しようとしています。以下のコードは、サウンド ファイルとそのサウンド ファイルを再生する長さで構成される「音符」を含む、次のような songArray を受け取ります。
var songArray = [[null],[["clarinet_e4.mp3",1],["clarinet_a4.mp3",1]],[null],[null],[null],[null],[["clarinet_c4.mp3",1]],[["clarinet_c5.mp3",1]],[null],[["clarinet_ab4.mp3",1]],[["clarinet_f3.mp3",1]],[null],[["clarinet_g4.mp3",1]],[["clarinet_d5.mp3",1]],[null],[null]]
配列内の各 X を調べて、指定された X で見つかったサウンドを再生します。次に、duration で指定された時間後にサウンドを停止します。コードは完全に動作しますが、サウンドが停止すると、曲の最後でポップ ノイズが発生します。
function playSong(X) {
playSongNotesAtXValue(X);
window.setTimeout(function() {
X++;
if (X >= theSong.songArray.length) {
X = 0;
}
playSong(X);
}, (30/theSong.tempo)*1000)
}
function playSongNotesAtXValue(X) {
var columnToPlay = theSong.songArray[X];
if (columnToPlay[0] != null) {
for (i = 0; i < columnToPlay.length; i++) {
var note = columnToPlay[i];
soundManager.play(note[0],{volume:30});
window.setTimeout(function() {
soundManager.stop(note[0]);
}, (note[1]*30/theSong.tempo)*1000);
}
}
}
何が間違っている可能性がありますか?
PS Safari、Chrome、Firefox の最新バージョンで試しました。