- Convert generate_waveform_svg() from sync to async (subprocess.run -> asyncio.create_subprocess_exec) - Add early downsampling to ~2000 samples before numpy processing (~95% memory reduction for 120s tracks) - Pre-generate waveform on clip completion in _generate_and_save() - Add Cache-Control headers (public, max-age=86400) to waveform endpoint - Preserve on-demand generation as lazy fallback