77 lines
2.2 KiB
Python
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
|
|
|