mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 19:59:28 +02:00
send the mic level from js
This commit is contained in:
parent
d8227a686c
commit
4391e9eaee
1 changed files with 13 additions and 13 deletions
|
@ -71,33 +71,33 @@
|
||||||
var accumulatedLevel = 0.0;
|
var accumulatedLevel = 0.0;
|
||||||
// Note: Might have to tweak the following two based on the rate we're getting the data
|
// Note: Might have to tweak the following two based on the rate we're getting the data
|
||||||
var AVERAGING_RATIO = 0.05;
|
var AVERAGING_RATIO = 0.05;
|
||||||
var AUDIO_LEVEL_UPDATE_INTERVAL_MS = 100;
|
var MIC_LEVEL_UPDATE_INTERVAL_MS = 100;
|
||||||
|
|
||||||
// Calculate audio level with the same scaling equation (log scale, exponentially averaged) in AvatarInputs and pal.js
|
// Calculate microphone level with the same scaling equation (log scale, exponentially averaged) in AvatarInputs and pal.js
|
||||||
function getAudioLevel() {
|
function getMicLevel() {
|
||||||
var LOUDNESS_FLOOR = 11.0;
|
var LOUDNESS_FLOOR = 11.0;
|
||||||
var LOUDNESS_SCALE = 2.8 / 5.0;
|
var LOUDNESS_SCALE = 2.8 / 5.0;
|
||||||
var LOG2 = Math.log(2.0);
|
var LOG2 = Math.log(2.0);
|
||||||
var audioLevel = 0.0;
|
var micLevel = 0.0;
|
||||||
accumulatedLevel = AVERAGING_RATIO * accumulatedLevel + (1 - AVERAGING_RATIO) * (MyAvatar.audioLoudness);
|
accumulatedLevel = AVERAGING_RATIO * accumulatedLevel + (1 - AVERAGING_RATIO) * (MyAvatar.audioLoudness);
|
||||||
// Convert to log base 2
|
// Convert to log base 2
|
||||||
var logLevel = Math.log(accumulatedLevel + 1) / LOG2;
|
var logLevel = Math.log(accumulatedLevel + 1) / LOG2;
|
||||||
|
|
||||||
if (logLevel <= LOUDNESS_FLOOR) {
|
if (logLevel <= LOUDNESS_FLOOR) {
|
||||||
audioLevel = logLevel / LOUDNESS_FLOOR * LOUDNESS_SCALE;
|
micLevel = logLevel / LOUDNESS_FLOOR * LOUDNESS_SCALE;
|
||||||
} else {
|
} else {
|
||||||
audioLevel = (logLevel - (LOUDNESS_FLOOR - 1.0)) * LOUDNESS_SCALE;
|
micLevel = (logLevel - (LOUDNESS_FLOOR - 1.0)) * LOUDNESS_SCALE;
|
||||||
}
|
}
|
||||||
if (audioLevel > 1.0) {
|
if (micLevel > 1.0) {
|
||||||
audioLevel = 1.0;
|
micLevel = 1.0;
|
||||||
}
|
}
|
||||||
return audioLevel;
|
return micLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
Script.setInterval(function() {
|
Script.setInterval(function() {
|
||||||
var currentAudioLevel = getAudioLevel();
|
var currentMicLevel = getMicLevel();
|
||||||
// TODO: send the audio level to QML
|
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
|
||||||
|
tablet.updateAudioBar(currentMicLevel);
|
||||||
}, AUDIO_LEVEL_UPDATE_INTERVAL_MS);
|
}, MIC_LEVEL_UPDATE_INTERVAL_MS);
|
||||||
|
|
||||||
}()); // END LOCAL_SCOPE
|
}()); // END LOCAL_SCOPE
|
||||||
|
|
Loading…
Reference in a new issue