Procházet zdrojové kódy

refactor: config to midi add:execute 401 via midi SLOW!!

micha před 1 rokem
rodič
revize
6721fa363a
4 změnil soubory, kde provedl 94 přidání a 22 odebrání
  1. 19 5
      _LibreLightDesk.py
  2. 3 2
      remote/apcmini.py
  3. 3 1
      tksdl/fix.py
  4. 69 14
      tksdl/midi.py

+ 19 - 5
_LibreLightDesk.py

@@ -379,7 +379,7 @@ def server1_loop():
         time.sleep(0.01)
 thread.start_new_thread(server1_loop,()) # SERVER
 # remote input - end
-chat.dbg=1
+#chat.dbg=1
 
 class DEVENT():
     def __init__(self):
@@ -430,6 +430,20 @@ def JSCB(x,sock=None):
                             #cb.cb(event)
                         if "CLEAR" == msg["event"]:
                             FIXTURES.clear()
+                        if "EXEC" == msg["event"]:
+                            print("  EXEC EXEC")
+                            val = -1
+                            exec_nr = -1
+                            try:
+                                if "VAL" in msg:
+                                    val = int(msg["VAL"])
+                                if "EXEC" in msg:
+                                    exec_nr = int(msg["EXEC"])
+                                if val >= 0 and exec_nr > 0:
+                                    print("PRESET_GOOO",exec_nr,val)
+                                    master.preset_go(exec_nr-1,xfade=None,val=val)
+                            except Exception as e:
+                                print("EXEC ERR:",e)
             #bounce msg
             #if sock:
             #    msg = json.dumps(msg)
@@ -4931,7 +4945,7 @@ if __run_main:
     data.append({"text":"---"})
     data.append({"text":"FIXTURE-EDITOR","name":"FIX-EDIT"})
     data.append({"text":"CONFIG"})
-    data.append({"text":"SDL-CONFIG"})
+    data.append({"text":"SDL-MIDI"})
     data.append({"text":"CLOCK"})
     data.append({"text":"SDL-DMX"})
     #data.append({"text":"SDL-FIX"})
@@ -4976,10 +4990,10 @@ if __run_main:
     #print(dir(cls))
     #print(cls)
     #sys.exit()
-    name="SDL-CONFIG"
+    name="SDL-MIDI"
     def sdl_config():
-        cmd="nohup /usr/bin/python3 /opt/LibreLight/Xdesk/tksdl/config.py &"
-        cmd="/usr/bin/python3 /opt/LibreLight/Xdesk/tksdl/config.py " #&"
+        cmd="nohup /usr/bin/python3 /opt/LibreLight/Xdesk/tksdl/midi.py &"
+        cmd="/usr/bin/python3 /opt/LibreLight/Xdesk/tksdl/midi.py " #&"
         print(cmd)
         #os.popen(cmd)
 

+ 3 - 2
remote/apcmini.py

@@ -59,13 +59,14 @@ RED_BLINK = 4
 class MAIN():
     def __init__(self):
         self.buf = []
+        self.dbg = 0
     def loop(self):
         release = 0
         if 0:
             r = 225
             for i in range(4):
                 for i in range(r):
-                    print(i)
+                    if self.dbg:print(i)
                     midi.write([144,40+i,GREEN])
                 time.sleep(0.2)
                 for i in range(r):
@@ -172,7 +173,7 @@ class MAIN():
 
                 #print(row,"in:",FN,"ch",ch,"raw",midi_date,_bin,btn_row,btn_col,[value])
                 #print([btn_row,btn_col,btn,value])
-                print([btn,value])
+                if self.dbg:print([btn,value])
 
                 self.buf.append([btn,value])
 

+ 3 - 1
tksdl/fix.py

@@ -791,7 +791,9 @@ while 1:
 
                             if mouse_grab_active:
                                 if mg.btn1.val.get():
-                                    msg = json.dumps([{"event":"FIXTURES","TYPE":"ENCODERS","FIX":str(FIX),"VAL":"click","ATTR":ATTR}]).encode("utf-8")
+                                    msg = json.dumps([{"event":"FIXTURES","TYPE":"ENCODERS"
+                                                        ,"FIX":str(FIX),"VAL":"click"
+                                                        ,"ATTR":ATTR}]).encode("utf-8")
                                     #print("  mouse_grab ",msg,mg.btn1.val.get())
                                     cmd_client.send(msg)
 

+ 69 - 14
tksdl/config.py → tksdl/midi.py

@@ -6,6 +6,7 @@ boot = time.time()
 import random
 import os
 import sys
+import json
 
 sys.path.insert(0,"/opt/LibreLight/Xdesk/")
 #print(sys.path)
@@ -18,7 +19,7 @@ print("file:",_file_path)
 
 import tool.movewin as movewin
 
-CAPTION = 'LibreLight SDL-CONFIG '
+CAPTION = 'LibreLight SDL-MIDI '
 movewin.check_is_started(CAPTION,_file_path,sleep=0)
 
 
@@ -28,7 +29,7 @@ import pygame.gfxdraw
 import pygame.font
 
 pg = pygame
-main_size=(600,500)
+main_size=(500,100)
 window = pygame.display.set_mode(main_size,pg.RESIZABLE,32)
 
 pg = pygame
@@ -46,7 +47,6 @@ CAPTION += ':{}'.format(random.randint(100,999))
 import tool.git as git
 CAPTION += git.get_all()
 
-
 _id = movewin.winfo(CAPTION)
 c1 = movewin.movewin(_id,200,50)
 os.system(c1)
@@ -55,6 +55,10 @@ os.system(c1)
 
 pg.display.set_caption(CAPTION)
 
+import lib.zchat as chat
+cmd_client = chat.Client(port=30003)
+
+
 font0  = pygame.font.SysFont("freesans",10)
 font0b = pygame.font.SysFont("freesansbold",10)
 font   = pygame.font.SysFont("freemonobold",22)
@@ -139,7 +143,32 @@ except Exception as e:
 #        for m in buf:
 #            print("-> midi:",m)
 
+def remap_midi_row(m,row_len=8):
+    btn,val=m
+    row_def = []
+    row_def.append([56,63])
+    row_def.append([48,55])
+    row_def.append([40,47])
+    row_def.append([32,39])
+    row_def.append([24,31])
+    row_def.append([16,23])
+    row_def.append([8,15])
+    row_def.append([0,7])
+    row_def.append([64,71])
+
+    b2=-1
+    v2=0
+
+    for i,b in enumerate(row_def):
+        #print(i,btn,b,val)
+        if btn >= b[0] and btn <= b[1]:
+            b2 = btn-b[0]
+            btn2 = (i)*row_len + b2+1
+            #print("btn2",btn2,val)
+            return [btn2,val]
+            break
 buf = []
+buf2 = []
 while 1:
     fps +=1
     t = time.time()
@@ -157,11 +186,11 @@ while 1:
     window.fill((5,5,5))
     pygame.draw.rect(window,(0,0,0),[0,0,main_size[0],main_size[1]])
 
-    fr = font22.render("FPS:"+str(fps_old)  ,1, (200,200,200))
-    window.blit(fr,(10,10 ))
+    fr = font15.render("FPS:"+str(fps_old)  ,1, (200,200,200))
+    window.blit(fr,(10,2 ))
 
-    fr = font22.render("SDL-CONFIG "  ,1, (200,200,200))
-    window.blit(fr,(100,10 ))
+    fr = font15.render("SDL-MIDI "  ,1, (200,200,200))
+    window.blit(fr,(100,2 ))
 
 
 
@@ -169,18 +198,44 @@ while 1:
         if apc_main.buf:
             buf = apc_main.buf[:]
             apc_main.buf = []
+            buf2=[]
+            msgs = []
+            for m in buf:
+                if m[0] > 1000:
+                    continue
+                btn,val = remap_midi_row(m,row_len=10)
+                btn+=400
+                msg={"event":"EXEC","EXEC":str(btn),"VAL":str(val)}
+                msgs.append(msg)
+                #print("msg: ",msg)
+                buf2.append(["EXEC",str(btn),val])
+
+            if msgs:
+                msgs = json.dumps(msgs).encode("utf-8")
+                cmd_client.send(msgs)
+                    
     except Exception as e:
         print("midi",e)
 
     r = 10
-    fr = font22.render("MIDI: APCMINI"  ,1, (200,100,200))
-    window.blit(fr,(330,30+r ))
-    r+=30
+    fr = font15.render("MIDI: APCMINI"  ,1, (200,100,200))
+    window.blit(fr,(330,10+r ))
+    r+=10
     for m in buf:
         #print("-> midi:",m)
-        fr = font22.render("MIDI:"+str(m)  ,1, (200,200,0))
-        window.blit(fr,(330,30+r ))
-        r+=30
+        fr = font15.render("MIDI:"+str(m)  ,1, (200,200,0))
+        window.blit(fr,(330,10+r ))
+        r+=10
+
+    r = 10
+    fr = font15.render("EXEC:"  ,1, (200,100,200))
+    window.blit(fr,(10,10+r ))
+    r+=10
+    for m in buf2:
+        #print("-> midi:",m)
+        fr = font15.render("SEND:"+str(m)  ,1, (200,200,0))
+        window.blit(fr,(10,10+r ))
+        r+=10
 
     if 0: #timer balken
         pos = [160,110,70+80,20]
@@ -276,5 +331,5 @@ while 1:
     if resize_changed:# = True
         screen = pygame.display.set_mode(scrsize,pg.RESIZABLE)
 
-    clock.tick(30)
+    clock.tick(10)