Spaces:
Running
Running
import { AudioContext } from '../audio/AudioContext.js'; | |
import { FileLoader } from './FileLoader.js'; | |
import { DefaultLoadingManager } from './LoadingManager.js'; | |
/** | |
* @author Reece Aaron Lecrivain / http://reecenotes.com/ | |
*/ | |
function AudioLoader( manager ) { | |
this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; | |
} | |
Object.assign( AudioLoader.prototype, { | |
load: function ( url, onLoad, onProgress, onError ) { | |
var loader = new FileLoader( this.manager ); | |
loader.setResponseType( 'arraybuffer' ); | |
loader.setPath( this.path ); | |
loader.load( url, function ( buffer ) { | |
// Create a copy of the buffer. The `decodeAudioData` method | |
// detaches the buffer when complete, preventing reuse. | |
var bufferCopy = buffer.slice( 0 ); | |
var context = AudioContext.getContext(); | |
context.decodeAudioData( bufferCopy, function ( audioBuffer ) { | |
onLoad( audioBuffer ); | |
} ); | |
}, onProgress, onError ); | |
}, | |
setPath: function ( value ) { | |
this.path = value; | |
return this; | |
} | |
} ); | |
export { AudioLoader }; | |