Add SpatialParams field to PlayingSound, new_3d constructor, and listener parameter to mix_sounds. Compute per-channel attenuation and stereo panning when spatial params are present; 2D sounds are unchanged. Add three new tests: spatial_2d_unchanged, spatial_far_away_silent, and spatial_right_panning. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>