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