feat: Add themed FFT waveform visualization to detail panel

Backend:
- Install ffmpeg + numpy in Docker image
- New waveform.py: FFT-based SVG generator with 64 frequency bands
- GET /api/clips/{id}/waveform — generates on demand, caches to /data/waveforms/
- DELETE /api/clips/{id} now cascade-removes waveform SVG
- Warm amber-to-orange HSL gradient (25° to 35° hue)
- Mirrored bars: top full opacity, bottom 60% opacity

Frontend:
- DetailPanel shows waveform image beneath album art (80px height)
- Only shown for clips with status='ready'

Storage: /data/waveforms/ persisted via existing ./data volume mount
This commit is contained in:
rin.kagamine committed 2026-05-29 20:11:01 -04:00
1 parent 3c6a5d1a84
commit 8f5c8a87d1
6 files changed
+330

No files matched your search

+1
View File
@@ -5,3 +5,4 @@ aiosqlite==0.20.0
pydantic>=2.10.0
python-multipart==0.0.12
python-dotenv==1.0.0
numpy==2.2.0