Skip to content

EZ Web Audio / AudioSprite

Class: AudioSprite ​

Defined in: packages/core/src/sprite.ts:160

AudioSprite enables playing segments of a single audio file by name.

Use sprites to bundle multiple short sounds into one file, reducing HTTP requests. Compatible with the audiosprite JSON format.

Example ​

typescript
import { createSprite } from 'ez-web-audio'

const sprite = await createSprite('sounds.mp3', {
  spritemap: {
    laser: { start: 0, end: 0.3 },
    explosion: { start: 1.0, end: 2.5 },
    powerup: { start: 3.0, end: 3.5 }
  }
})

// Play specific sounds by name
sprite.play('laser')
sprite.play('explosion', { gain: 0.7 })

// Check available sprites
console.log(sprite.names) // ['laser', 'explosion', 'powerup']

Constructors ​

Constructor ​

new AudioSprite(audioContext, audioBuffer, manifest): AudioSprite

Defined in: packages/core/src/sprite.ts:171

Parameters ​

audioContext ​

AudioContext

audioBuffer ​

AudioBuffer

manifest ​

AudiospriteManifest

Returns ​

AudioSprite

Accessors ​

names ​

Get Signature ​

get names(): string[]

Defined in: packages/core/src/sprite.ts:215

List of available sprite names defined in the manifest.

Example ​
typescript
sprite.names.forEach(name => console.log(name))
Returns ​

string[]

Methods ​

dispose() ​

dispose(): void

Defined in: packages/core/src/sprite.ts:442

Release the audio buffer and stop all active sources.

After disposal, calling play() will throw an error. Use this to free memory when the sprite is no longer needed.

Returns ​

void

Example ​

typescript
const sprite = await createSprite('sounds.mp3', manifest)
sprite.play('laser')

// When done with the sprite
sprite.dispose()
// sprite.play('laser') // throws: AudioSprite has been disposed

getDuration() ​

getDuration(name): number

Defined in: packages/core/src/sprite.ts:249

Get the duration of a sprite in seconds.

Parameters ​

name ​

string

The sprite name

Returns ​

number

Duration in seconds

Throws ​

Error if sprite name not found

Example ​

typescript
const duration = sprite.getDuration('explosion')
console.log(`Explosion lasts ${duration} seconds`)

has() ​

has(name): boolean

Defined in: packages/core/src/sprite.ts:232

Check if a sprite with the given name exists.

Parameters ​

name ​

string

The sprite name to check

Returns ​

boolean

true if the sprite exists

Example ​

typescript
if (sprite.has('laser')) {
  sprite.play('laser')
}

play() ​

play(name, options): void

Defined in: packages/core/src/sprite.ts:281

Play a sprite by name.

Each call creates a new AudioBufferSourceNode, allowing concurrent playback of the same sprite. Use options to control gain and pan.

Parameters ​

name ​

string

The sprite name to play

options ​

SpritePlayOptions = {}

Optional gain (0-1) and pan (-1 to 1) settings

Returns ​

void

Throws ​

Error if sprite name not found

Example ​

typescript
// Simple playback
sprite.play('laser')

// With options
sprite.play('explosion', { gain: 0.5, pan: -0.5 })

// Rapid fire (each creates new source)
sprite.play('laser')
sprite.play('laser')
sprite.play('laser')

stop() ​

stop(name): void

Defined in: packages/core/src/sprite.ts:397

Stop all active playback of the named sprite.

Only useful for sprites defined with loop: true, since non-looping sprites stop automatically when their duration elapses.

Parameters ​

name ​

string

The sprite name to stop

Returns ​

void

Example ​

typescript
sprite.play('bgmusic') // starts looping
// later...
sprite.stop('bgmusic') // stops the loop

stopAll() ​

stopAll(): void

Defined in: packages/core/src/sprite.ts:420

Stop all active looping sprites.

Returns ​

void

Example ​

typescript
sprite.play('bgmusic')
sprite.play('ambient')
sprite.stopAll() // stops both