From d37efeb0fa94d482a6e801ba184dc4ab24af588a Mon Sep 17 00:00:00 2001 From: alban Date: Wed, 11 Nov 2020 17:32:59 +0100 Subject: [PATCH] [init] merge other folder --- .gitignore | 1 + filters/kaleidoscope.py | 3 +- filters/redilysis_colors.py | 8 +- generators/redilysis_shape.py | 240 ++++++++++++++++++++++++++++++++++ 4 files changed, 247 insertions(+), 5 deletions(-) mode change 100644 => 100755 filters/redilysis_colors.py create mode 100755 generators/redilysis_shape.py diff --git a/.gitignore b/.gitignore index fb6572b..c125755 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store .*swp* *__pycache__ +playlists diff --git a/filters/kaleidoscope.py b/filters/kaleidoscope.py index 5ca4396..8f874b3 100755 --- a/filters/kaleidoscope.py +++ b/filters/kaleidoscope.py @@ -162,8 +162,7 @@ try: pointsList = ast.literal_eval(line) # Do the filter result = kaleidoscope( pointsList ) - print( result, flush=True ) - + if len(result) : print( result, flush=True ) looptime = time.time() - start # debug(name+" looptime:"+str(looptime)) if( looptime < optimal_looptime ): diff --git a/filters/redilysis_colors.py b/filters/redilysis_colors.py old mode 100644 new mode 100755 index 230fa08..2b4abc1 --- a/filters/redilysis_colors.py +++ b/filters/redilysis_colors.py @@ -1,4 +1,3 @@ - #!/usr/bin/python3 # -*- coding: utf-8 -*- # -*- mode: Python -*- @@ -145,8 +144,11 @@ def default( pl ): colorTuple = int2rgb(ocolor) x = point[0] dist = abs(x - max_width/2) - key = int(2* dist / max_width * 8) - power = spect[key] / spect10Correct[key] * chaos + key = int(2* dist / max_width * 7) + try: + power = spect[key] / spect10Correct[key] * chaos + except: + pass color = [] for i in colorTuple: new_color = int(i * power) diff --git a/generators/redilysis_shape.py b/generators/redilysis_shape.py new file mode 100755 index 0000000..4f0de7f --- /dev/null +++ b/generators/redilysis_shape.py @@ -0,0 +1,240 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +# -*- mode: Python -*- + + +''' + +v0.1.0 + + +LICENCE : CC + +by cocoa + +''' +from __future__ import print_function +import math +import random +import sys +import os +import time +import redis +import ast +import argparse + + +MAX_PARTICLES = 10 +MAX_TIME = 500 + +argsparser = argparse.ArgumentParser(description="Dummy generator") +argsparser.add_argument("-f","--fps",help="Frame Per Second",default=30,type=int) +argsparser.add_argument("-v","--verbose",action="store_true",help="Verbose output") +# Redis Args +argsparser.add_argument("-i","--ip",help="IP address of the Redis server ",default="127.0.0.1",type=str) +argsparser.add_argument("-p","--port",help="Port of the Redis server ",default="6379",type=str) +# +argsparser.add_argument("-M","--max-particles",help="Max Particles. Default:{}".format(MAX_PARTICLES),default=MAX_PARTICLES,type=int) +argsparser.add_argument("-m","--max-time",help="Max Particles. Default:{}".format(MAX_TIME),default=MAX_TIME,type=int) + + +args = argsparser.parse_args() +verbose = args.verbose +ip = args.ip +port = args.port +max_particles = args.max_particles +max_time = args.max_time + +def debug(*args, **kwargs): + if( verbose == False ): + return + print(*args, file=sys.stderr, **kwargs) + + +def rgb2int(rgb): + #debug(name,"::rgb2int rbg:{}".format(rgb)) + return int('0x%02x%02x%02x' % tuple(rgb),0) + +def spectrum_120( ): + return ast.literal_eval(redisData["spectrum_10"]) + + +def rgb2int(rgb): + #debug(name,"::rgb2int rbg:{}".format(rgb)) + return int('0x%02x%02x%02x' % tuple(rgb),0) + +def msNow(): + return time.time() + +def refreshRedis(): + global redisData + for key in redisKeys: + redisData[key] = ast.literal_eval(r.get(key).decode('ascii')) + +name="generator::redilisys_particles" + +shape = [ + [-1,-1], + [1,-1], + [1,1], + [-1,1], + [-1,-1] + +] + +class UnpreparedParticle(Exception): + pass + +class Particle(object): + def __init__(self, x, y, m): + self.x = x + self.y = y + self.m = m + self.dx = 0 + self.dy = 0 + self.decay = random.randint(10,max_time) + self.color = (255,255,255) + #debug( self.color ) + + def interact(self, bodies): + spec = redisData["spectrum_10"] + for other in bodies: + if other is self: + continue + dx = other.x - self.x + dy = other.y - self.y + dist = math.sqrt(dx*dx + dy*dy) + if dist == 0: + dist = 1 + factor = other.m / dist**2 + self.dx += (dx * factor * self.m) + self.dy += (dy * factor * self.m) + #print "factor %f" % (factor,) + + def move(self): + self.x += self.dx + self.y += self.dy + if self.x > max_width: + self.dx = - self.dx /8 + self.x = max_width + if self.x < 1: + self.dx = - self.dx /8 + self.x = 1 + if self.y > max_height: + self.dy = - self.dy /4 + self.y = max_height + if self.y < 1: + self.dy = - self.dy /4 + self.y = 1 + #print "(%.2f,%.2f) -> (%.2f,%.2f)" % (ox, oy, self.x, self.y) + + +class ParticleViewer(object): + def __init__(self, particles, size=(800,800)): + (self.width, self.height) = size + self.size = size + self.particles = particles + self.xoff = 0 + self.yoff = 0 + self.scalefactor = 1 + + def redraw(self): + + pl = [] + drawnVectors = [] + for p in self.particles: + x = int(self.scalefactor * p.x) - self.xoff + y = int(self.scalefactor * p.y) - self.yoff + if x > max_width: + x = max_width + if x < 1: + x = 1 + if y > max_height: + y = max_height + if y < 1: + y = 1 + + color = rgb2int(p.color) + pl.append([x+1,y+1,0]) + pl.append([x+1,y+1,color]) + pl.append([x,y,color]) + + for other in p.connectedTo: + + if [other,self] in drawnVectors: + continue + drawnVectors.append([other,self]) + pl.append([x,y,0]) + pl.append([x,y,color]) + pl.append([other.x,other.y,color]) + + print(pl,flush = True) + + def decayParticles(self): + for i,p in enumerate(self.particles): + # Handle positional decay + if p.decay == 0: + del self.particles[i] + continue + p.decay = p.decay - 1 + # Handle color decay + n = int(255 * (p.decay / max_time )) + p.color = (n,n,n) + + + def emitParticles(self): + spec = redisData["spectrum_10"] + power = sum(spec[6:]) + if len(self.particles ) > math.sqrt(max_particles): + if len(self.particles) > max_particles: + return + if random.random() > power: + return + rx = max_width /2 + ry = max_height /2 + spec = redisData["spectrum_10"] + m = random.randint(1,1+int(10*spec[7])) + particles.append(Particle(rx, ry, m)) + + + def tick(self): + self.decayParticles() + self.emitParticles() + for p in self.particles: + p.interact(self.particles) + for p in particles: + p.move() + self.redraw() + + def scale(self, factor): + self.scalefactor += factor + + + + +max_width = 800 +max_height = 800 +redisKeys = ["spectrum_120","spectrum_10"] +redisData = {} +redisLastHit = msNow() - 99999 +r = redis.Redis( + host=ip, + port=port) + +white = 16777215 + +refreshRedis() +if __name__ == "__main__": + particles = [] +# particles.append(Attractor(320, 200, 10)) +# particles.append(Attractor(100, 100, 10)) + + win = ParticleViewer(particles) + try: + while True: + win.tick() + refreshRedis() + time.sleep(.04) + + except KeyboardInterrupt: + pass