diff --git a/index.html b/index.html
index c46799d..3a10941 100644
--- a/index.html
+++ b/index.html
@@ -59,6 +59,12 @@
Configuration
+ Wave Form:
Segment Duration: ms
Amplitude Threshold:
Minimum Frequency:
diff --git a/index.js b/index.js
index 645073f..6c89f56 100644
--- a/index.js
+++ b/index.js
@@ -20,8 +20,8 @@ var MAX_BITS_DISPLAYED_ON_GRAPH = 79;
var SEGMENT_DURATION = 30;
var AMPLITUDE_THRESHOLD_PERCENT = .75;
var AMPLITUDE_THRESHOLD = 160;
-var MINIMUM_FREQUENCY = 80;
-var MAXIMUM_FREQUENCY = 18017;
+var MINIMUM_FREQUENCY = 400;
+var MAXIMUM_FREQUENCY = 14650;
var LAST_SEGMENT_PERCENT = 0.6;
var FFT_SIZE_POWER = 9;
var FREQUENCY_RESOLUTION_MULTIPLIER = 2;
@@ -29,6 +29,7 @@ let CHANNEL_FREQUENCY_RESOLUTION_PADDING = 2;
var SMOOTHING_TIME_CONSTANT = 0;
var HAMMING_ERROR_CORRECTION = true;
let PERIODIC_INTERLEAVING = true;
+let WAVE_FORM = "triangle";
const ERROR_CORRECTION_BLOCK_SIZE = 7;
let CHANNEL_OVER = -1;
@@ -75,7 +76,10 @@ function handleWindowLoad() {
receivedChannelGraph.addEventListener('mouseout', handleReceivedChannelGraphMouseout);
receivedChannelGraph.addEventListener('mousemove', handleReceivedChannelGraphMousemove);
receivedChannelGraph.addEventListener('click', handleReceivedChannelGraphClick);
-
+ document.getElementById('wave-form').value = WAVE_FORM;
+ document.getElementById('wave-form').addEventListener('change', (event) => {
+ WAVE_FORM = event.target.value;
+ })
document.getElementById('pause-after-end').checked = PAUSE_AFTER_END;
document.getElementById('error-correction-hamming').checked = HAMMING_ERROR_CORRECTION;
document.getElementById('error-correction-hamming').addEventListener('change', event => {
@@ -447,7 +451,7 @@ function sendBits(bits) {
var oscillator = audioContext.createOscillator();
oscillator.connect(destination);
- oscillator.type = 'sawtooth';
+ oscillator.type = WAVE_FORM;
oscillators.push(oscillator);
}
@@ -706,10 +710,10 @@ if((sampleDuration / SEGMENT_DURATION) < LAST_SEGMENT_PERCENT) return;
const correctEncodedBits = packetReceivedBits.filter((b, i) => i < encodedBitCount && b === EXPECTED_ENCODED_BITS[i]).length;
const correctedDecodedBits = packetDecodedBits.filter((b, i) => i < decodedBitCount && b === EXPECTED_BITS[i]).length;
document.getElementById('received-data-error-percent').innerText = (
- Math.floor((1 - (correctEncodedBits / encodedBitCount)) * 1000) * 0.1
+ Math.floor((1 - (correctEncodedBits / packetReceivedBits.length)) * 1000) * 0.1
).toLocaleString();
document.getElementById('decoded-data-error-percent').innerText = (
- Math.floor((1 - (correctedDecodedBits / decodedBitCount)) * 1000) * 0.1
+ Math.floor((1 - (correctedDecodedBits / packetDecodedBits.length)) * 1000) * 0.1
).toLocaleString();
document.getElementById('decoded-text').innerHTML = packetDecodedBits.reduce(textExpectorReducer(EXPECTED_TEXT), '');
}