function BufferLoader(context, buffer, callback) { this.context = context; this.buffer = buffer; this.onload = callback; this.bufferList = new Array(); } BufferLoader.prototype.loadBuffer = function(buffer) { var loader = this; // Asynchronously decode the audio file data in request.response loader.context.decodeAudioData( buffer, function(buffer) { if (!buffer) { alert('error decoding file data: ' + url); return; } loader.bufferList = buffer; loader.onload(loader.bufferList); }, function(error) { console.error('decodeAudioData error', error); } ); } BufferLoader.prototype.load = function() { this.loadBuffer(this.buffer); }