I'am not an expert in pygame audio but:
1. It makes any diference if you reduce the sleep time?
Say, 1/30 sec by example.
2. It makes some diference if you initialize the mixer with diferent buffer
sizes ?
That was pointed to me by Patrick Mullen time ago, and the advice
periodically resurfaces. Sometimes, especially with old hardware,
increasing the buffer size alleviates the problem ( at the cost of more
latency, If i remember well).
ex:
# last param is buffer size
pygame.mixer.init(44100, -16, True, 1024)
3. Your real code really dont pump the event queue? Maybe .get_busy()
updates all necesary inner state, but a lot of pygame functionallity
depends on the event queue being pumped.
HTH
--- claxo