oscplayer in python with more features
This commit is contained in:
parent
669aeca055
commit
1a0f664806
3 changed files with 404 additions and 3 deletions
|
@ -6,9 +6,9 @@ time,heartrate,random
|
||||||
1.0,83.910385,0.23544657
|
1.0,83.910385,0.23544657
|
||||||
1.25,83.910385,0.9030523
|
1.25,83.910385,0.9030523
|
||||||
1.5,83.910385,0.24920326
|
1.5,83.910385,0.24920326
|
||||||
1.75,83.910385,0.8914295
|
1.75,,0.8914295
|
||||||
2.0,83.910385,0.09346372
|
2.0,,0.09346372
|
||||||
2.25,83.910385,0.8276468
|
2.25,,0.8276468
|
||||||
2.5,88.35135,0.99510956
|
2.5,88.35135,0.99510956
|
||||||
2.75,88.35135,0.51485765
|
2.75,88.35135,0.51485765
|
||||||
3.0,88.35135,0.6635224
|
3.0,88.35135,0.6635224
|
||||||
|
|
|
276
oscplayer/heart_cluster_max.csv
Normal file
276
oscplayer/heart_cluster_max.csv
Normal file
|
@ -0,0 +1,276 @@
|
||||||
|
time,value
|
||||||
|
0,78
|
||||||
|
1,78
|
||||||
|
2,78
|
||||||
|
3,78
|
||||||
|
4,78
|
||||||
|
5,50
|
||||||
|
6,74
|
||||||
|
7,73
|
||||||
|
8,52
|
||||||
|
9,51
|
||||||
|
10,51
|
||||||
|
11,79
|
||||||
|
12,51
|
||||||
|
13,51
|
||||||
|
14,79
|
||||||
|
15,51
|
||||||
|
16,51
|
||||||
|
17,72
|
||||||
|
18,79
|
||||||
|
19,66
|
||||||
|
20,81
|
||||||
|
21,66
|
||||||
|
22,73
|
||||||
|
23,66
|
||||||
|
24,82
|
||||||
|
25,73
|
||||||
|
26,66
|
||||||
|
27,82
|
||||||
|
28,66
|
||||||
|
29,80
|
||||||
|
30,66
|
||||||
|
31,66
|
||||||
|
32,66
|
||||||
|
33,52
|
||||||
|
34,80
|
||||||
|
35,52
|
||||||
|
36,80
|
||||||
|
37,52
|
||||||
|
38,70
|
||||||
|
39,62
|
||||||
|
40,62
|
||||||
|
41,62
|
||||||
|
42,69
|
||||||
|
43,68
|
||||||
|
44,66
|
||||||
|
45,76
|
||||||
|
46,76
|
||||||
|
47,76
|
||||||
|
48,66
|
||||||
|
49,66
|
||||||
|
50,62
|
||||||
|
51,75
|
||||||
|
52,62
|
||||||
|
53,62
|
||||||
|
54,68
|
||||||
|
55,73
|
||||||
|
56,73
|
||||||
|
57,73
|
||||||
|
58,68
|
||||||
|
59,73
|
||||||
|
60,73
|
||||||
|
61,63
|
||||||
|
62,72
|
||||||
|
63,63
|
||||||
|
64,63
|
||||||
|
65,68
|
||||||
|
66,68
|
||||||
|
67,63
|
||||||
|
68,69
|
||||||
|
69,69
|
||||||
|
70,72
|
||||||
|
71,72
|
||||||
|
72,68
|
||||||
|
73,63
|
||||||
|
74,74
|
||||||
|
75,63
|
||||||
|
76,74
|
||||||
|
77,69
|
||||||
|
78,70
|
||||||
|
79,70
|
||||||
|
80,61
|
||||||
|
81,74
|
||||||
|
82,61
|
||||||
|
83,61
|
||||||
|
84,74
|
||||||
|
85,68
|
||||||
|
86,74
|
||||||
|
87,68
|
||||||
|
88,72
|
||||||
|
89,61
|
||||||
|
90,74
|
||||||
|
91,61
|
||||||
|
92,61
|
||||||
|
93,75
|
||||||
|
94,61
|
||||||
|
95,61
|
||||||
|
96,61
|
||||||
|
97,73
|
||||||
|
98,75
|
||||||
|
99,64
|
||||||
|
100,75
|
||||||
|
101,64
|
||||||
|
102,74
|
||||||
|
103,64
|
||||||
|
104,64
|
||||||
|
105,68
|
||||||
|
106,74
|
||||||
|
107,74
|
||||||
|
108,64
|
||||||
|
109,66
|
||||||
|
110,64
|
||||||
|
111,65
|
||||||
|
112,64
|
||||||
|
113,65
|
||||||
|
114,65
|
||||||
|
115,65
|
||||||
|
116,64
|
||||||
|
117,67
|
||||||
|
118,64
|
||||||
|
119,68
|
||||||
|
120,68
|
||||||
|
121,68
|
||||||
|
122,68
|
||||||
|
123,64
|
||||||
|
124,69
|
||||||
|
125,78
|
||||||
|
126,78
|
||||||
|
127,64
|
||||||
|
128,70
|
||||||
|
129,64
|
||||||
|
130,64
|
||||||
|
131,69
|
||||||
|
132,77
|
||||||
|
133,77
|
||||||
|
134,69
|
||||||
|
135,70
|
||||||
|
136,70
|
||||||
|
137,66
|
||||||
|
138,70
|
||||||
|
139,66
|
||||||
|
140,70
|
||||||
|
141,69
|
||||||
|
142,74
|
||||||
|
143,66
|
||||||
|
144,66
|
||||||
|
145,68
|
||||||
|
146,66
|
||||||
|
147,75
|
||||||
|
148,74
|
||||||
|
149,66
|
||||||
|
150,66
|
||||||
|
151,68
|
||||||
|
152,67
|
||||||
|
153,67
|
||||||
|
154,75
|
||||||
|
155,68
|
||||||
|
156,75
|
||||||
|
157,81
|
||||||
|
158,63
|
||||||
|
159,63
|
||||||
|
160,82
|
||||||
|
161,70
|
||||||
|
162,80
|
||||||
|
163,79
|
||||||
|
164,70
|
||||||
|
165,70
|
||||||
|
166,63
|
||||||
|
167,78
|
||||||
|
168,63
|
||||||
|
169,63
|
||||||
|
170,74
|
||||||
|
171,72
|
||||||
|
172,72
|
||||||
|
173,53
|
||||||
|
174,71
|
||||||
|
175,74
|
||||||
|
176,53
|
||||||
|
177,74
|
||||||
|
178,74
|
||||||
|
179,61
|
||||||
|
180,75
|
||||||
|
181,75
|
||||||
|
182,75
|
||||||
|
183,72
|
||||||
|
184,72
|
||||||
|
185,75
|
||||||
|
186,72
|
||||||
|
187,68
|
||||||
|
188,61
|
||||||
|
189,61
|
||||||
|
190,61
|
||||||
|
191,71
|
||||||
|
192,71
|
||||||
|
193,61
|
||||||
|
194,76
|
||||||
|
195,76
|
||||||
|
196,61
|
||||||
|
197,66
|
||||||
|
198,70
|
||||||
|
199,70
|
||||||
|
200,76
|
||||||
|
201,70
|
||||||
|
202,61
|
||||||
|
203,70
|
||||||
|
204,64
|
||||||
|
205,71
|
||||||
|
206,71
|
||||||
|
207,61
|
||||||
|
208,72
|
||||||
|
209,73
|
||||||
|
210,73
|
||||||
|
211,75
|
||||||
|
212,69
|
||||||
|
213,61
|
||||||
|
214,75
|
||||||
|
215,74
|
||||||
|
216,61
|
||||||
|
217,61
|
||||||
|
218,61
|
||||||
|
219,61
|
||||||
|
220,74
|
||||||
|
221,61
|
||||||
|
222,74
|
||||||
|
223,74
|
||||||
|
224,61
|
||||||
|
225,73
|
||||||
|
226,61
|
||||||
|
227,61
|
||||||
|
228,61
|
||||||
|
229,61
|
||||||
|
230,73
|
||||||
|
231,72
|
||||||
|
232,61
|
||||||
|
233,61
|
||||||
|
234,61
|
||||||
|
235,61
|
||||||
|
236,67
|
||||||
|
237,67
|
||||||
|
238,62
|
||||||
|
239,62
|
||||||
|
240,66
|
||||||
|
241,62
|
||||||
|
242,70
|
||||||
|
243,66
|
||||||
|
244,70
|
||||||
|
245,62
|
||||||
|
246,71
|
||||||
|
247,71
|
||||||
|
248,62
|
||||||
|
249,70
|
||||||
|
250,70
|
||||||
|
251,68
|
||||||
|
252,62
|
||||||
|
253,62
|
||||||
|
254,62
|
||||||
|
255,62
|
||||||
|
256,57
|
||||||
|
257,57
|
||||||
|
258,72
|
||||||
|
259,72
|
||||||
|
260,72
|
||||||
|
261,62
|
||||||
|
262,70
|
||||||
|
263,70
|
||||||
|
264,69
|
||||||
|
265,64
|
||||||
|
266,62
|
||||||
|
267,68
|
||||||
|
268,62
|
||||||
|
269,67
|
||||||
|
270,62
|
||||||
|
271,65
|
||||||
|
272,74
|
||||||
|
273,62
|
||||||
|
274,74
|
|
125
oscplayer/oscplayer.py
Normal file
125
oscplayer/oscplayer.py
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
import argparse
|
||||||
|
import random
|
||||||
|
import time
|
||||||
|
|
||||||
|
from pythonosc import udp_client
|
||||||
|
|
||||||
|
import csv
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
header=None
|
||||||
|
rows=None
|
||||||
|
rowid=0
|
||||||
|
time_start=0
|
||||||
|
|
||||||
|
client=None
|
||||||
|
lastvalue=[]
|
||||||
|
|
||||||
|
minvalues=[]
|
||||||
|
maxvalues=[]
|
||||||
|
meanvalues=[]
|
||||||
|
|
||||||
|
basetopics=["/3/oscplayer","/oscplayer","/oscplayer"]
|
||||||
|
|
||||||
|
def init():
|
||||||
|
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("--ip", default="127.0.0.1", help="The ip of the OSC server")
|
||||||
|
parser.add_argument("--port", type=int, default=7000, help="The port the OSC server is listening on")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
global client
|
||||||
|
client = udp_client.SimpleUDPClient(args.ip, args.port)
|
||||||
|
|
||||||
|
csvlist=None
|
||||||
|
with open('heart_cluster_max.csv', newline='') as csvfile:
|
||||||
|
csvreader = csv.reader(csvfile, delimiter=',', quotechar='|')
|
||||||
|
csvlist = list(csvreader)
|
||||||
|
'''for row in csvreader:
|
||||||
|
if header is None:
|
||||||
|
header=row
|
||||||
|
else:
|
||||||
|
rows.vstack(row)
|
||||||
|
'''
|
||||||
|
global header
|
||||||
|
header=csvlist[0]
|
||||||
|
global rows
|
||||||
|
rows=csvlist[1:]
|
||||||
|
|
||||||
|
global rowid
|
||||||
|
rowid=0 #waiting for this row to send
|
||||||
|
|
||||||
|
global lastvalue
|
||||||
|
lastvalue=np.zeros(len(rows)-1)
|
||||||
|
|
||||||
|
global minvalues
|
||||||
|
global maxvalues
|
||||||
|
global meanvalues
|
||||||
|
|
||||||
|
|
||||||
|
minvalues=[float(min(x)) for x in filterEmpty(rows)]
|
||||||
|
maxvalues=[float(max(x)) for x in filterEmpty(rows)]
|
||||||
|
|
||||||
|
#print(np.mean(np.array((filterEmpty(rows))),axis=1)) #TODO: mittelwert ausrechnen funktioniert noch nicht
|
||||||
|
#exit()
|
||||||
|
#meanvalues=[float(np.mean(x)) for x in filterEmpty(rows)]
|
||||||
|
|
||||||
|
global time_start
|
||||||
|
time_start = time.time()
|
||||||
|
|
||||||
|
|
||||||
|
def update(ctime):
|
||||||
|
global minvalues
|
||||||
|
global maxvalues
|
||||||
|
global meanvalues
|
||||||
|
global rowid
|
||||||
|
global client
|
||||||
|
global lastvalue
|
||||||
|
if rowid>=len(rows): #ended?
|
||||||
|
return False
|
||||||
|
|
||||||
|
if ctime-time_start>=float(rows[rowid][0]):
|
||||||
|
#print(rows[rowid])
|
||||||
|
crow=rows[rowid]
|
||||||
|
for i in range(len(header)-1):
|
||||||
|
if len(crow[i+1])>0: #value not empty
|
||||||
|
value=float(crow[i+1])
|
||||||
|
send=False
|
||||||
|
if (i==0):
|
||||||
|
value=int(mapRange(value,minvalues[i],maxvalues[i],1,40))
|
||||||
|
send=True
|
||||||
|
if (i==1):
|
||||||
|
send=True
|
||||||
|
if (i==2):
|
||||||
|
send=True
|
||||||
|
if (i==3):
|
||||||
|
send=True
|
||||||
|
if (i==4):
|
||||||
|
send=True
|
||||||
|
|
||||||
|
if send:
|
||||||
|
print(basetopics[i]+"/"+header[i+1]+": "+ str(value))
|
||||||
|
client.send_message(basetopics[i]+"/"+header[i+1], value)
|
||||||
|
|
||||||
|
lastvalue[i]=value #save last value
|
||||||
|
rowid+=1
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def filterEmpty(rows):
|
||||||
|
m=[np.array(rows)[:,i+1] for i in range(np.shape(np.array(rows))[1]-1)]
|
||||||
|
n=[[x if len(x)>0 else None for x in y] for y in m]
|
||||||
|
n=[list(filter(None, x)) for x in n]
|
||||||
|
return n
|
||||||
|
|
||||||
|
def mapRange(value, inMin, inMax, outMin, outMax):
|
||||||
|
return outMin + (((value - inMin) / (inMax - inMin)) * (outMax - outMin))
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
init()
|
||||||
|
res=True
|
||||||
|
while res:
|
||||||
|
res=update(time.time())
|
Loading…
Reference in a new issue