Smooth local mic meter
This commit is contained in:
+6
-1
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user