diff --git a/index.html b/index.html index 0bd8562..b6ebb70 100644 --- a/index.html +++ b/index.html @@ -457,11 +457,16 @@ function drawSpectrum() { const barMags = new Float32Array(NUM_BARS); const minFreq = 20; const maxFreq = 19000; + const blend = 0.4; for (let b = 0; b < NUM_BARS; b++) { 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)); + const logStart = 1 + Math.floor(lowFreq * fftSize / sampleRate); + const logEnd = 1 + Math.min(maxBin, Math.ceil(highFreq * fftSize / sampleRate)); + const linStart = 1 + Math.floor(b * (maxBin - 1) / NUM_BARS); + const linEnd = 1 + Math.floor((b + 1) * (maxBin - 1) / NUM_BARS); + const start = Math.round(linStart + (logStart - linStart) * blend); + const end = Math.round(linEnd + (logEnd - linEnd) * blend); let sum = 0; for (let j = start; j < end; j++) sum += mags[j]; barMags[b] = sum / (end - start);