import snd |
import snd |
import time |
import time |
from datetime import date |
from datetime import date |
import threading |
import threading |
|
from pydispatch import dispatcher |
|
import wave |
|
|
filename = "" |
filename = "demo.wav" |
|
|
def worker(filename): |
def worker(filename): |
"""thread worker function |
"""thread worker function |
http://www.doughellmann.com/PyMOTW/threading/ |
http://www.doughellmann.com/PyMOTW/threading/ |
|
|
https://github.com/uskr/pynma""" |
https://github.com/uskr/pynma |
|
|
|
http://stackoverflow.com/questions/1092531/event-system-in-python """ |
print 'Worker for '+filename |
print 'Worker for '+filename |
|
|
return |
return |
|
|
def filenameMaker(): |
def filenameMaker(): |
global filename |
global filename |
while True: |
filename = date.today().isoformat()+'-'+str(time.time())+'-demo.wav' |
filename = date.today().isoformat()+'-'+str(time.time())+'-demo.wav' |
|
time.sleep(5) |
|
|
|
|
def record_to_async_file(): |
|
"Records from the microphone and outputs the resulting data to `path`" |
|
sample_width, data = snd.record() |
|
data = snd.pack('<' + ('h'*len(data)), *data) |
|
path = filename |
|
dispatcher.send( signal='FILE_CREATED', sender=filename, filename=filename) |
|
wf = wave.open(path, 'wb') |
|
wf.setnchannels(1) |
|
wf.setsampwidth(sample_width) |
|
wf.setframerate(snd.RATE) |
|
wf.writeframes(data) |
|
wf.close() |
|
print("done - result written to "+path) |
|
|
|
dispatcher.connect( filenameMaker, signal='SND_STARTED', sender=dispatcher.Any ) |
threads = [] |
dispatcher.connect( worker, signal='FILE_CREATED', sender=dispatcher.Any ) |
fm = threading.Thread(target=filenameMaker) |
|
fm.daemon = True |
|
fm.start() |
|
print "Scannr started..." |
print "Scannr started..." |
while True: |
while True: |
print "ready to record" |
print "ready to record" |
snd.record_to_file(filename) |
record_to_async_file() |
t = threading.Thread(target=worker,args=(filename,)) |
|
t.start() |
|