def draw(): p5.colorMode(p5.RGB) p5.background(0) if len(projection): p5.pushMatrix() p5.colorMode(p5.HSB) p5.translate(width/4, height/4) p5.scale(width/2, height/2) for point, label in zip(projection, labels): p5.stroke(p5.color(label * 26., 255, 255)) p5.point(point[0], point[1]) p5.popMatrix() #send osc to MaxPatch probability_lda = model.predict_proba([getAmplitude(recent)]) send_osc_message("/lda",probability_lda) probability_svc = clf.predict_proba([getAmplitude(recent)]) send_osc_message("/svm",probability_svc) cur = model.transform([getAmplitude(recent)]) cur = cur[0] cur = (cur - p_min) / (p_max - p_min) global predicted if predicted == None: predicted = cur else: predicted = predicted * .9 + cur * .1 p5.stroke(p5.color(0, 0, 255)) p5.ellipse(width/4 + predicted[0] * width/2, height/4 + predicted[1] * height/2, 10, 10) elif len(recent): # draw time-amplitude p5.pushMatrix() p5.translate(0, height/2) p5.scale(width / N, height/2) p5.stroke(255) p5.noFill() p5.beginShape() for x, y in enumerate(recent): p5.vertex(x, y) p5.endShape() p5.popMatrix() # draw frequency-amplitude amp = getAmplitude(recent) p5.pushMatrix() p5.translate(0, height) p5.scale(width, -height) p5.stroke(255) p5.noFill() p5.beginShape() for x, y in enumerate(amp): p5.vertex(math.log(1+x, len(amp)), pow(y, .5)) p5.endShape() p5.popMatrix()
def draw_screen(points, slopes, line_segments, arc_segments): # Setup processing import pyprocessing as proc proc.size(VIEW_WIDTH, VIEW_HEIGHT) proc.smooth() proc.background(255, 255, 255) proc.ellipseMode(proc.RADIUS) # Prepare camera bbox = BoundingBox(points) eye_x = bbox.min_x + bbox.width / 2.0 eye_y = bbox.min_y + bbox.height / 2.0 eye_z = (1.5 * max(bbox.width, bbox.height) / 2.0) / sin(radians(50)) center_x = bbox.min_x + bbox.width / 2.0 center_y = bbox.min_y + bbox.height / 2.0 proc.camera( eye_x, eye_y, eye_z, center_x, center_y, 0, 0, 1, 0) if RENDER_CIRCLES: proc.noFill() proc.stroke(232, 232, 232) for arc in arc_segments: proc.ellipse(arc.c[0], arc.c[1], arc.r, arc.r) if RENDER_SLOPES: proc.stroke(127, 127, 127) for k in range(len(points)): if slopes[k]: p = points[k] s = slopes[k].vector / norm(slopes[k].vector) # normalize x0 = p.x() - s[0] * SLOPE_LENGTH y0 = p.y() - s[1] * SLOPE_LENGTH x1 = p.x() + s[0] * SLOPE_LENGTH y1 = p.y() + s[1] * SLOPE_LENGTH proc.line(x0, y0, x1, y1) # line_segments proc.stroke(0, 0, 0, 255) for line in line_segments: proc.line(line.a.x(), line.a.y(), line.b.x(), line.b.y()) # arc_segments proc.noFill() proc.stroke(255, 0, 0, 255) for arc in arc_segments: proc.arc(arc.c[0], arc.c[1], arc.r, arc.r, arc.alfa, arc.beta) # Points proc.fill(255, 0, 0) proc.stroke(0, 0, 0) for p in points: proc.rect(p.x() - BOX_WIDTH / 2.0, p.y() - BOX_WIDTH / 2.0, BOX_WIDTH, BOX_WIDTH) # Execute! :-) proc.run()
def setup(): p.size(SIZE, SIZE) p.noFill() p.stroke(255)