I've got an essay in me about how the correct API for playing looping sounds is something like "StartOrContinue(sound, volume, pitch, etc)" that you call every frame, and the sound engine stops playing the sound if that function isn't called.