Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I play audio in reverse with web audio API?

How can I play audio in reverse with the web audio API? I can't seem to find anything in the API docs...

like image 807
lakenen Avatar asked Mar 26 '12 14:03

lakenen


2 Answers

You could do something like this:

var context = new AudioContext(),
    request = new XMLHttpRequest();
request.open('GET', 'path/to/audio.mp3', true);
request.responseType = 'arraybuffer';
request.addEventListener('load', function(){
    context.decodeAudioData(request.response, function(buffer){
        var source = context.createBufferSource();
        Array.prototype.reverse.call( buffer.getChannelData(0) );
        Array.prototype.reverse.call( buffer.getChannelData(1) );
        source.buffer = buffer;
    });
});

It's a super simple example - but the point is basically that you can grab the Float32Array instance for each channel in the AudioBuffer and reverse them.

like image 182
Kevin Ennis Avatar answered Sep 20 '22 18:09

Kevin Ennis


if you have an AudioBufferSourceNode element:

audioBufferSourceNode.playbackRate = -1;

-EDIT-

Webkit doesn't have that feature.

Source: https://bugs.webkit.org/show_bug.cgi?id=69725

like image 28
Imaky Avatar answered Sep 17 '22 18:09

Imaky