@audiowave/react
Version:
React audio visualization component
81 lines • 2.48 kB
TypeScript
import { AudioSourceConfig, ExtendedAudioSource, AudioSourceState } from '../types/AudioSource';
export interface WebAudioSourceOptions extends AudioSourceConfig {
/** Smoothing time constant for the analyser (0-1, default: 0.8) */
smoothingTimeConstant?: number;
}
/**
* WebAudioSource - Unified Web Audio API implementation
*
* Supports multiple input types:
* - MediaStream (from getUserMedia, getDisplayMedia)
* - HTMLMediaElement (audio/video elements)
* - AudioNode (existing Web Audio nodes)
*/
export declare class WebAudioSource implements ExtendedAudioSource {
private audioContext;
private analyserNode;
private sourceNode;
private audioData;
private state;
private options;
private mediaStream;
private inputAudioNode;
constructor(options?: WebAudioSourceOptions);
/**
* Initialize from MediaStream (getUserMedia, getDisplayMedia)
*/
initializeFromMediaStream(stream: MediaStream): Promise<void>;
/**
* Initialize from HTMLMediaElement (audio/video elements)
*/
initializeFromMediaElement(element: HTMLMediaElement): Promise<void>;
/**
* Initialize from existing AudioNode
*/
initializeFromAudioNode(node: AudioNode): Promise<void>;
/**
* Get current audio data for visualization (Standard AudioSource interface)
*/
getAudioData(): Uint8Array | null;
/**
* Get time domain data specifically (for debugging/comparison)
*/
getTimeDomainData(): Uint8Array | null;
/**
* Get frequency domain data specifically (for debugging/comparison)
*/
getFrequencyData(): Uint8Array | null;
/**
* Check if the source is currently active (Standard AudioSource interface)
*/
isActive(): boolean;
/**
* Get current state of the audio source (Extended interface)
*/
getState(): AudioSourceState;
/**
* Get configuration used by this audio source (Extended interface)
*/
getConfig(): AudioSourceConfig;
/**
* Destroy the source and clean up all resources (Extended interface)
*/
destroy(): void;
/**
* Set up Web Audio API context and analyser
*/
private setupWebAudio;
/**
* Set up analyser node
*/
private setupAnalyser;
/**
* Connect source node to analyser
*/
private connectNodes;
/**
* Clean up all resources
*/
private cleanup;
}
//# sourceMappingURL=WebAudioSource.d.ts.map