-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathui.js
106 lines (97 loc) · 3.05 KB
/
ui.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
var ui = (function () {
function safeSplit(value, split) {
var arr = value.split(split);
for(var i = 0; i < arr.length; )
{
arr[i] = arr[i].trim();
if(arr[i] == "")
arr.splice(i, 1);
else
i++;
}
return arr;
}
function readInput(id) {
return safeSplit(document.getElementById(id).value, "\n");
}
function getFrequencies() {
return readInput("frequencies");
}
function appendMeasurements(vals)
{
var arr = readInput("results");
while (arr.length < vals.length)
arr.push("");
for(var i = 0; i < vals.length; i++) {
arr[i] += vals[i] + ",";
}
document.getElementById("results").value = arr.join("\n");
}
function calculateAverages(arr) {
var out = [];
for(var i = 0; i < arr.length; i++) {
var entry = safeSplit(arr[i], ",");
var sum = 0;
for(var j = 0; j < entry.length; j++) {
sum += Number.parseFloat(entry[j]);
}
out.push(sum / entry.length);
}
return out;
}
function calculateProfile() {
var freqs = getFrequencies();
var res = calculateAverages(readInput("results"));
var ref = calculateAverages(readInput("reference"));
if (res.length != ref.length || freqs.length != res.length) {
alert("The number of frequencies inside results must match the number of frequencies inside reference!");
return;
}
var dif = [];
var max_diff = -100;
for(var i = 0; i < res.length; i++) {
var eres = res[i];
var eref = ref[i];
var ediff = eref - eres;
if(ediff > max_diff)
max_diff = ediff;
dif.push(ediff);
}
for(var i = 0; i < dif.length; i++) {
dif[i] = freqs[i] + "," + (dif[i] - max_diff).toFixed(1);
}
document.getElementById("output").value = dif.join("\n");
}
async function measure() {
var freqs = getFrequencies();
var out = [];
var avg_count = 2;
for(var i = 0; i < freqs.length; i++) {
var freq = freqs[i];
var avg = 0;
for(var retry = 0; retry < avg_count; retry++)
{
avg += await processor.measure(freq);
}
avg /= avg_count;
out.push(avg.toFixed(1));
}
appendMeasurements(out);
}
function testVolume() {
processor.testVolume(getFrequencies())
.then((hit_max) => {
if (hit_max)
alert("Max measured volume was higher than 90%, please lower your microphone amplification volume");
else
alert("Max measured volume was lower than 90%, you can continue with measuring the decibels");
});
}
return {
getFrequencies,
appendMeasurements,
measure,
calculateProfile,
testVolume
};
})();