diff --git a/js/components/EqualizerWindow/EqGraph.js b/js/components/EqualizerWindow/EqGraph.js index b2a54ee0..f341cd06 100644 --- a/js/components/EqualizerWindow/EqGraph.js +++ b/js/components/EqualizerWindow/EqGraph.js @@ -89,12 +89,12 @@ class EqGraph extends React.Component { ys.push(percentToRange(percent, min, max)); }); - const getY = spline(xs, ys); + const allYs = spline(xs, ys); const maxX = xs[xs.length - 1]; let lastY = ys[0]; for (let x = 0; x <= maxX; x++) { - const y = clamp(Math.round(getY(x)), 0, GRAPH_HEIGHT - 1); + const y = clamp(Math.round(allYs[x]), 0, GRAPH_HEIGHT - 1); const yTop = Math.min(y, lastY); const height = 1 + Math.abs(lastY - y); this.canvasCtx.fillRect(paddingLeft + x, yTop, 1, height); diff --git a/js/components/EqualizerWindow/spline.js b/js/components/EqualizerWindow/spline.js index f1b64da2..7c859741 100644 --- a/js/components/EqualizerWindow/spline.js +++ b/js/components/EqualizerWindow/spline.js @@ -5,7 +5,7 @@ export default function spline(xs, ys) { return 0; }); ks = getNaturalKs(xs, ys, ks); - return x => { + const getY = x => { let i = 1; while (xs[i] < x) i++; const t = (x - xs[i - 1]) / (xs[i] - xs[i - 1]); @@ -15,6 +15,12 @@ export default function spline(xs, ys) { (1 - t) * ys[i - 1] + t * ys[i] + t * (1 - t) * (a * (1 - t) + b * t); return q; }; + const maxX = xs[xs.length - 1]; + const allYs = []; + for (let i = 0; i <= maxX; i++) { + allYs.push(getY(i)); + } + return allYs; } function getNaturalKs(xs, ys, ks) {