/** * Utilities for working with waveform data */ export interface AudioAnalysisOptions { /** Sample rate for analysis */ sampleRate?: number; /** Window size for FFT analysis */ windowSize?: number; /** Overlap between windows */ overlap?: number; } export interface WaveformDataOptions { /** Number of peaks to generate */ length: number; /** Frequency of the primary wave */ frequency?: number; /** Amplitude modulation frequency */ modulation?: number; /** Add noise to the signal */ noise?: number; /** Audio duration in seconds (for realistic data) */ duration?: number; } /** * Generate realistic-looking waveform test data */ export declare const generateWaveformData: (options: WaveformDataOptions) => { peaks: number[]; rms: number[]; }; /** * Normalize waveform data to a specific range */ export declare const normalizeWaveform: (peaks: number[], targetMin?: number, targetMax?: number) => number[]; /** * Downsample waveform data for performance */ export declare const downsampleWaveform: (peaks: number[], targetLength: number) => number[]; /** * Calculate RMS values from peak data */ export declare const calculateRMS: (peaks: number[], windowSize?: number) => number[]; /** * Find peaks in waveform data (useful for marker placement) */ export declare const findPeaks: (peaks: number[], threshold?: number, minDistance?: number) => number[]; /** * Convert audio buffer to waveform data * (Note: This would typically be used with Web Audio API) */ export declare const audioBufferToWaveform: (audioBuffer: AudioBuffer, targetLength?: number) => { peaks: number[]; rms: number[]; }; /** * Generate time-based markers for common audio structures */ export declare const generateAudioMarkers: (duration: number, structure?: "song" | "podcast" | "speech") => ({ position: number; label: string; type: "flag"; } | { position: number; label: string; type: "line"; } | { position: number; label: string; type: "dot"; })[]; /** * Create test data presets for demos */ export declare const createTestPresets: () => { musicTrack: { peaks: number[]; rms: number[]; }; podcast: { peaks: number[]; rms: number[]; }; speech: { peaks: number[]; rms: number[]; }; quietAudio: { peaks: number[]; rms: number[]; }; largDataset: { peaks: number[]; rms: number[]; }; };