Link protocol bugfixs

This commit is contained in:
sam 2020-10-06 20:07:12 +02:00
parent cc93d13e22
commit ede9b2731d
5 changed files with 93 additions and 13 deletions

View File

@ -24,7 +24,7 @@ cmake ..
cmake --build . cmake --build .
''' '''
import midix #import midix
import sys import sys
prevphase = 0 prevphase = 0
@ -61,7 +61,7 @@ def BeatEvent():
#print("LINK BPM:",bpm) #print("LINK BPM:",bpm)
sys.stdout.write("Beat "+str(beats_str) + ' \r') sys.stdout.write("Beat "+str(beats_str) + ' \r')
sys.stdout.flush() sys.stdout.flush()
midix.SendUI('/beats', [beats_str]) #midix.SendUI('/beats', [beats_str])
#alink.SendOSCUI('/states/cc/'+str(ccnumber), [value]) #alink.SendOSCUI('/states/cc/'+str(ccnumber), [value])
currentbeat = float(beats_str) currentbeat = float(beats_str)
@ -84,7 +84,7 @@ def newtempo(tempo):
lnk.startStopSyncEnabled = True lnk.startStopSyncEnabled = True
bpm = tempo bpm = tempo
print(("New BPM", bpm)) print(("New BPM", bpm))
midix.SendUI('/bpm', [bpm]) #midix.SendUI('/bpm', [bpm])
else: else:
print("Link is disabled") print("Link is disabled")

View File

@ -196,7 +196,7 @@ def NoteOn(note):
gstt.Laser = note -24 gstt.Laser = note -24
print("Current Laser switched to", gstt.Laser) print("Current Laser switched to", gstt.Laser)
plugins.sendWSall("/status Laser " + str(gstt.Laser)) plugins.sendWSall("/status Laser " + str(gstt.Laser))
plugins.SendAll(["/scim", str(gstt.Laser), "1"]) plugins.SendAll(["/scim", str(gstt.Laser), 1])
def Scim(path, tags, args, source): def Scim(path, tags, args, source):
@ -268,9 +268,18 @@ def handler(oscpath, args):
if oscpath[1] == "pl": if oscpath[1] == "pl":
print("new pl for", "/"+oscpath[1]+"/"+oscpath[2]+"/"+oscpath[3], ":", args[0])
# was r.set(oscpath, args[0])
r.set("/"+oscpath[1]+"/"+oscpath[2]+"/"+oscpath[3], args[0])
if oscpath[0] == "pl" :
r.set(oscpath, args[0]) r.set(oscpath, args[0])
#/scene/scenenumber/start 0 or 1 #/scene/scenenumber/start 0 or 1
if oscpath[1] == "scene": if oscpath[1] == "scene":

View File

@ -40,6 +40,9 @@ Laser objects (name and convenient group of parameters for one or several point
"Destinations" : Tell for given Layer a scene/Laser ("destination"). "Destinations" : Tell for given Layer a scene/Laser ("destination").
Each Layer can have different destination (i.e to display same stuff on different laser) Each Layer can have different destination (i.e to display same stuff on different laser)
Redis :
- fromKey(keyname) Ask redis for a given key
- toKey(keyname,keyvalue) Write to redis key
OSC and plugins functions : OSC and plugins functions :
@ -325,6 +328,18 @@ def toRedis(n,a):
# Store encoded data in Redis # Store encoded data in Redis
return r.set(n,encoded) return r.set(n,encoded)
# Ask redis for a given key
def fromKey(keyname):
return r.get(keyname)
#
# Write to redis key
def toKey(keyname,keyvalue):
# Store encoded data in Redis
return r.set(keyname,keyvalue)
# #
# OSC functions # OSC functions

View File

@ -27,13 +27,15 @@ sys.path.append(ljpath +'/../libs3/')
#import from LJ #import from LJ
sys.path.append(ljpath +'/libs3/') sys.path.append(ljpath +'/libs3/')
sys.path.append('../libs3') sys.path.append('../libs3')
import lj23layers as lj import lj23layers as lj
import gstt import gstt
# link
currentBeat = 0.0
currentBPM = 0
screen_size = [700,700] screen_size = [700,700]
xy_center = [screen_size[0]/2,screen_size[1]/2] xy_center = [screen_size[0]/2,screen_size[1]/2]
@ -261,6 +263,17 @@ def sbilinear(samples, min, max):
#print ('linear',samparray) #print ('linear',samparray)
return samparray return samparray
'''
lj.fromKey("/midi/cc/1/0")
Linkbeat = lj.fromKey("/beat")
if Linkbeat != currentbeat:
currentbeat = Linkbeat
Linkbpm = lj.fromKey("/bpm")
if Linkbpm != currentbpm:
currentbpm = Linkbpm
'''
# #
# FXs # FXs
@ -268,9 +281,24 @@ def sbilinear(samples, min, max):
''' '''
Beatstep memory 2 Aurora simplex Beatstep memory 2 Aurora simplex
''' '''
def ScanV(LAY):
ccmidi0= int(lj.fromKey("/midi/cc/1/0"))
dots = []
arr = randlinear2(LAY['scandots'],0, LAY['lineSize']*ccmidi0/100)
#arr = slinear(LAY['scandots'], LAY['lineSize'], 0)
#print(arr)
for y in arr:
#print(y, LAY['lineSize'] )
dots.append((0 + LAY['lineSize']/2, y - LAY['lineSize']/2, 0))
return dots
''' Original
def ScanV(LAY): def ScanV(LAY):
dots = [] dots = []
@ -282,7 +310,7 @@ def ScanV(LAY):
dots.append((0 + LAY['lineSize']/2, y - LAY['lineSize']/2, 0)) dots.append((0 + LAY['lineSize']/2, y - LAY['lineSize']/2, 0))
return dots return dots
'''
def ScanH(LAY): def ScanH(LAY):
@ -293,8 +321,15 @@ def ScanH(LAY):
#print(dots) #print(dots)
return dots return dots
def Wave(LAY): def Wave(LAY):
global currentBeat
currentBPM =lj.fromKey("/bpm")
LinkBeat = lj.fromKey("/beat")
# New Beat ?
if LinkBeat != currentBeat:
currentBeat = LinkBeat
dots = [] dots = []
x = slinear(round(LAY['lineSize']), 0, LAY['lineSize']) x = slinear(round(LAY['lineSize']), 0, LAY['lineSize'])
@ -306,6 +341,19 @@ def Wave(LAY):
return dots return dots
''' Original
def Wave(LAY):
dots = []
x = slinear(round(LAY['lineSize']), 0, LAY['lineSize'])
y = ssine(round(LAY['lineSize']), LAY['wavefreq'], 0)
for ww in range(round(LAY['lineSize'])):
dots.append((50+x[ww], 50+y[ww] * LAY['radius'], 0))
return dots
'''
def Circle(LAY): def Circle(LAY):
dots = [] dots = []

View File

@ -149,7 +149,7 @@ import sys
import ast import ast
import os import os
import time,traceback import time,traceback
import midix, anim, user import midix
import log import log
ljpath = r'%s' % os.getcwd().replace('\\','/') ljpath = r'%s' % os.getcwd().replace('\\','/')
@ -207,6 +207,8 @@ viewer_distance = 2.2
inv = math.pi/2 inv = math.pi/2
ccmidi =[0]*15
print() print()
log.info('Startup...') log.info('Startup...')
# print("Arguments parsing if needed...") # print("Arguments parsing if needed...")
@ -272,6 +274,7 @@ else:
lj.Config(redisIP, ljscene, "aurora") lj.Config(redisIP, ljscene, "aurora")
import anim, user
ccs =[[0] * 140] *4 ccs =[[0] * 140] *4
@ -1118,12 +1121,17 @@ def AllFX():
# Generic generators : return dots list # Generic generators : return dots list
else: else:
dots = eval(LAY['FX']+"(LAY)") dots = eval(LAY['FX']+"(LAY)")
if LAY['FX'] != "Zero" or lent(dots) != 0: if LAY['FX'] != "Zero" or lent(dots) != 0:
#print(dots, LAY['color']) #print(dots, LAY['color'])
lj.rPolyLineOneColor(dots, c = LAY['color'], layer = l, closed = LAY['closed'], xpos = LAY['Xcoord'] + LAY['stepvals'][LAY['step']] - (LAY['lineSize']/2), ypos = Layer[l]['Ycoord'], resize = LAY['scale'] * audioR, rotx = LAY['Xrotdirec'], roty = LAY['Yrotdirec'], rotz = LAY['Zrotdirec']) for cc in range(15):
ccmidi[cc] = int(lj.fromKey("/midi/cc/1/"+str(cc)))
#print(ccmidi)
lj.rPolyLineOneColor(dots, c = LAY['color'], layer = l, closed = LAY['closed'], xpos = LAY['Xcoord'] + LAY['stepvals'][LAY['step']] - (LAY['lineSize']/2), ypos = Layer[l]['Ycoord'], resize = LAY['scale'] * audioR, rotx = LAY['Xrotdirec'], roty = LAY['Yrotdirec'], rotz = LAY['Zrotdirec'])
#lj.rPolyLineOneColor(dots, c = LAY['color'], layer = l, closed = LAY['closed'], xpos = LAY['Xcoord'] - (ccmidi[0]-64)*4 - (LAY['lineSize']/2), ypos = Layer[l]['Ycoord'] + (ccmidi[1]-64)*4, resize = LAY['scale'] * audioR * (ccmidi[2])/50, rotx = LAY['Xrotdirec']+(ccmidi[3]*3), roty = LAY['Yrotdirec']+(ccmidi[3]*3), rotz = LAY['Zrotdirec']+(ccmidi[3]*3))
else: else:
lj.rPolyLineOneColor((0,0,0), c = 0, layer = l, closed = LAY['closed'], xpos = LAY['Xcoord'] + LAY['stepvals'][LAY['step']] - (LAY['lineSize']/2), ypos = Layer[l]['Ycoord'], resize = LAY['scale'] * audioR, rotx = LAY['Xrotdirec'], roty = LAY['Yrotdirec'], rotz = LAY['Zrotdirec']) lj.rPolyLineOneColor((0,0,0), c = 0, layer = l, closed = LAY['closed'], xpos = LAY['Xcoord'] + LAY['stepvals'][LAY['step']] - (LAY['lineSize']/2), ypos = Layer[l]['Ycoord'], resize = LAY['scale'] * audioR, rotx = LAY['Xrotdirec'], roty = LAY['Yrotdirec'], rotz = LAY['Zrotdirec'])
# OSC cc Audio reactive audioR -> size # OSC cc Audio reactive audioR -> size
# Animation # Animation