doesnt the python mixer have get_busy() method which can be used to check if things are in use? pseudocode: if pygame.mixer.get_busy() python.mixer.pause() else python.mixer.unpause() certainly sounds more feasible to me, but there might be a reason you cannot use similar you shouldn't need to retain the state - technically it should come from each channel/the mixer