increase frequency duration

This commit is contained in:
Lewis Moten
2024-05-01 16:15:28 -04:00
parent dc4ca96259
commit 859c413a87

View File

@@ -15,7 +15,7 @@ var MAX_DATA_POINTS = 1024;
var FREQUENCY_TONE = 18000; var FREQUENCY_TONE = 18000;
var FREQUENCY_HIGH = 900; var FREQUENCY_HIGH = 900;
var FREQUENCY_LOW = 1200; var FREQUENCY_LOW = 1200;
var FREQUENCY_DURATION = 100; var FREQUENCY_DURATION = 400;
var FREQUENCY_THRESHOLD = 50; var FREQUENCY_THRESHOLD = 50;
function handleWindowLoad() { function handleWindowLoad() {
@@ -126,8 +126,13 @@ function handleListeningCheckbox(e) {
} }
} }
} }
function received(value) {
let listen = ''; receivedDataTextarea.value += value;
receivedDataTextarea.scrollTop = receivedDataTextarea.scrollHeight;
}
let bitStarted;
let bitHighStrength = [];
let bitLowStrength = [];
function analyzeAudio() { function analyzeAudio() {
if(!analyser) return; if(!analyser) return;
if(!microphoneNode) return; if(!microphoneNode) return;
@@ -146,17 +151,38 @@ function analyzeAudio() {
var i = Math.round(hz / length); var i = Math.round(hz / length);
return frequencyData[i]; return frequencyData[i];
} }
const sum = (total, value) => total + value;
function evaluateBit(highBits, lowBits) {
let highCount = highBits.reduce(
(count, highAmplitude, i) =>
count += highAmplitude > lowBits[i] ? 1 : 0
, 0
);
return highCount >= (highBits.length / 2) ? '1' : '0';
}
var high = canHear(FREQUENCY_HIGH); var high = canHear(FREQUENCY_HIGH);
var low = canHear(FREQUENCY_LOW); var low = canHear(FREQUENCY_LOW);
if(high || low) { if(high || low) {
listen += amplitude(FREQUENCY_HIGH) > amplitude(FREQUENCY_LOW) ? '1' : '0'; const now = performance.now();
} else { if(bitStarted) {
if(listen !== '') { if(now - bitStarted > FREQUENCY_DURATION) {
receivedDataTextarea.value += listen + '\n'; received(evaluateBit(bitHighStrength, bitLowStrength));
receivedDataTextarea.scrollTop = receivedDataTextarea.scrollHeight; bitHighStrength.length = 0;
bitLowStrength.length = 0;
bitStarted = now;
}
} else {
bitStarted = now;
}
bitHighStrength.push(amplitude(FREQUENCY_HIGH));
bitLowStrength.push(amplitude(FREQUENCY_LOW));
} else {
if(bitStarted) {
bitStarted = undefined;
received(evaluateBit(bitHighStrength, bitLowStrength));
received('\n');
} }
listen = '';
} }
requestAnimationFrame(analyzeAudio); requestAnimationFrame(analyzeAudio);
} }