Initial buzzer support for linux.
This commit is contained in:
parent
fd4549f0a5
commit
d130390c9e
@ -2,9 +2,34 @@ try:
|
|||||||
import winsound
|
import winsound
|
||||||
except ImportError:
|
except ImportError:
|
||||||
winsound = None
|
winsound = None
|
||||||
|
try:
|
||||||
|
import alsaaudio
|
||||||
|
import wave
|
||||||
|
except ImportError:
|
||||||
|
alsaaudio = None
|
||||||
from syncplay import utils
|
from syncplay import utils
|
||||||
|
|
||||||
def doBuzz():
|
def doBuzz():
|
||||||
buzzPath = utils.findWorkingDir() + "\\resources\\buzzer.wav"
|
|
||||||
if(winsound):
|
if(winsound):
|
||||||
|
buzzPath = utils.findWorkingDir() + "\\resources\\buzzer.wav"
|
||||||
winsound.PlaySound(buzzPath, winsound.SND_FILENAME|winsound.SND_ASYNC)
|
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()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user