<!doctype html> <html> <head> </head> <body> <script> var Module = { onRuntimeInitialized: function() { } }; </script> <script src="wrapper.js"></script> <input type="file" id="file" name="file" /> <script> function onChange(e) { var file = e.target.files[0]; var reader = new FileReader(); reader.onload = function(e) { var buffer = reader.result; var src = new Uint8Array(buffer); var ptr = Module._malloc(buffer.byteLength); var arr = new Uint8Array(Module.HEAPU8.buffer, ptr, buffer.byteLength); var ctx = new AudioContext(); var time = 0; arr.set(src, 0); var decoder = new Module.Decoder(); decoder.addFragment(ptr, buffer.byteLength); while (decoder.hasMore()) { var audio = decoder.decode(1); if (audio === undefined) { if (decoder.hasMore() === false) { break; } } var source = ctx.createBufferSource(); source.buffer = audio; source.connect(ctx.destination); source.start(time); time += audio.duration; } decoder.delete(); } reader.readAsArrayBuffer(file); } document.getElementById("file").addEventListener("change", onChange, false); </script> </body> </html>