feat: bump all visualizer panels from 30fps to 60fps

Updated frame throttle in all immersive panels:
- LissajousPanel (X/Y)
- VisualizerPanel (spectrum)
- OscilloscopePanel
- EnergyBandsPanel
- TransientPulsePanel
- AlbumReactivePanel

SpectralRibbon was already at 60fps.
This commit is contained in:
vicrodh committed 2026-02-26 14:13:40 -06:00
1 parent e145dca289
commit c99bd72df4
6 files changed
+8 -8

No files matched your search

@@ -45,7 +45,7 @@
let animationFrame: number | null = null;
let lastRenderTime = 0;
const FRAME_INTERVAL = 1000 / 30;
const FRAME_INTERVAL = 1000 / 60;
// Artwork-derived glow color
let glowColor = $state('rgba(100, 100, 255, 0.3)');
@@ -43,7 +43,7 @@
const energyData = new Float32Array(NUM_BANDS);
let lastRenderTime = 0;
const FRAME_INTERVAL = 1000 / 30;
const FRAME_INTERVAL = 1000 / 60;
let bandColors = $state([
{ r: 255, g: 60, b: 60 },
@@ -54,7 +54,7 @@
let trailIndex = 0;
let lastRenderTime = 0;
const FRAME_INTERVAL = 1000 / 30;
const FRAME_INTERVAL = 1000 / 60;
// Primary color extracted from artwork
let plotColor = $state({ r: 0, g: 220, b: 200 });
@@ -47,7 +47,7 @@
const SMOOTHING = 0.3;
let lastRenderTime = 0;
const FRAME_INTERVAL = 1000 / 30;
const FRAME_INTERVAL = 1000 / 60;
// Colors extracted from artwork
let colorLeft = $state({ r: 0, g: 220, b: 160 });
@@ -40,7 +40,7 @@
let isInitialized = false;
let lastRenderTime = 0;
const FRAME_INTERVAL = 1000 / 30;
const FRAME_INTERVAL = 1000 / 60;
// Ring particles - expanding circles triggered by transients
interface Ring {
@@ -50,9 +50,9 @@
// Smoothing for visual continuity
const SMOOTHING = 0.6;
// Throttle rendering to 30fps max
// Throttle rendering to 60fps
let lastRenderTime = 0;
const FRAME_INTERVAL = 1000 / 30; // ~33ms
const FRAME_INTERVAL = 1000 / 60;
// Colors extracted from artwork (Material You style)
let colorPrimary = $state({ r: 0, g: 220, b: 200 }); // Default cyan
@@ -155,7 +155,7 @@
function render(timestamp: number = 0) {
if (!ctx || !canvasRef) return;
// Throttle to 30fps
// Throttle to 60fps
const delta = timestamp - lastRenderTime;
if (delta < FRAME_INTERVAL) {
animationFrame = requestAnimationFrame(render);