79544f64c3
Move PCM decoding into a producer thread that feeds an mpsc channel, letting the render loop drain samples non-blockingly each frame. Add a frame-aligned sleep via event::poll to replace the implicit CPU yield that the old blocking read provided. Also replace powf(0.5) with sqrt(). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>