Skip to content

Commit

Permalink
lowered minimal intensity threshold, added max volume tester, added m…
Browse files Browse the repository at this point in the history
…ore frequencies to the frequency list
  • Loading branch information
dalibor-drgon committed Jul 10, 2022
1 parent cf33559 commit 698df5d
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 8 deletions.
52 changes: 51 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,66 @@
<body>
<p>Type all of the frequencies you want to test:</p>
<textarea id="frequencies" rows=20>
50
60
70
80
90
100
130
160
200
250
300
350
400
450
500
550
600
650
700
750
800
850
900
950
1000
1300
1600
2000
2500
3000
3500
4000
4500
5000
5500
6000
6500
7000
7500
8000
8500
9000
9500
10000
10500
11000
11500
12000
12500
13000
13500
14000
</textarea>

<p>Results (dB):</p>
<textarea id="results" rows=20>
</textarea>

<p><input type="button" onclick="ui.measure();" value="Measure!" /></p>
<p><input type="button" onclick="ui.testVolume();" value="Test Volume!" />
<input type="button" onclick="ui.measure();" value="Measure!" /></p>

<p>Reference (dB) (paste here the Results of some measured speaker):</p>
<textarea id="reference" rows=20>
Expand Down
53 changes: 47 additions & 6 deletions script.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,19 @@ var processor = (function() {
var prev_intensities = [];
var promise_function;
var to_skip = 0;
var max_reached = 0;

function onInit(sample_freq) {
sample_rate = sample_freq;
}

function onData(data) {
for(var i = 0; i < data.length; i++) {
if (Math.abs(data[i]) > 0.9) {
max_reached = true;
break;
}
}
if(to_skip != 0) {
to_skip --;
return;
Expand Down Expand Up @@ -86,12 +93,13 @@ var processor = (function() {

var intensity = calcIntensity(buf, samplesRequired);
prev_intensities.push(intensity);
while(prev_intensities.length > 5)
while(prev_intensities.length > 10)
prev_intensities.shift();
if(prev_intensities.length == 5) {
if(prev_intensities.length == 10) {
var mean = calcMean(prev_intensities);
var mse = calcMSE(prev_intensities, mean);
if (mse < 1 && mean > -45) {
console.log(mean, mse);
if (mse < 1 && mean > -70) {
player.stop();
setRunning(false);
promise_function(mean);
Expand All @@ -118,23 +126,56 @@ var processor = (function() {
return promise;
}

function wasMaxReached() {
var was = max_reached;
max_reached = false;
return was;
}

function playTemporally(freqs, f) {
if (freqs.length == 1) {
measure(freqs[0])
.then(() => {
f(max_reached);
});
return;
}
var freq = freqs[0];
player.play(freq);
setTimeout(() => {
player.stop();
playTemporally(freqs.slice(1), f);
}, 20 / freq + 0.05);
}

function testVolume(freqs) {
max_reached = false;
if (freqs.length == 0) {
return new Promise((f) => { f(false); });
}
return new Promise((f) => {
playTemporally([...freqs], f);
});
}

return {
buf,
onInit,
onData,
measure
measure,
wasMaxReached,
testVolume
};
})();

var recorder = function () {

var audioContext;
//var audioContext;

var BUFF_SIZE_RENDERER = 16384;

var audioInput = null,
microphone_stream = null,
gain_node = null,
script_processor_node = null,
script_processor_analysis_node = null,
analyser_node = null;
Expand Down
13 changes: 12 additions & 1 deletion ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,21 @@ var ui = (function () {
}
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
calculateProfile,
testVolume
};
})();

0 comments on commit 698df5d

Please sign in to comment.