prettier
This commit is contained in:
43
tuner.js
43
tuner.js
@@ -12,7 +12,7 @@ const NOTE_NAMES = [
|
|||||||
"F",
|
"F",
|
||||||
"F#",
|
"F#",
|
||||||
"G",
|
"G",
|
||||||
"G#"
|
"G#",
|
||||||
];
|
];
|
||||||
|
|
||||||
// We don't care about fundamentals above 4kHz, so setting a lower sample rate
|
// We don't care about fundamentals above 4kHz, so setting a lower sample rate
|
||||||
@@ -36,37 +36,38 @@ const setup = () => {
|
|||||||
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
|
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
|
||||||
navigator.mediaDevices
|
navigator.mediaDevices
|
||||||
.getUserMedia({
|
.getUserMedia({
|
||||||
audio: true
|
audio: true,
|
||||||
})
|
})
|
||||||
.then(handleStream, err => {
|
.then(handleStream, (err) => {
|
||||||
console.error("Error calling getUserMedia", err);
|
console.error("Error calling getUserMedia", err);
|
||||||
})
|
})
|
||||||
.then(aquireWakeLock);
|
.then(aquireWakeLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const aquireWakeLock = ({ interval, stream}) => {
|
const aquireWakeLock = ({ interval, stream }) => {
|
||||||
if (navigator.wakeLock && navigator.wakeLock.request) {
|
if (navigator.wakeLock && navigator.wakeLock.request) {
|
||||||
try {
|
try {
|
||||||
navigator.wakeLock
|
navigator.wakeLock.request("screen").then((wakeLock) =>
|
||||||
.request("screen")
|
setTimeout(() => {
|
||||||
.then(wakeLock => setTimeout(() => {
|
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
wakeLock.release();
|
wakeLock.release();
|
||||||
stream.getTracks().forEach(track => track.stop());
|
stream.getTracks().forEach((track) => track.stop());
|
||||||
dom_note.innerHTML = "Done";
|
dom_note.innerHTML = "Done";
|
||||||
dom_note.onclick = () => { window.location.reload() };
|
dom_note.onclick = () => {
|
||||||
|
window.location.reload();
|
||||||
|
};
|
||||||
dom_tune.innerHTML = "";
|
dom_tune.innerHTML = "";
|
||||||
dom_frequency.innerHTML = "";
|
dom_frequency.innerHTML = "";
|
||||||
}, TIMEOUT * 1000));
|
}, TIMEOUT * 1000)
|
||||||
|
);
|
||||||
} catch (err) {}
|
} catch (err) {}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleStream = stream => {
|
const handleStream = (stream) => {
|
||||||
const audioContext = new AudioContext({
|
const audioContext = new AudioContext({
|
||||||
sampleRate: TARGET_SAMPLE_RATE
|
sampleRate: TARGET_SAMPLE_RATE,
|
||||||
});
|
});
|
||||||
|
|
||||||
const analyser = audioContext.createAnalyser();
|
const analyser = audioContext.createAnalyser();
|
||||||
@@ -82,7 +83,7 @@ const handleStream = stream => {
|
|||||||
|
|
||||||
const interval = setInterval(tune(analyser, data), 500);
|
const interval = setInterval(tune(analyser, data), 500);
|
||||||
|
|
||||||
return { interval, stream};
|
return { interval, stream };
|
||||||
};
|
};
|
||||||
|
|
||||||
const tune = (analyser, data) => () => {
|
const tune = (analyser, data) => () => {
|
||||||
@@ -95,15 +96,14 @@ const tune = (analyser, data) => () => {
|
|||||||
let max = 0;
|
let max = 0;
|
||||||
let maxBucket = -1;
|
let maxBucket = -1;
|
||||||
|
|
||||||
|
|
||||||
data.forEach((value, bucket) => {
|
data.forEach((value, bucket) => {
|
||||||
let j = 2;
|
let j = 2;
|
||||||
let product = value;
|
let product = value;
|
||||||
while (bucket > 1 && j*bucket < data.length && j < 8) {
|
while (bucket > 1 && j * bucket < data.length && j < 8) {
|
||||||
product *= data[j*bucket];
|
product *= data[j * bucket];
|
||||||
j += 1;
|
j += 1;
|
||||||
}
|
}
|
||||||
const geoMean = Math.pow(product, 1 / (j-1));
|
const geoMean = Math.pow(product, 1 / (j - 1));
|
||||||
|
|
||||||
if (geoMean > max) {
|
if (geoMean > max) {
|
||||||
max = geoMean;
|
max = geoMean;
|
||||||
@@ -126,9 +126,10 @@ const tune = (analyser, data) => () => {
|
|||||||
document.body.className = semitonesToClassname(semitones, margin);
|
document.body.className = semitonesToClassname(semitones, margin);
|
||||||
};
|
};
|
||||||
|
|
||||||
const frequencyToSemitones = frequency => 12 * Math.log2(frequency / 440) + 69;
|
const frequencyToSemitones = (frequency) =>
|
||||||
|
12 * Math.log2(frequency / 440) + 69;
|
||||||
|
|
||||||
const semitonesToNote = semitones => {
|
const semitonesToNote = (semitones) => {
|
||||||
const rounded = Math.round(semitones - 69);
|
const rounded = Math.round(semitones - 69);
|
||||||
|
|
||||||
const index = rounded >= 0 ? rounded % 12 : (12 + (rounded % 12)) % 12;
|
const index = rounded >= 0 ? rounded % 12 : (12 + (rounded % 12)) % 12;
|
||||||
|
|||||||
Reference in New Issue
Block a user