Initial buzzer support for linux.

This commit is contained in:
daniel-123 2013-01-07 00:25:24 +01:00
parent fd4549f0a5
commit d130390c9e

View File

@ -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()