audio-inspect
Version:
Lightweight yet powerful audio analysis library
45 lines (43 loc) • 1.37 kB
TypeScript
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 };