UNPKG

audio-inspect

Version:

Lightweight yet powerful audio analysis library

45 lines (43 loc) 1.37 kB
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; } declare class NativeFFTProvider implements IFFTProvider { readonly size: number; readonly sampleRate: number; private bitReversalTable; private twiddleFactorsReal; private twiddleFactorsImag; private scratchReal; private scratchImag; private frequencyBins; constructor(size: number, sampleRate: number); get name(): string; private isPowerOfTwo; private precomputeTables; fft(input: Float32Array): FFTResult; dispose(): void; } declare class FFTProviderFactory { static createProvider(config: FFTProviderConfig): Promise<IFFTProvider>; static getAvailableProviders(): FFTProviderType[]; } export { type FFTProviderConfig, FFTProviderFactory, type FFTProviderType, type FFTResult, type IFFTProvider, NativeFFTProvider };