エレメントが AudioContext の createMediaElementSource で使用されている場合、ソースを動的に変更すると、オーディオ サウンドが歪みます (同時に 2 回再生するなど)。
エラーの最小限の例を次に示します。
var audio = document.getElementById('music');
var actx = new webkitAudioContext();
var node, processor = actx.createScriptProcessor(1024, 1, 1);
processor.onaudioprocess = function(e) { /* STUFF */ };
processor.connect(actx.destination);
audio.addEventListener('canplay', canPlayFired);
function canPlayFired(event)
{
node = actx.createMediaElementSource(audio);
node.connect(processor);
audio.removeEventListener('canplay', canPlayFired);
}
$('a.changeMusic').click(function(e){
e.preventDefault();
audio.src = $(this).attr('href');
});
node.disconnect(0);
動作する前に置くaudio.src = ...
と、データは処理されなくなります。新しいコンテキストを作成するなど、多くのことを試しましたが、以前に設定した javascript ノードを消去しないようです。
どうすれば修正できるか知っていますか?
前もって感謝します。