I'm working on a timer in python which sounds a chime when the waiting time is over. I use the following code:
from wave import open as wave_open
from ossaudiodev import open as oss_opendef _play_chime():"""Play a sound file once."""sound_file = wave_open('chime.wav','rb')(nc,sw,fr,nf,comptype, compname) = sound_file.getparams( )dsp = oss_open('/dev/dsp','w')try:from ossaudiodev import AFMT_S16_NEexcept ImportError:if byteorder == "little":AFMT_S16_NE = ossaudiodev.AFMT_S16_LEelse:AFMT_S16_NE = ossaudiodev.AFMT_S16_BEdsp.setparameters(AFMT_S16_NE, nc, fr)data = sound_file.readframes(nf)sound_file.close()dsp.write(data)dsp.close()
It works pretty good, unless any other device is already outputing sound.
How could I do basically the same (under linux) without having the prerequisite that no sound is being played?
If you think the process would require an API to ensure software mixing, please suggest a method :)
Thx for the support :)