From c683ce366c9df0d4a8e26c7551d06c283636f8af Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Sun, 3 May 2026 21:11:32 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20fluidit=C3=A9=20=C3=A9galiseur=20-=20sin?= =?UTF-8?q?=20continu=20au=20lieu=20de=20signe=20binaire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remplace le signe binaire (>0.05?1:-1) par Math.sin() direct, éliminant les sauts brusques aux zero-crossings. Réduit lerp rates et fréquence spatiale pour oscillation plus douce. --- frontend/src/components/AudioVisualizer.tsx | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/AudioVisualizer.tsx b/frontend/src/components/AudioVisualizer.tsx index 89a89cf..26561d6 100644 --- a/frontend/src/components/AudioVisualizer.tsx +++ b/frontend/src/components/AudioVisualizer.tsx @@ -77,20 +77,20 @@ export default function AudioVisualizer({ height = 80 }: AudioVisualizerProps) { } const avg = count > 0 ? sum / count : 0; const target = (avg / 255) * MAX_AMPLITUDE; - hts[i] += (target - hts[i]) * 0.25; + hts[i] += (target - hts[i]) * 0.15; } } else { // Simulated visualization (no CORS or no Web Audio) for (let i = 0; i < NUM_POINTS; i++) { - const wave = Math.sin(frame * 0.04 + i * 0.35) * 0.5 + 0.5; - const noise = Math.sin(frame * 0.07 + i * 1.7) * 0.3 + 0.7; - const target = MAX_AMPLITUDE * 0.6 * (0.5 + wave * noise); - hts[i] += (target - hts[i]) * 0.18; + const wave = Math.sin(frame * 0.03 + i * 0.4) * 0.5 + 0.5; + const mod = Math.sin(frame * 0.05 + i * 0.9) * 0.25 + 0.75; + const target = MAX_AMPLITUDE * 0.65 * wave * mod; + hts[i] += (target - hts[i]) * 0.12; } } } else { for (let i = 0; i < NUM_POINTS; i++) { - hts[i] += (0 - hts[i]) * 0.08; + hts[i] += (0 - hts[i]) * 0.1; } } @@ -98,9 +98,8 @@ export default function AudioVisualizer({ height = 80 }: AudioVisualizerProps) { const points: { x: number; y: number }[] = []; for (let i = 0; i < NUM_POINTS; i++) { const x = PADDING + i * step; - const phase = i * 2.1 + frame * 0.025; - const sign = Math.sin(phase) > 0.05 ? 1 : -1; - const y = midY + sign * hts[i] * midY; + const phase = i * 1.4 + frame * 0.022; + const y = midY + Math.sin(phase) * hts[i] * midY; points.push({ x, y }); }