Smooth local mic meter

This commit is contained in:
codex
2026-06-10 22:40:31 +02:00
parent 96ded7213d
commit 218ff57151
+6 -1
View File
@@ -53,6 +53,7 @@ let localMicGainNode;
let localMicAnalyserNode;
let localMicDestination;
let micMeterAnimationFrame = 0;
let micMeterLevel = 0;
let screenStream;
let localPresentationTile;
let events;
@@ -757,6 +758,7 @@ function stopMicMeter() {
cancelAnimationFrame(micMeterAnimationFrame);
micMeterAnimationFrame = 0;
}
micMeterLevel = 0;
selfMicMeter.value = 0;
}
@@ -772,7 +774,10 @@ function startMicMeter() {
const centered = (sample - 128) / 128;
sum += centered * centered;
}
selfMicMeter.value = Math.min(1, Math.sqrt(sum / samples.length) * 3);
const targetLevel = Math.min(1, Math.sqrt(sum / samples.length) * 3);
const smoothing = targetLevel > micMeterLevel ? 0.35 : 0.12;
micMeterLevel += (targetLevel - micMeterLevel) * smoothing;
selfMicMeter.value = micMeterLevel;
micMeterAnimationFrame = requestAnimationFrame(tick);
};
tick();