/** * Peak detection for pitch estimation * Builds on DSP utilities to find fundamental frequencies */ import { type WindowType } from './dsp'; /** * Detected peak with frequency and strength */ export interface Peak { bin: number; frequency: number; magnitude: number; interpolatedBin?: number; interpolatedFrequency?: number; } /** * Peak detection configuration */ export interface PeakDetectionConfig { sampleRate?: number; fftSize?: number; windowType?: WindowType; threshold?: number; minFrequency?: number; maxFrequency?: number; maxPeaks?: number; useInterpolation?: boolean; } /** * Peak detector for finding dominant frequencies */ export declare class PeakDetector { private config; private fft; private window; constructor(config?: PeakDetectionConfig); /** * Find peaks in audio signal */ findPeaks(signal: Float32Array): Peak[]; /** * Find fundamental frequency using HPS (Harmonic Product Spectrum) */ findFundamentalHPS(signal: Float32Array, harmonics?: number): Peak | null; /** * Find fundamental frequency using autocorrelation */ findFundamentalACF(signal: Float32Array): Peak | null; /** * Detect if signal is likely voiced (periodic) or unvoiced (noise) */ isVoiced(signal: Float32Array, threshold?: number): boolean; /** * Get harmonics of a fundamental frequency */ getHarmonics(fundamental: Peak, numHarmonics?: number): Peak[]; /** * Update configuration */ updateConfig(config: Partial): void; /** * Get current configuration */ getConfig(): Readonly>; private frequencyToBin; /** * Ensure signal is the correct size for FFT (pad or truncate) */ private ensureCorrectSize; } /** * Quick utility: Find fundamental frequency in a signal */ export declare function findFundamental(signal: Float32Array, sampleRate?: number, method?: 'hps' | 'acf'): number | null;