Skip to main content

Function: useAudio()

useAudio(audio): object

Defined in: packages/core/src/hooks/useAudio.ts:42

React hook to access reactive audio state.

This hook makes audio state observable in React components, automatically triggering re-renders when the audio state changes (playback position, volume, playing status, etc.).

Parameters

audio

AudioTrack

The audio track to observe

Returns

Reactive audio state snapshot

currentTime

readonly currentTime: number

Current playback position in seconds

duration

readonly duration: number

Total duration in seconds

isPaused

readonly isPaused: boolean

Whether audio is paused

isPlaying

readonly isPlaying: boolean

Whether audio is currently playing

isStopped

readonly isStopped: boolean

Whether audio is stopped

loop

readonly loop: boolean

Whether audio is looping

muted

readonly muted: boolean

Whether audio is muted

playbackRate

readonly playbackRate: number

Current playback rate multiplier

volume

readonly volume: number

Current volume (0.0 to 1.0)

Example

import { createAudio } from '@react-text-game/core/audio';
import { useAudio } from '@react-text-game/core';

const bgMusic = createAudio('music.mp3', {
id: 'bg-music',
loop: true,
});

function MusicPlayer() {
const audioState = useAudio(bgMusic);

return (
<div>
<p>Playing: {audioState.isPlaying ? 'Yes' : 'No'}</p>
<p>Time: {audioState.currentTime.toFixed(1)}s / {audioState.duration.toFixed(1)}s</p>
<p>Volume: {(audioState.volume * 100).toFixed(0)}%</p>

<button onClick={() => bgMusic.play()}>Play</button>
<button onClick={() => bgMusic.pause()}>Pause</button>
<button onClick={() => bgMusic.stop()}>Stop</button>
</div>
);
}