/** * Autocorrelation-based pitch detection * Fast, reliable fallback algorithm for monophonic pitch detection */ /** * Autocorrelation configuration */ export interface AutocorrelationConfig { sampleRate?: number; minFrequency?: number; maxFrequency?: number; windowType?: 'hann' | 'hamming' | 'blackman' | 'rectangular'; threshold?: number; usePreEmphasis?: boolean; preEmphasisCoeff?: number; useCenterClipping?: boolean; centerClippingThreshold?: number; } /** * Autocorrelation result */ export interface AutocorrelationResult { frequency: number; confidence: number; lag: number; autocorrelation: Float32Array; peaks: number[]; } /** * Autocorrelation pitch detector */ export declare class AutocorrelationDetector { private config; private window; constructor(config?: AutocorrelationConfig); /** * Detect pitch using autocorrelation */ detectPitch(signal: Float32Array): AutocorrelationResult | null; /** * Preprocess signal for better autocorrelation */ private preprocessSignal; /** * Apply pre-emphasis filter */ private applyPreEmphasis; /** * Apply center clipping */ private applyCenterClipping; /** * Compute autocorrelation function */ private computeAutocorrelation; /** * Find peaks in autocorrelation */ private findPeaks; /** * Check if index is a local maximum */ private isLocalMaximum; /** * Select best peak from candidates */ private selectBestPeak; /** * Correct octave errors by checking harmonic relationships */ private correctOctaveErrors; /** * Detect pitch with sub-sample accuracy using parabolic interpolation */ detectPitchInterpolated(signal: Float32Array): AutocorrelationResult | null; /** * Batch pitch detection */ detectPitchBatch(signals: Float32Array[]): (AutocorrelationResult | null)[]; /** * Update configuration */ updateConfig(config: Partial): void; /** * Get current configuration */ getConfig(): Readonly>; } /** * Quick utility: Detect pitch using autocorrelation */ export declare function detectPitchAutocorrelation(signal: Float32Array, sampleRate?: number, options?: AutocorrelationConfig): number | null; /** * Autocorrelation utilities */ export declare const AutocorrelationUtils: { /** * Calculate pitch confidence from autocorrelation strength */ calculateConfidence(strength: number, threshold?: number): number; /** * Check if autocorrelation result is reliable */ isReliable(result: AutocorrelationResult, minConfidence?: number): boolean; /** * Convert lag to frequency */ lagToFrequency(lag: number, sampleRate: number): number; /** * Convert frequency to lag */ frequencyToLag(frequency: number, sampleRate: number): number; /** * Find fundamental frequency from harmonic series */ findFundamentalFromHarmonics(peaks: number[], sampleRate: number): number | null; };