feat(visualizer): real-time audio FFT visualization

Backend (Rust):
- Add rustfft crate for Fast Fourier Transform
- Create visualizer module with FFT computation (1024 samples, Hann window)
- VisualizerSource wrapper taps into audio stream without modifying playback
- Logarithmic frequency bin mapping for perceptual accuracy
- Emit audio-spectrum events to frontend (~20-30fps)
- Tauri commands: set_visualizer_enabled, get_visualizer_enabled

Frontend (Svelte):
- CSS-based rendering (GPU accelerated via transform/transition)
- Three visualization modes: bars, wave, mirror
- Dynamic colors extracted from album artwork
- Listens to audio-spectrum Tauri events
- ~0% CPU usage (GPU handles all transforms)
This commit is contained in:
vicrodh committed 2026-01-30 21:51:25 -06:00
1 parent fcc11e2966
commit 16b35c33fd
7 files changed
+654 -224

No files matched your search

+3
View File
@@ -53,6 +53,9 @@ rand = "0.8"
rodio = { version = "0.19", features = ["symphonia-all"] }
symphonia = { version = "0.5", features = ["all"] }
# Audio visualization (FFT)
rustfft = "6.2"
# Media controls (MPRIS on Linux)
souvlaki = "0.7"