murmuraba
Version:
Real-time audio noise reduction with advanced chunked processing for web applications
50 lines • 1.56 kB
TypeScript
/**
* Simple Automatic Gain Control - REFACTORED
* Based on WebSearch results for Web Audio API AGC
*
* Key findings from WebSearch:
* - Use DynamicsCompressorNode for reducing dynamics range
* - Use AnalyserNode + GainNode for manual AGC
* - Always use setTargetAtTime to prevent clicks
* - RMS calculation for accurate level detection
*/
export declare class SimpleAGC {
private readonly analyser;
private readonly gainNode;
private readonly bufferLength;
private readonly dataArray;
private readonly targetLevel;
private readonly attackTime;
private readonly releaseTime;
private readonly maxGain;
private readonly audioContext;
constructor(audioContext: AudioContext, targetLevel?: number);
/**
* Update gain based on current audio level
* Implements attack/release timing as recommended by WebSearch
*/
updateGain(): void;
/**
* Calculate RMS (Root Mean Square) level
* Formula from WebSearch MDN examples
*/
private calculateRMS;
/**
* Calculate target gain with safety limits
*/
private calculateTargetGain;
/**
* Apply gain with proper timing to prevent clicks
* Uses exponential ramp as per WebSearch recommendation
*/
private applyGainSmoothing;
/**
* Get current gain value for monitoring
*/
getCurrentGain(): number;
/**
* Connect source -> analyser -> gain -> destination
*/
connect(source: AudioNode, destination: AudioNode): void;
}
//# sourceMappingURL=simple-agc.d.ts.map