From 75b3ae93a2ffdad8de49d658a06f2b0b86ee0d2b Mon Sep 17 00:00:00 2001 From: alban Date: Fri, 9 Oct 2020 18:30:28 +0200 Subject: [PATCH] [fix] clitools changes --- clitools/filters/anaglyph.py | 6 +- clitools/generators/dummy.py | 38 +++++- clitools/generators/example.py | 0 clitools/generators/redilysis_lines.py | 174 +++++++++++++++++++++++++ clitools/generators/tunnel.py | 0 5 files changed, 213 insertions(+), 5 deletions(-) mode change 100644 => 100755 clitools/generators/dummy.py mode change 100644 => 100755 clitools/generators/example.py create mode 100755 clitools/generators/redilysis_lines.py mode change 100644 => 100755 clitools/generators/tunnel.py diff --git a/clitools/filters/anaglyph.py b/clitools/filters/anaglyph.py index b67dc3e..93a8eb6 100755 --- a/clitools/filters/anaglyph.py +++ b/clitools/filters/anaglyph.py @@ -66,9 +66,9 @@ red = (41,24,24) white = (95,95,95) blue = (0,41,64) -red = (86,0,0) -blue = (0,55,86) -white = (125,125,125) +red = (255,0,0) +blue = (0,255,255) +white = (255,255,255) def anaglyph( pl ): debug(name,'--------------- new loop ------------------') diff --git a/clitools/generators/dummy.py b/clitools/generators/dummy.py old mode 100644 new mode 100755 index cf9059d..6a94eb0 --- a/clitools/generators/dummy.py +++ b/clitools/generators/dummy.py @@ -38,11 +38,45 @@ fps=args.fps verbose=args.verbose optimal_looptime = 1 / fps debug(name+" optimal looptime "+str(optimal_looptime)) +color = 65280 +square = [[100.0, 100.0, color], [100.0, 500.0, color], [500.0, 500.0, color], [500.0, 100.0, color], [100.0, 100.0, color]] +line =[] +for i in range(00,800,int(800/120)): + line.append([i, 400, color]) +square = [[100.0, 100.0, color], [100.0, 500.0, color], [500.0, 500.0, color], [500.0, 100.0, color], [100.0, 100.0, color]] +mire = [ + [600,600,0], + [600,600,color], + [700,600,color], + [700,700,color], + [600,700,color], + [600,600,color], + [100,100,0], + [100,100,color], + [200,100,color], + [200,200,color], + [100,200,color], + [100,100,color], + [0,0,0], + [0,0,color], + [800,0,color], + [800,800,color], + [0,800,color], + [0,0,color], + [350,400,0], + [350,400,color], + [450,400,color], + [400,350,0], + [400,350,color], + [400,450,color], +] + +shape = mire + while True: start = time.time() - print("[[100.0, 100.0, 65280], [100.0, 500.0, 65280], [500.0, 500.0, 65280], [500.0, 100.0, 65280], [100.0, 100.0, 65280]]", flush=True); - #print("[[100.0, 100.0, 65280], [110.0, 500.0, 65280], [510.0, 500.0, 65280], [510.0, 100.0, 65280], [100.0, 110.0, 65280]]", flush=True); + print(shape, flush=True); looptime = time.time() - start if( looptime < optimal_looptime ): time.sleep( optimal_looptime - looptime) diff --git a/clitools/generators/example.py b/clitools/generators/example.py old mode 100644 new mode 100755 diff --git a/clitools/generators/redilysis_lines.py b/clitools/generators/redilysis_lines.py new file mode 100755 index 0000000..123f487 --- /dev/null +++ b/clitools/generators/redilysis_lines.py @@ -0,0 +1,174 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +# -*- mode: Python -*- + + +''' + +redilysis_lines +v0.1.0 + +Add a line on every frame and scroll + +see https://git.interhacker.space/teamlaser/redilysis for more informations +about the redilysis project + +LICENCE : CC + +by cocoa + + +''' +from __future__ import print_function +import argparse +import ast +import os +import math +import random +import redis +import sys +import time +name = "generator::redilysis_lines" + +def debug(*args, **kwargs): + if( verbose == False ): + return + print(*args, file=sys.stderr, **kwargs) +def msNow(): + return time.time() + +CHAOS = 1 +REDIS_FREQ = 33 + +# General Args +argsparser = argparse.ArgumentParser(description="Redilysis filter") +argsparser.add_argument("-v","--verbose",action="store_true",help="Verbose") +# 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("-F","--redis-freq",help="Query Redis every x (in milliseconds). Default:{}".format(REDIS_FREQ),default=REDIS_FREQ,type=int) +# General args +argsparser.add_argument("-n","--nlines",help="number of lines on screen",default=60,type=int) +argsparser.add_argument("-x","--centerX",help="geometrical center X position",default=400,type=int) +argsparser.add_argument("-y","--centerY",help="geometrical center Y position",default=400,type=int) +argsparser.add_argument("-W","--max-width",help="geometrical max width",default=800,type=int) +argsparser.add_argument("-H","--max-height",help="geometrical max height",default=800,type=int) +argsparser.add_argument("-f","--fps",help="Frame Per Second",default=30,type=int) + +args = argsparser.parse_args() +verbose = args.verbose +ip = args.ip +port = args.port +fps = args.fps +centerX = args.centerX +centerY = args.centerY +redisFreq = args.redis_freq / 1000 +maxWidth = args.max_width +maxHeight = args.max_height +nlines = args.nlines +optimal_looptime = 1 / fps + +redisKeys = ["spectrum_120","spectrum_10"] +debug(name,"Redis Keys:{}".format(redisKeys)) +redisData = {} +redisLastHit = msNow() - 99999 +r = redis.Redis( + host=ip, + port=port) + +white = 16777215 +lineList = [] + +scroll_speed = int(maxHeight / nlines ) +line_length = int(maxWidth / 10) +line_pattern = [] + +def rgb2int(rgb): + #debug(name,"::rgb2int rbg:{}".format(rgb)) + return int('0x%02x%02x%02x' % tuple(rgb),0) + +def spectrum_10( ): + delList = [] + spectrum = ast.literal_eval(redisData["spectrum_10"]) + debug( name, "spectrum:{}".format(spectrum)) + # scroll lines + for i,line in enumerate(lineList): + skip_line = False + new_y = int(line[0][1] + scroll_speed) + if( new_y >= maxHeight ): + debug(name,"{} > {}".format(new_y,maxHeight)) + debug(name,"delete:{}".format(i)) + delList.append(i) + continue + + for j,point in enumerate(line): + line[j][1] = new_y + lineList[i] = line + + for i in delList: + del lineList[i] + + # new line + currentLine = [] + for i in range(0,10): + x = int(i * line_length) + y = 0 + # get frequency level + level = spectrum[i] + # get color + comp = int(255*level) + color = rgb2int( (comp,comp,comp)) + # new point + currentLine.append( [x,y,color] ) + + # add line to list + lineList.append( currentLine) + + +def refreshRedis(): + global redisLastHit + global redisData + # Skip if cache is sufficent + diff = msNow() - redisLastHit + if diff < redisFreq : + #debug(name, "refreshRedis not updating redis, {} < {}".format(diff, redisFreq)) + pass + else: + #debug(name, "refreshRedis updating redis, {} > {}".format(diff, redisFreq)) + redisLastHit = msNow() + for key in redisKeys: + redisData[key] = r.get(key).decode('ascii') + #debug(name,"refreshRedis key:{} value:{}".format(key,redisData[key])) + # Only update the TTLs + if 'bpm' in redisKeys: + redisData['bpm_pttl'] = r.pttl('bpm') + #debug(name,"refreshRedis key:bpm_ttl value:{}".format(redisData["bpm_pttl"])) + #debug(name,"redisData:{}".format(redisData)) + return True + +def linelistToPoints( lineList ): + pl = [] + for i,line in enumerate(lineList): + # add a blank point + pl.append([ line[0][0], line[0][1], 0 ]) + # append all the points of the line + pl += line + #debug(name,"pl:{}".format(pl)) + debug(name,"pl length:{}".format(len(pl))) + return pl + +try: + while True: + refreshRedis() + start = time.time() + # Do the thing + pointsList = spectrum_10() + print( linelistToPoints(lineList), flush=True ) + looptime = time.time() - start + # debug(name+" looptime:"+str(looptime)) + if( looptime < optimal_looptime ): + time.sleep( optimal_looptime - looptime) + # debug(name+" micro sleep:"+str( optimal_looptime - looptime)) +except EOFError: + debug(name+" break")# no more information + diff --git a/clitools/generators/tunnel.py b/clitools/generators/tunnel.py old mode 100644 new mode 100755