Harmonic product
This commit is contained in:
15
tuner.js
15
tuner.js
@@ -1,3 +1,5 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
const NOTE_NAMES = [
|
const NOTE_NAMES = [
|
||||||
"A",
|
"A",
|
||||||
"A#",
|
"A#",
|
||||||
@@ -76,9 +78,18 @@ const tune = (analyser, data) => () => {
|
|||||||
let max = 0;
|
let max = 0;
|
||||||
let maxBucket = -1;
|
let maxBucket = -1;
|
||||||
|
|
||||||
|
|
||||||
data.forEach((value, bucket) => {
|
data.forEach((value, bucket) => {
|
||||||
if (value > max) {
|
let j = 2;
|
||||||
max = value;
|
let product = value;
|
||||||
|
while (bucket > 1 && j*bucket < data.length && j < 8) {
|
||||||
|
product *= data[j*bucket];
|
||||||
|
j += 1;
|
||||||
|
}
|
||||||
|
const geoMean = Math.pow(product, 1 / (j-1));
|
||||||
|
|
||||||
|
if (geoMean > max) {
|
||||||
|
max = geoMean;
|
||||||
maxBucket = bucket;
|
maxBucket = bucket;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user