Key Ideas
1Music vs Sound. mixer.music streams ONE long track (background music). mixer.Sound loads fully into RAM for instant, overlapping playback (SFX).
2Channels. Every Sound.play() grabs a free Channel automatically — default 8, raise with set_num_channels() if sounds get cut off.
3Volume. set_volume(0.0-1.0) works on both music and individual Sounds independently.
4Fade In/Out. music.play(fade_ms=1000) fades in; music.fadeout(800) fades out smoothly instead of an abrupt cut.
5Looping. music.play(loops=-1) repeats forever — standard for background music.
6Audio Manager. Centralize all sound loading/playing in one class instead of scattering mixer calls across the codebase.