/// declare namespace PIXI { export interface LoaderResource { sound: PIXI.sound.Sound; } } declare namespace PIXI.sound { // SoundLibrary const context: IMediaContext; const supported: boolean; let useLegacy: boolean; let volumeAll: number; let speedAll: number; let filtersAll: Filter[]; function add(alias: string, options: Options | string | ArrayBuffer | HTMLAudioElement | Sound): Sound; function add(map: SoundMap, globalOptions?: Options): { [id: string]: Sound; }; function remove(alias: string): typeof PIXI.sound; function togglePauseAll(): boolean; function pauseAll(): typeof PIXI.sound; function resumeAll(): typeof PIXI.sound; function toggleMuteAll(): boolean; function muteAll(): typeof PIXI.sound; function unmuteAll(): typeof PIXI.sound; function removeAll(): typeof PIXI.sound; function stopAll(): typeof PIXI.sound; function exists(alias: string, assert?: boolean): boolean; function find(alias: string): Sound; function play(alias: string, options?: PlayOptions | CompleteCallback | string): IMediaInstance | Promise; function stop(alias: string): Sound; function pause(alias: string): Sound; function resume(alias: string): Sound; function volume(alias: string, volume?: number): number; function speed(alias: string, speed?: number): number; function duration(alias: string): number; function init(): typeof PIXI.sound; function close(): typeof PIXI.sound; // end: SoundLibrary class Filter { destination: AudioNode; source: AudioNode; constructor(destination: AudioNode, source?: AudioNode); connect(destination: AudioNode): void; disconnect(): void; destroy(): void; } class Filterable { constructor(input: AudioNode, output: AudioNode); readonly destination: AudioNode; filters: Filter[]; destroy(): void; } interface Options { autoPlay?: boolean; singleInstance?: boolean; volume?: number; speed?: number; complete?: CompleteCallback; loaded?: LoadedCallback; preload?: boolean; loop?: boolean; url?: string; source?: ArrayBuffer | HTMLAudioElement; sprites?: { [id: string]: SoundSpriteData; }; } interface PlayOptions { start?: number; end?: number; speed?: number; loop?: boolean; volume?: number; sprite?: string; muted?: boolean; complete?: CompleteCallback; loaded?: LoadedCallback; } type InstanceSetProperties = 'speed'|'volume'|'muted'|'loop'|'paused'; type LoadedCallback = (err: Error, sound?: Sound, instance?: IMediaInstance) => void; type CompleteCallback = (sound: Sound) => void; class Sound { isLoaded: boolean; isPlaying: boolean; autoPlay: boolean; singleInstance: boolean; preload: boolean; url: string; options: Options; media: IMedia; static from(source: string | Options | ArrayBuffer | HTMLAudioElement): Sound; constructor(media: IMedia, options: Options); readonly context: IMediaContext; pause(): Sound; resume(): Sound; paused: boolean; speed: number; filters: Filter[]; addSprites(alias: string, data: SoundSpriteData): SoundSprite; addSprites(sprites: { [id: string]: SoundSpriteData; }): SoundSprites; destroy(): void; removeSprites(alias?: string): Sound; readonly isPlayable: boolean; stop(): Sound; play(alias: string, callback?: CompleteCallback): IMediaInstance | Promise; play(source?: string | PlayOptions | CompleteCallback, callback?: CompleteCallback): IMediaInstance | Promise; refresh(): void; refreshPaused(): void; volume: number; muted: boolean; loop: boolean; readonly instances: IMediaInstance[]; readonly sprites: SoundSprites; readonly duration: number; autoPlayStart(): IMediaInstance; } type SoundMap = { [id: string]: Options | string | ArrayBuffer | HTMLAudioElement; }; interface IMedia { filters: Filter[]; readonly context: IMediaContext; readonly duration: number; readonly isPlayable: boolean; create(): IMediaInstance; init(sound: Sound): void; load(callback?: LoadedCallback): void; destroy(): void; } interface IMediaContext { muted: boolean; volume: number; speed: number; paused: boolean; filters: Filter[]; toggleMute(): boolean; togglePause(): boolean; refresh(): void; destroy(): void; audioContext: AudioContext; } interface IMediaInstance { readonly id: number; readonly progress: number; paused: boolean; volume: number; speed: number; loop: boolean; muted: boolean; stop(): void; refresh(): void; refreshPaused(): void; init(parent: IMedia): void; play(options: PlayOptions): void; destroy(): void; toString(): string; once(event: string, fn: () => void, context?: any): this; on(event: string, fn: Function, context?: any): this; off(event: string, fn: Function, context?: any, once?: boolean): this; set(name:InstanceSetProperties, value:number|boolean): this; } interface SoundSpriteData { start: number; end: number; speed?: number; loop?: boolean; } type SoundSprites = { [id: string]: SoundSprite; }; class SoundSprite { parent: Sound; start: number; end: number; speed: number; loop: boolean; duration: number; constructor(parent: Sound, options: SoundSpriteData); play(complete?: CompleteCallback): IMediaInstance | Promise; destroy(): void; } interface RenderOptions { width?: number; height?: number; fill?: string | CanvasPattern | CanvasGradient; } type ExtensionMap = { [key: string]: boolean; }; class SoundUtils { static extensions: string[]; static supported: ExtensionMap; static resolveUrl(source: string | PIXI.LoaderResource): string; static sineTone(hertz?: number, seconds?: number): Sound; static render(sound: Sound, options?: RenderOptions): PIXI.BaseTexture; static playOnce(url: string, callback?: (err?: Error) => void): string; } const utils: typeof SoundUtils; namespace filters { class DistortionFilter extends Filter { constructor(amount?: number); amount: number; destroy(): void; } class EqualizerFilter extends Filter { static F32: number; static F64: number; static F125: number; static F250: number; static F500: number; static F1K: number; static F2K: number; static F4K: number; static F8K: number; static F16K: number; bands: BiquadFilterNode[]; bandsMap: { [id: number]: BiquadFilterNode; }; constructor(f32?: number, f64?: number, f125?: number, f250?: number, f500?: number, f1k?: number, f2k?: number, f4k?: number, f8k?: number, f16k?: number); setGain(frequency: number, gain?: number): void; getGain(frequency: number): number; f32: number; f64: number; f125: number; f250: number; f500: number; f1k: number; f2k: number; f4k: number; f8k: number; f16k: number; reset(): void; destroy(): void; } class MonoFilter extends Filter { constructor(); destroy(): void; } class ReverbFilter extends Filter { constructor(seconds?: number, decay?: number, reverse?: boolean); seconds: number; decay: number; reverse: boolean; destroy(): void; } class StereoFilter extends Filter { constructor(pan?: number); pan: number; destroy(): void; } class TelephoneFilter extends Filter { constructor(); } } namespace htmlaudio { class HTMLAudioInstance extends PIXI.utils.EventEmitter implements IMediaInstance { static PADDING: number; id: number; constructor(parent: HTMLAudioMedia); readonly progress: number; paused: boolean; init(media: HTMLAudioMedia): void; stop(): void; speed: number; volume: number; loop: boolean; muted: boolean; refresh(): void; refreshPaused(): void; play(options: PlayOptions): void; destroy(): void; toString(): string; set(name:InstanceSetProperties, value:number|boolean): this; } class HTMLAudioContext extends PIXI.utils.EventEmitter implements IMediaContext { speed: number; muted: boolean; volume: number; paused: boolean; constructor(); refresh(): void; refreshPaused(): void; filters: Filter[]; readonly audioContext: AudioContext; toggleMute(): boolean; togglePause(): boolean; destroy(): void; } class HTMLAudioMedia extends PIXI.utils.EventEmitter implements IMedia { parent: Sound; init(parent: Sound): void; create(): HTMLAudioInstance; readonly isPlayable: boolean; readonly duration: number; readonly context: HTMLAudioContext; filters: Filter[]; destroy(): void; readonly source: HTMLAudioElement; load(callback?: LoadedCallback): void; } } namespace webaudio { class WebAudioContext extends Filterable implements IMediaContext { compressor: DynamicsCompressorNode; analyser: AnalyserNode; speed: number; muted: boolean; volume: number; events: PIXI.utils.EventEmitter; constructor(); playEmptySound(): void; static readonly AudioContext: typeof AudioContext; static readonly OfflineAudioContext: typeof OfflineAudioContext; destroy(): void; readonly audioContext: AudioContext; readonly offlineContext: OfflineAudioContext; paused: boolean; refresh(): void; refreshPaused(): void; toggleMute(): boolean; togglePause(): boolean; decode(arrayBuffer: ArrayBuffer, callback: (err?: Error, buffer?: AudioBuffer) => void): void; } class WebAudioInstance extends PIXI.utils.EventEmitter implements IMediaInstance { id: number; constructor(media: WebAudioMedia); stop(): void; speed: number; volume: number; muted: boolean; loop: boolean; refresh(): void; refreshPaused(): void; play(options: PlayOptions): void; readonly progress: number; paused: boolean; destroy(): void; toString(): string; init(media: WebAudioMedia): void; set(name:InstanceSetProperties, value:number|boolean): this; } class WebAudioMedia implements IMedia { parent: Sound; source: ArrayBuffer; init(parent: Sound): void; destroy(): void; create(): WebAudioInstance; readonly context: WebAudioContext; readonly isPlayable: boolean; filters: Filter[]; readonly duration: number; buffer: AudioBuffer; readonly nodes: WebAudioNodes; load(callback?: LoadedCallback): void; } interface SourceClone { source: AudioBufferSourceNode; gain: GainNode; } class WebAudioNodes extends Filterable { static BUFFER_SIZE: number; bufferSource: AudioBufferSourceNode; script: ScriptProcessorNode; gain: GainNode; analyser: AnalyserNode; context: WebAudioContext; constructor(context: WebAudioContext); destroy(): void; cloneBufferSource(): SourceClone; } } } declare module "pixi-sound" { export default PIXI.sound; }