UNPKG

sound-manager-ts

Version:

Lightweight TypeScript soundmanager for Web Audio API. Seamless audio control in web apps and games with full type safety and modern API

126 lines (125 loc) 5.85 kB
import { PlayOptions } from './play-sound-options.interface'; import { SoundEvent } from './sound-event.interface'; import { SoundEventsEnum } from './sound-events.enum'; import { SoundGroup } from './sound-group'; import { SoundManagerConfig } from './sound-manager-config'; import { SoundPannerConfig } from './sound-panner-config'; import { SoundResetOptions } from './sound-reset-options.interface'; import { SoundStateInfo } from './sound-state-info.interface'; import { Sound } from './sound.interface'; export interface SoundManagerInterface { play(id: string, options?: PlayOptions, skipDispatchEvent?: boolean): void; playSprite(id: string, spriteKey: string, options: PlayOptions, skipDispatchEvent?: boolean): void; pause(id: string, skipDispatchEvent?: boolean): void; resume(id: string, skipDispatchEvent?: boolean): void; stop(id: string, skipDispatchEvent?: boolean): void; seek(id: string, time: number, skipDispatchEvent?: boolean): void; stopAllSounds(): void; pauseAllSounds(): void; resumeAllSounds(): void; fadeIn(id: string, duration: number, startVolume?: number, endVolume?: number, skipDispatchEvent?: boolean): void; fadeOut(id: string, duration?: number, startVolume?: number, endVolume?: number, stopAfterFade?: boolean, skipDispatchEvent?: boolean): void; fadeGlobalIn(duration?: number, startVolume?: number, endVolume?: number): void; fadeGlobalOut(duration?: number, startVolume?: number, endVolume?: number): void; getVolume(id: string): number; setSoundVolume(id: string, volume: number, skipDispatchEvent?: boolean): void; getSoundVolume(id: string): number; setGlobalVolume(volume: number): void; getGlobalVolume(): number; muteAllSounds(): void; unmuteAllSounds(): void; mute(id: string): void; unmute(id: string): void; toggleMute(id: string): void; toggleGlobalMute(): void; setLoop(id: string, loop: boolean): void; getLoop(id: string): boolean; loadSounds(soundsToLoad: { id: string; url: string; }[], signal?: AbortSignal): Promise<void>; loadSound(id: string, url: string, signal?: AbortSignal): Promise<void>; updateSoundUrl(id: string, newUrl: string): Promise<void>; unloadSound(id: string): void; removeSound(id: string): void; isSoundLoaded(id: string): boolean; createSoundGroup(groupName: string, options: SoundGroup): void; addToSoundGroup(groupName: string, soundId: string): void; removeFromSoundGroup(groupName: string, soundId: string): void; getGroup(groupName: string): SoundGroup | undefined; removeSoundGroup(groupName: string): void; setSoundSprite(id: string, sprite: { [key: string]: [number, number]; }): void; getSpriteConfig(id: string): { [key: string]: [number, number]; } | undefined; removeSpriteSound(id: string): void; removeSpriteConfig(id: string): void; suspendContext(): Promise<void>; resumeContext(): Promise<void>; getContext(): AudioContext; getMasterOutput(): AudioNode; isPlaying(id: string): boolean; isPaused(id: string): boolean; isStopped(id: string): boolean; getSoundState(id: string): SoundStateInfo; getCurrentTime(id: string): number; getCurrentTime(id: string): number; getDuration(id: string): number; getProgress(id: string): number; getProgressPercentage(id: string): number; startProgressTracking(id: string): void; stopProgressTracking(id: string): void; setProgressUpdateInterval(interval: number): void; setPan(id: string, pan: number): void; removePan(id: string): void; setGlobalPan(value: number): void; getGlobalPan(): number; resetPan(id?: string): void; resetGlobalPan(): void; cleanupGlobalPan(): void; isStereoPanActive(id: string): boolean; isSpatialAudioEnabled(): boolean; isSpatialAudioSupported(): boolean; setSpatialPosition(x: number, y: number, z: number, soundId?: string | null, soundPannerConfig?: SoundPannerConfig, skipDispatchEvent?: boolean): void; getSpatialPosition(soundId: string): { x: number; y: number; z: number; } | null; setMasterSpatialPosition(x: number, y: number, z: number, config?: SoundPannerConfig, skipDispatchEvent?: boolean): void; getMasterSpatialPosition(): { x: number; y: number; z: number; } | null; removeSpatialEffect(id: string): void; isSpatialAudioActive(id: string): boolean; updatePannerConfigById(soundId: string, newConfig: Partial<SoundPannerConfig>): void; resetSpatialPosition(id: string): void; resetMasterSpatialPosition(): void; setPlaybackRate(id: string, rate: number): void; getPlaybackRate(id: string): number; reset(options?: SoundResetOptions): void; resetSound(id: string, options?: SoundResetOptions): void; getSound(id: string): Sound | undefined; getBuffer(id: string): AudioBuffer | undefined; getSource(id: string): AudioBufferSourceNode | undefined; getGainNode(id: string): GainNode | undefined; hasSound(id: string): boolean; updateSoundOptions(soundId: string, options: Partial<PlayOptions>): void; isReady(): boolean; getSoundCount(): number; getSoundIds(): string[]; setDebugMode(debug: boolean): void; getConfig(): Readonly<SoundManagerConfig>; getLastError(): Error | null; roundValue(value: number, decimals: number): number; destroy(): void; addEventListener(type: SoundEventsEnum, callback: (event: SoundEvent) => void): void; removeEventListener(type: SoundEventsEnum, callback: (event: SoundEvent) => void): void; removeEventListenersForInstance(instanceId: string): void; dispatchEvent(event: SoundEvent): void; hasEventListener(type: SoundEventsEnum): boolean; }