import { Tone } from "../Tone"; import { ToneAudioBuffer } from "./ToneAudioBuffer"; export interface ToneAudioBuffersUrlMap { [name: string]: string | AudioBuffer | ToneAudioBuffer; [name: number]: string | AudioBuffer | ToneAudioBuffer; } interface ToneAudioBuffersOptions { urls: ToneAudioBuffersUrlMap; onload: () => void; onerror?: (error: Error) => void; baseUrl: string; } /** * A data structure for holding multiple buffers in a Map-like datastructure. * * @example * //load a whole bank of piano samples * var pianoSamples = new ToneAudioBuffers({ * "C4" : "path/to/C4.mp3" * "C#4" : "path/to/C#4.mp3" * "D4" : "path/to/D4.mp3" * "D#4" : "path/to/D#4.mp3" * }, function(){ * //play one of the samples when they all load * player.buffer = pianoSamples.get("C4"); * player.start(); * }); * @example * //To pass in additional parameters in the second parameter * var buffers = new ToneAudioBuffers(urls, { * "onload" : callback, * "baseUrl" : "../path/to/audio/" * }) * @category Core */ export declare class ToneAudioBuffers extends Tone { readonly name: string; /** * All of the buffers */ private _buffers; /** * A path which is prefixed before every url. */ baseUrl: string; /** * Keep track of the number of loaded buffers */ private _loadingCount; /** * @param urls An object literal or array of urls to load. * @param onload The callback to invoke when the buffers are loaded. * @param baseUrl A prefix url to add before all the urls */ constructor(urls?: ToneAudioBuffersUrlMap, onload?: () => void, baseUrl?: string); constructor(options?: Partial); static getDefaults(): ToneAudioBuffersOptions; /** * True if the buffers object has a buffer by that name. * @param name The key or index of the buffer. */ has(name: string | number): boolean; /** * Get a buffer by name. If an array was loaded, * then use the array index. * @param name The key or index of the buffer. */ get(name: string | number): ToneAudioBuffer; /** * A buffer was loaded. decrement the counter. */ private _bufferLoaded; /** * If the buffers are loaded or not */ readonly loaded: boolean; /** * Add a buffer by name and url to the Buffers * @param name A unique name to give the buffer * @param url Either the url of the bufer, or a buffer which will be added with the given name. * @param callback The callback to invoke when the url is loaded. */ add(name: string | number, url: string | AudioBuffer | ToneAudioBuffer, callback?: () => void): this; dispose(): this; } export {};