diff --git a/syncplay/ui/sound.py b/syncplay/ui/sound.py index 5d6e727..1d00e6f 100644 --- a/syncplay/ui/sound.py +++ b/syncplay/ui/sound.py @@ -2,9 +2,34 @@ try: import winsound except ImportError: winsound = None +try: + import alsaaudio + import wave +except ImportError: + alsaaudio = None from syncplay import utils def doBuzz(): - buzzPath = utils.findWorkingDir() + "\\resources\\buzzer.wav" if(winsound): + buzzPath = utils.findWorkingDir() + "\\resources\\buzzer.wav" winsound.PlaySound(buzzPath, winsound.SND_FILENAME|winsound.SND_ASYNC) + elif(alsaaudio): + buzzPath = utils.findWorkingDir() + "/resources/buzzer.wav" + buzz = wave.open(buzzPath, 'rb') + device = alsaaudio.PCM(0) + device.setchannels(buzz.getnchannels()) + device.setrate(buzz.getframerate()) + if buzz.getsampwidth() == 1: + device.setformat(alsaaudio.PCM_FORMAT_U8) + elif buzz.getsampwidth() == 2: + device.setformat(alsaaudio.PCM_FORMAT_S16_LE) + else: + raise ValueError('Unsupported buzzer format') + device.setperiodsize(640) + data = buzz.readframes(640) + while data: + device.write(data) + data = buzz.readframes(640) + buzz.close() + +