@threlte/extras
Version:
Utilities, abstractions and plugins for your Threlte apps
28 lines (27 loc) • 1.23 kB
TypeScript
import { type Audio, type PositionalAudio } from 'three';
type AudioSource = string | AudioBuffer | HTMLMediaElement | AudioBufferSourceNode | MediaStream;
export interface AudioProps {
src: AudioSource;
autoplay?: boolean;
loop?: boolean;
volume?: number;
playbackRate?: number;
detune?: number;
onload?: (buffer: AudioBuffer | null) => void;
onerror?: (event: ErrorEvent) => void;
onprogress?: (event: ProgressEvent) => void;
}
/**
* This hook handles basic audio functionality.
* It’s used by the <Audio> and <PositionalAudio> components.
*/
export declare const useAudio: <T extends Audio<GainNode> | PositionalAudio>(audio: () => T | undefined, src: () => AudioSource, autoplay: () => boolean, loop: () => boolean, volume: () => number, playbackRate: () => number, detune: () => number, props: () => {
onload?: (buffer: AudioBuffer | null) => void;
onerror?: (event: ErrorEvent) => void;
onprogress?: (event: ProgressEvent) => void;
}) => {
play: (delay?: number) => Promise<PositionalAudio | Audio<GainNode> | undefined>;
pause: () => PositionalAudio | Audio<GainNode> | undefined;
stop: () => PositionalAudio | Audio<GainNode> | undefined;
};
export {};