2019-05-11 14:22:01 +00:00

77 lines
2.2 KiB
Python

from Util.PyAudioRecorder import PyAudioRecorder
from random import randint
import time
import socket
import pickle
remoteaddr = ("0.0.0.0",8002)
# PyAudioRecorder uses the default
pyAudioRecorder: PyAudioRecorder = PyAudioRecorder()
#pyAudioRecorder.start()
print(pyAudioRecorder.p.get_default_input_device_info())
lastping = time.time()-1
lastupdate = time.time()-1
localaddr = ("",randint(6000,7000))
udpsocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpsocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
udpsocket.settimeout(.002)
registered:bool = False
while True:
#print(time.time() - self.lastping)
if time.time() - lastping > .5 :
udpsocket.sendto("s:ping".encode(), remoteaddr)
lastping = time.time()
ftt = pyAudioRecorder.fft()
#print(ftt)
if time.time() - lastupdate > 0.00833333333 and registered:
#if pyAudioRecorder.has_new_audio:
# there must be a better solution to do this.
# this looks like my silly arduino code, but it works
values: str = "d:xs"
i = 0
j = 0
udpsocket.sendto(("dlen:"+str(len(ftt[0]))+":"+str(len(ftt[1]))+"").encode(), remoteaddr)
for value in ftt[0]:
values = values+":"+str(j)+"|"+str(value)
i = i+1
j = j+1
if i == 20:
udpsocket.sendto(values.encode(), remoteaddr)
i = 0
values= "d:xs"
values = "d:ys"
i = 0
j = 0
for value in ftt[1]:
values = values+":"+str(j)+"|"+str(value)
i = i+1
j = j+1
if i == 20:
udpsocket.sendto(values.encode(), remoteaddr)
i = 0
values= "d:ys"
udpsocket.sendto("d:c".encode(), remoteaddr)
lastupdate = time.time()
try:
rbytes, address = udpsocket.recvfrom(4096)
remoteaddr = address
data = rbytes.decode('UTF-8')
if data:
if data[0] is "s" and data[1] is "r":
registered = True
udpsocket.sendto(("r:2:"+pyAudioRecorder.p.get_default_input_device_info()['name']+"").encode(), address)
except socket.timeout:
pass