Browse Source

change FX3 add BASE,WING... event_fx3

micha 1 day ago
parent
commit
3eb9d218dc
4 changed files with 186 additions and 69 deletions
  1. 2 0
      lib/meta.py
  2. 2 56
      lib/tkevent.py
  3. 180 11
      tkgui/FX3.py
  4. 2 2
      tool/tk_elm.py

+ 2 - 0
lib/meta.py

@@ -360,6 +360,8 @@ fx3_grid_cfg["START:"]  = ValueBuffer
 fx3_grid_cfg["SHUFFLE:"] = ValueBuffer 
 fx3_grid_cfg["DIR:"]     = ValueBuffer 
 fx3_grid_cfg["INVERT:"]  = ValueBuffer 
+fx3_grid_cfg["WING:"]  = ValueBuffer 
+fx3_grid_cfg["BASE:"]  = ValueBuffer 
 
 fx3.labels =[] 
 for i,f in fx3_grid_cfg.items():

+ 2 - 56
lib/tkevent.py

@@ -498,62 +498,8 @@ class tk_event_fx():
 
 
 
-    def command_fx3(self,event,mode=""):
-        prm = []
-        ct  = ""
-        print(" --", self.attr)
-        fx3_grid = MAIN.meta.fx3_grid # OptionBuffer()
-        if self.attr not in fx3_grid:
-            fx_data = {}
-            if self.attr == "CIRCLE":
-                for k,v in fx3_grid.items():
-                    if k.startswith("ATTR"):
-                        print(self.attr,k,v)
-            if self.attr == "PLAY":
-                for k,v in fx3_grid.items():
-                    vv = v.val()
-                    k_name , k_nr = k.split(":")
-                    if k_nr not in fx_data:
-                        fx_data[k_nr] = {}
-                    fx_data[k_nr][k_name] = vv
-                    #print("**",k,vv,v)
-                    
-                for k,v in fx_data.items():
-                    if "ATTR" in v and v["ATTR"] != " ":
-                        print("HH",k,v)
-
-            print()
-            return
-        fx_func = MAIN.meta.OptionBuffer()
-        if self.attr.startswith("ATTR:"):
-            col = self.attr.split(":")[1]
-            fx_func1 = fx3_grid["GRP:"+str(col)]
-            GRP = fx_func1.val()
-            if GRP != self.ATTR_GRP:
-                self.ATTR_GRP = GRP
-                fx_func1.val(GRP)
-                fx3_grid[self.attr] = MAIN.meta.Optionbuffer_create_ATTR(GRP)
-            fx_func = fx3_grid[self.attr] 
-            print(fx_func.data)
-            fx_func.data["wrap"] = 1
-        else: 
-            fx_func = fx3_grid[self.attr]
-            fx_func.data["wrap"] = 1
-
-        print("func",fx_func,fx_func.val())
-
-        if event.num == 3:
-            fx_func.reset()
-        elif event.num == 4:
-            fx_func.inc()
-        elif event.num == 5:
-            fx_func.dec()
-        v=fx_func.val()
-        #print(v)
-        #print(self.elem)
-        self.elem["text"] = v
-        return
-
+    def delete___command_fx3(self,event,mode=""):
+        pass
 
     def command(self,event,mode=""):       
         cprint("tkevent.tk_event_fx.command")

+ 180 - 11
tkgui/FX3.py

@@ -97,14 +97,132 @@ def basic():
         k = "DIR:{}".format(i+1)
         MAIN.meta.fx3_grid[k].val(1)
         MAIN.meta.fx3_grid[k].data["init_value"] = 1
-        MAIN.meta.fx3_grid[k].data["max"] = 0
+        MAIN.meta.fx3_grid[k].data["max"] = 1
 
         k = "INVERT:{}".format(i+1)
         MAIN.meta.fx3_grid[k].val(1)
         MAIN.meta.fx3_grid[k].data["init_value"] = 1
         MAIN.meta.fx3_grid[k].data["max"] = 1
+
+        k = "BASE:{}".format(i+1)
+        MAIN.meta.fx3_grid[k].val(1)
+        MAIN.meta.fx3_grid[k].data["init_value"] = 0
+        MAIN.meta.fx3_grid[k].data["max"] = 1
+        MAIN.meta.fx3_grid[k].data["min"] = -1
 basic()
 
+class tk_event_fx():
+    """ global input event Handeler for short cut's ... etc
+    """
+    def __init__(self,fix,elem,attr=None,data=None,mode=None):
+        self.fix = fix
+        self.data = data # gui / master
+        self.attr = attr
+        self.elem = elem
+        self.mode = mode
+        self.ATTR_GRP = ""
+
+    def command_fx3(self,event,mode=""):
+        prm = []
+        ct  = ""
+        print(" --", self.attr)
+        fx3_grid = MAIN.meta.fx3_grid # OptionBuffer()
+        if self.attr == "START":
+
+            _fx3_jdata = []
+            for k,v in fx3_grid.items(): # re-order fx3_grid to command
+                vv = v.val()
+                kk,ii = k.split(":")
+                ii = int(ii)-1
+                if len(_fx3_jdata) <= ii: #extand list
+                    _fx3_jdata.append({}) 
+                _fx3_jdata[ii][kk] = vv 
+                       
+            for i in _fx3_jdata: #info
+                print(i)
+
+            msg=json.dumps(_fx3_jdata).encode("utf-8")
+            cprint("SEND FX3:",msg,color="green")
+            cmd_client.send(msg)
+
+        if self.attr not in fx3_grid:
+            fx_data = {}
+            if self.attr == "CIRCLE":
+                for k,v in fx3_grid.items():
+                    if k.startswith("ATTR"):
+                        print(self.attr,k,v)
+            if self.attr == "PLAY":
+                for k,v in fx3_grid.items():
+                    vv = v.val()
+                    k_name , k_nr = k.split(":")
+                    if k_nr not in fx_data:
+                        fx_data[k_nr] = {}
+                    fx_data[k_nr][k_name] = vv
+                    #print("**",k,vv,v)
+                    
+                for k,v in fx_data.items():
+                    print("fx33",k,v)
+                    if "ATTR" in v and v["ATTR"] != " ":
+                        print("HH",k,v)
+
+            print()
+            return
+        fx_func = MAIN.meta.OptionBuffer()
+        if self.attr.startswith("ATTR:"):
+            col = self.attr.split(":")[1]
+            fx_func1 = fx3_grid["GRP:"+str(col)]
+            GRP = fx_func1.val()
+            if GRP != self.ATTR_GRP:
+                self.ATTR_GRP = GRP
+                fx_func1.val(GRP)
+                fx3_grid[self.attr] = MAIN.meta.Optionbuffer_create_ATTR(GRP)
+            fx_func = fx3_grid[self.attr] 
+            print(fx_func.data)
+            fx_func.data["wrap"] = 1
+        else: 
+            fx_func = fx3_grid[self.attr]
+            fx_func.data["wrap"] = 1
+
+        print("func",fx_func,fx_func.val())
+
+        if event.num == 3:
+            fx_func.reset()
+        elif event.num == 4:
+            fx_func.inc()
+        elif event.num == 5:
+            fx_func.dec()
+        v=fx_func.val()
+        #print(v)
+        #print(self.elem)
+        self.elem["text"] = v
+        return
+
+
+    def command(self,event,mode=""):       
+        cprint("tkevent.tk_event_fx.command")
+        cprint(" ",self.mode)
+        prm = None
+        ct = None
+        if self.mode == "FX-3":
+            return self.command_fx3(event,mode=mode)
+
+    def cb(self,event):
+        cprint("tkevent.EVENT_fx.cb:",self.attr,self.mode,event,color='yellow')
+        cprint(["type",event.type,"num",event.num])
+        try:
+            change = 0
+
+            if self.mode.startswith("FX"):
+                self.command(event)
+                return 0
+
+        except Exception as e:
+            cprint("== cb EXCEPT",e,color="red")
+            cprint("Error on line {}".format(sys.exc_info()[-1].tb_lineno),color="red")
+            cprint(''.join(traceback.format_exception(None, e, e.__traceback__)),color="red")
+        return 1 
+
+
 def motion(code="circle"):
     #basic()
 
@@ -131,30 +249,73 @@ def motion(code="circle"):
         MAIN.meta.fx3_grid[k].val("SIN")
         k = "TYPE:2" 
         MAIN.meta.fx3_grid[k].val("COS")
+
+        k = "SIZE:1" 
+        MAIN.meta.fx3_grid[k].val(100)
+        k = "SIZE:2" 
+        MAIN.meta.fx3_grid[k].val(100)
+
+        k = "BASE:1" 
+        MAIN.meta.fx3_grid[k].val(0)
+        k = "BASE:2" 
+        MAIN.meta.fx3_grid[k].val(0)
+
     if code == "pan":
         k = "TYPE:1" 
         MAIN.meta.fx3_grid[k].val("SIN")
         k = "TYPE:2" 
+        MAIN.meta.fx3_grid[k].val("COS")
+        k = "TYPE:3" 
+        MAIN.meta.fx3_grid[k].val("-")
+        k = "TYPE:4" 
         MAIN.meta.fx3_grid[k].val("-")
+
+        k = "SIZE:1" 
+        MAIN.meta.fx3_grid[k].val(100)
+        k = "SIZE:2" 
+        MAIN.meta.fx3_grid[k].val(0)
+
+        k = "BASE:1" 
+        MAIN.meta.fx3_grid[k].val(0)
+        k = "BASE:2" 
+        MAIN.meta.fx3_grid[k].val(0)
     if code == "tilt":
         k = "TYPE:1" 
-        MAIN.meta.fx3_grid[k].val("-")
+        MAIN.meta.fx3_grid[k].val("SIN")
         k = "TYPE:2" 
         MAIN.meta.fx3_grid[k].val("COS")
+        k = "TYPE:3" 
+        MAIN.meta.fx3_grid[k].val("-")
+        k = "TYPE:4" 
+        MAIN.meta.fx3_grid[k].val("-")
+
+        k = "SIZE:1" 
+        MAIN.meta.fx3_grid[k].val(0)
+        k = "SIZE:2" 
+        MAIN.meta.fx3_grid[k].val(100)
+
+        k = "BASE:1" 
+        MAIN.meta.fx3_grid[k].val(0)
+        k = "BASE:2" 
+        MAIN.meta.fx3_grid[k].val(0)
 
 
 def size(val=255):
     for i in range(4):
         k = "SIZE:{}".format(i+1)
+        kt = "TYPE:{}".format(i+1)
         print("  ",k,val)
-        MAIN.meta.fx3_grid[k].val(val)
+        if MAIN.meta.fx3_grid[kt].val() not in ["STATIC","-"]:
+            MAIN.meta.fx3_grid[k].val(val)
     __refresh_fx3(_filter="SIZE")
 
 def speed(val=255):
     for i in range(4):
         k = "SPEED:{}".format(i+1)
+        kt = "TYPE:{}".format(i+1)
         print("  ",k,val)
-        MAIN.meta.fx3_grid[k].val(val)
+        if MAIN.meta.fx3_grid[kt].val() not in ["STATIC","-"]:
+            MAIN.meta.fx3_grid[k].val(val)
     __refresh_fx3(_filter="SPEED")
 
 def rgb(code="red"):
@@ -177,13 +338,20 @@ def rgb(code="red"):
     MAIN.meta.fx3_grid[k].val("BLUE")
 
     k = "TYPE:1" 
-    MAIN.meta.fx3_grid[k].val("255")
+    MAIN.meta.fx3_grid[k].val("STATIC") #"255")
     k = "TYPE:2" 
-    MAIN.meta.fx3_grid[k].val("255")
+    MAIN.meta.fx3_grid[k].val("STATIC") #255")
     k = "TYPE:3" 
-    MAIN.meta.fx3_grid[k].val("255")
+    MAIN.meta.fx3_grid[k].val("STATIC") #255")
     k = "TYPE:4" 
-    MAIN.meta.fx3_grid[k].val("255")
+    MAIN.meta.fx3_grid[k].val("STATIC") #255")
+
+    k = "BASE:1" 
+    MAIN.meta.fx3_grid[k].val(-1)
+    k = "BASE:2" 
+    MAIN.meta.fx3_grid[k].val(-1)
+    k = "BASE:3" 
+    MAIN.meta.fx3_grid[k].val(-1)
 
     if code == "red":
         k = "TYPE:1" 
@@ -265,7 +433,7 @@ def __refresh_fx3(_filter=""):
             v2 = MAIN.meta.fx3_grid[comm].val()
             v1 = b["text"]
             if "ATTR" in comm or "GRP" in comm:
-                print([comm,v1,v2,b])
+                pass #print("A",[comm,v1,v2,b])
             if str(v2) != str(v1):
                 print(" change")
                 #print([comm,b,v1,v2])
@@ -336,7 +504,7 @@ def _draw_fx3(frame,c,r,gui,mode="FX"):
                 xcb(event) #,data)
             return XXX
 
-        _cb = tkevent.tk_event_fx(fix=0,elem=b,attr=comm,data=gui,mode=mode).cb
+        _cb = tk_event_fx(fix=0,elem=b,attr=comm,data=gui,mode=mode).cb
         _comm = comm
         _b = b
         XXX = _XXX(_cb,_comm,_b)
@@ -407,7 +575,8 @@ def _draw_fx(frame,c,r,gui,mode="FX"):
 
         ct.elem[comm] = b
         ct.val[comm] = 0
-        b.bind("<Button>",tkevent.tk_event_fx(fix=0,elem=b,attr=comm,data=gui,mode=mode).cb)
+        #b.bind("<Button>",tkevent.tk_event_fx(fix=0,elem=b,attr=comm,data=gui,mode=mode).cb)
+        b.bind("<Button>",tk_event_fx(fix=0,elem=b,attr=comm,data=gui,mode=mode).cb)
 
         if comm == "REC-FX":
             b["bg"] = "grey"

+ 2 - 2
tool/tk_elm.py

@@ -118,8 +118,8 @@ class ELEM_BUF():
         self.val.set(0)
 
     def press(self):
-        print()
-        print("ELEM_BUF.press",[self.name,self.type,self.val.get()])
+        #print()
+        #print("ELEM_BUF.press",[self.name,self.type,self.val.get()])
         if self.type == "fader":
             self.inc(self.increment)