UNPKG

audio-inspect

Version:

Lightweight yet powerful audio analysis library

85 lines (80 loc) 2.31 kB
interface AudioData { sampleRate: number; channelData: Float32Array[]; duration: number; numberOfChannels: number; length: number; } type FFTProviderType = 'webfft' | 'native' | 'custom'; interface FFTResult { complex: Float32Array; magnitude: Float32Array; phase: Float32Array; frequencies: Float32Array; } interface IFFTProvider { readonly name: string; readonly size: number; readonly sampleRate: number; fft(input: Float32Array): FFTResult | Promise<FFTResult>; dispose(): void; profile?(): Promise<void>; } interface FFTProviderConfig { type: FFTProviderType; fftSize: number; sampleRate: number; enableProfiling?: boolean; customProvider?: IFFTProvider; } interface FFTProviderResolver { createProvider(config: FFTProviderConfig): Promise<IFFTProvider>; } interface FFTProviderRequest { fftSize: number; sampleRate: number; provider?: FFTProviderType; enableProfiling?: boolean; fallbackToNative?: boolean; resolver?: FFTProviderResolver; } interface FFTProviderCache { getOrCreate(request: FFTProviderRequest): Promise<IFFTProvider>; clear(): void; } interface StereoAnalysisOptions { frameSize?: number; hopSize?: number; calculatePhase?: boolean; calculateITD?: boolean; calculateILD?: boolean; provider?: FFTProviderType; enableProfiling?: boolean; providerCache?: FFTProviderCache | undefined; } interface StereoAnalysisResult { correlation: number; coherence?: Float32Array; width: number; widthFrequency?: Float32Array; balance: number; phaseDifference?: number; phaseCorrelation?: number; midSideRatio: number; itd?: number; ild?: number; goniometer?: { x: Float32Array; y: Float32Array; }; } declare function getStereoAnalysis(audio: AudioData, options?: StereoAnalysisOptions): Promise<StereoAnalysisResult>; declare function getTimeVaryingStereoAnalysis(audio: AudioData, options?: StereoAnalysisOptions & { windowSize?: number; }): Promise<{ times: Float32Array; correlation: Float32Array; width: Float32Array; balance: Float32Array; }>; export { type StereoAnalysisOptions, type StereoAnalysisResult, getStereoAnalysis, getTimeVaryingStereoAnalysis };