Bali Balo
Bali Balo

Reputation: 3408

Chrome issue changing source of audio element when using AudioContext

The Audio sound is distorded (like playing twice at the same time or something like that) when I change its source dynamically, if the element was used in the createMediaElementSource of an AudioContext.

Here is a minimalist example of the error: http://jsfiddle.net/BaliBalo/wkFpv/ (It works well at first but it is going crazy when you click a link to change the source).

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');
});

If I put node.disconnect(0); before audio.src = ... it works but the data is no more processed. I tried a lot of thing like creating a new context but it seems not to erase the previously set javascript node.

Do you know how I could fix it ?

Thanks in advance.

Upvotes: 1

Views: 1474

Answers (1)

Tyler Scott
Tyler Scott

Reputation: 1046

I would suggest taking a look at this: jsbin.com/acolet/1

It seems to be doing the same thing you are looking for.

I found this from this post.

Upvotes: 1

Related Questions