diff --git a/index.html b/index.html
index 3adeb06..0bd8562 100644
--- a/index.html
+++ b/index.html
@@ -455,9 +455,13 @@ function drawSpectrum() {
const maxBin = Math.min(binCount, Math.floor(19000 * fftSize / sampleRate));
const NUM_BARS = 32;
const barMags = new Float32Array(NUM_BARS);
+ const minFreq = 20;
+ const maxFreq = 19000;
for (let b = 0; b < NUM_BARS; b++) {
- const start = 1 + Math.floor(b * (maxBin - 1) / NUM_BARS);
- const end = 1 + Math.floor((b + 1) * (maxBin - 1) / NUM_BARS);
+ const lowFreq = minFreq * Math.pow(maxFreq / minFreq, b / NUM_BARS);
+ const highFreq = minFreq * Math.pow(maxFreq / minFreq, (b + 1) / NUM_BARS);
+ const start = 1 + Math.floor(lowFreq * fftSize / sampleRate);
+ const end = 1 + Math.min(maxBin, Math.ceil(highFreq * fftSize / sampleRate));
let sum = 0;
for (let j = start; j < end; j++) sum += mags[j];
barMags[b] = sum / (end - start);