Skip to main content

Class: AudioTrack

Defined in: audioTrack.ts:35

Individual audio track with reactive state management.

AudioTrack wraps the HTMLAudioElement API with Valtio reactive state, making it easy to integrate with React components and the game's save system.

Features:

  • Reactive state updates via Valtio
  • Automatic persistence with save/load
  • Volume, loop, and playback rate controls
  • Fade in/out effects
  • Event-driven state synchronization

Example​

const music = new AudioTrack('assets/music.mp3', {
id: 'bg-music',
loop: true,
volume: 0.7,
});

await music.play();
music.setVolume(0.5);

Constructors​

Constructor​

new AudioTrack(src, options): AudioTrack

Defined in: audioTrack.ts:48

Parameters​

src​

string

options​

AudioOptions = {}

Returns​

AudioTrack

Properties​

id​

readonly id: string

Defined in: audioTrack.ts:36


src​

readonly src: string

Defined in: audioTrack.ts:37

Methods​

_applyEffectiveVolume()​

_applyEffectiveVolume(): void

Defined in: audioTrack.ts:247

Internal

Applies the effective volume (track volume * master volume) to the audio element. Internal method used by AudioManager to apply master volume changes.

Returns​

void


cancelFade()​

cancelFade(): void

Defined in: audioTrack.ts:372

Cancels any ongoing fade animation.

Returns​

void

Example​

audio.cancelFade();

dispose()​

dispose(): void

Defined in: audioTrack.ts:509

Cleans up the audio track and removes all listeners.

Should be called when the audio track is no longer needed.

Returns​

void

Example​

audio.dispose();

fadeIn()​

fadeIn(duration): Promise<void>

Defined in: audioTrack.ts:328

Fades in the audio over a specified duration.

Starts at volume 0 and gradually increases to the target volume. Uses the original configured volume as the target, falling back to current state volume if it's non-zero.

Parameters​

duration​

number = 1000

Fade duration in milliseconds

Returns​

Promise<void>

Promise that resolves when fade completes

Example​

await audio.fadeIn(2000); // Fade in over 2 seconds

fadeOut()​

fadeOut(duration): Promise<void>

Defined in: audioTrack.ts:356

Fades out the audio over a specified duration and stops.

Parameters​

duration​

number = 1000

Fade duration in milliseconds

Returns​

Promise<void>

Promise that resolves when fade completes

Example​

await audio.fadeOut(1500); // Fade out over 1.5 seconds

getState()​

getState(): AudioState

Defined in: audioTrack.ts:429

Gets the reactive audio state.

This state is a Valtio proxy and can be used with useSnapshot() in React.

Returns​

AudioState

The reactive audio state

Example​

const state = audio.getState();
console.log(state.isPlaying); // true/false

load()​

load(): void

Defined in: audioTrack.ts:470

Loads the audio state from storage.

Restores volume, loop, playback rate, muted status, and playback position. Optionally resumes playback if the audio was playing when saved.

Returns​

void

Example​

audio.load();

pause()​

pause(): void

Defined in: audioTrack.ts:189

Pauses the audio track.

Returns​

void

Example​

audio.pause();

play()​

play(): Promise<void>

Defined in: audioTrack.ts:172

Plays the audio track.

Returns​

Promise<void>

Promise that resolves when playback starts

Throws​

Error if playback fails

Example​

try {
await audio.play();
} catch (error) {
console.error('Playback failed:', error);
}

resume()​

resume(): void

Defined in: audioTrack.ts:201

Resumes playback if the audio is paused.

Returns​

void

Example​

audio.resume();

save()​

save(): void

Defined in: audioTrack.ts:443

Saves the current audio state to storage.

Called automatically when auto-save is enabled.

Returns​

void

Example​

audio.save();

seek()​

seek(time): void

Defined in: audioTrack.ts:308

Seeks to a specific time in the audio.

Parameters​

time​

number

Time in seconds, clamped to [0, duration]

Returns​

void

Example​

audio.seek(30); // Seek to 30 seconds

setLoop()​

setLoop(loop): void

Defined in: audioTrack.ts:263

Sets whether the audio should loop.

Parameters​

loop​

boolean

True to enable looping, false to disable

Returns​

void

Example​

audio.setLoop(true);

setMuted()​

setMuted(muted): void

Defined in: audioTrack.ts:293

Sets whether the audio is muted.

Parameters​

muted​

boolean

True to mute, false to unmute

Returns​

void

Example​

audio.setMuted(true);

setPlaybackRate()​

setPlaybackRate(rate): void

Defined in: audioTrack.ts:278

Sets the playback rate.

Parameters​

rate​

number

Playback rate multiplier (0.5 = half speed, 2.0 = double speed)

Returns​

void

Example​

audio.setPlaybackRate(1.5); // 1.5x speed

setVolume()​

setVolume(volume): void

Defined in: audioTrack.ts:235

Sets the volume level.

Parameters​

volume​

number

Volume level (0.0 to 1.0), clamped to valid range

Returns​

void

Example​

audio.setVolume(0.5); // 50% volume

stop()​

stop(): void

Defined in: audioTrack.ts:217

Stops the audio track and resets to the beginning.

Returns​

void

Example​

audio.stop();