diff --git a/LJ.conf b/LJ.conf index 538c147..ee32cb2 100644 --- a/LJ.conf +++ b/LJ.conf @@ -1,5 +1,5 @@ [General] -lasernumber = 2 +lasernumber = 1 debug = 0 ljayserverip = 0.0.0.0 wwwip = 192.168.2.43 @@ -11,11 +11,11 @@ autostart = artnet color = -1 type = DS1000 ip = 192.168.2.4 -kpps = 30156 +kpps = 25000 centerx = 0 centery = 0 -zoomx = 40.0 -zoomy = 40.0 +zoomx = 45.0 +zoomy = 45.0 sizex = 32000 sizey = 32000 finangle = 0.0 @@ -31,11 +31,11 @@ warpdest = [[-1500., 1500.], color = -1 type = LOCAL ip = 192.168.2.43 -kpps = 0 +kpps = 25000 centerx = 0 centery = 0 -zoomx = 40.0 -zoomy = 40.0 +zoomx = 45.0 +zoomy = 45.0 sizex = 32000 sizey = 32000 finangle = -30.0 @@ -43,19 +43,19 @@ swapx = -1 swapy = -1 lsteps = [ (1.0, 2),(0.25, 1), (0.75, 1), (1.0, 5)] warpdest = [[-1500., 1500.], - [ 1500., 1500.], - [ 1500.,-1500.], - [-1500.,-1500.]] + [ 1500., 1500.], + [ 1500.,-1500.], + [-1500.,-1500.]] [laser2] color = -1 type = LUKE400 -ip = 192.168.2.4 +ip = 192.168.2.6 kpps = 25000 centerx = 0 centery = 0 -zoomx = 40.0 -zoomy = 40.0 +zoomx = 45.0 +zoomy = 45.0 sizex = 30600 sizey = 32000 finangle = -4.0 @@ -74,8 +74,8 @@ ip = 192.168.1.5 kpps = 25000 centerx = 0 centery = 0 -zoomx = 40.0 -zoomy = 40.0 +zoomx = 45.0 +zoomy = 45.0 sizex = 32000 sizey = 32000 finangle = 0.0 diff --git a/LJ_template..conf b/LJ_template..conf new file mode 100644 index 0000000..7e839ef --- /dev/null +++ b/LJ_template..conf @@ -0,0 +1,113 @@ +[General] +lasernumber = 1 +debug = 0 +ljayserverip = 0.0.0.0 +wwwip = 192.168.2.43 +nozoscip = 127.0.0.1 +bhoroscip = 127.0.0.1 +autostart = artnet + +[laser0] +color = -1 +type = DS1000 +ip = 192.168.2.4 +kpps = 25000 +centerx = 0 +centery = 0 +zoomx = 45.0 +zoomy = 45.0 +sizex = 32000 +sizey = 32000 +finangle = 0.0 +swapx = 1 +swapy = -1 +lsteps = [ (1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] +warpdest = [[-1500., 1500.], + [ 1500., 1500.], + [ 1500.,-1500.], + [-1500.,-1500.]] + +[laser1] +color = -1 +type = LOCAL +ip = 192.168.2.43 +kpps = 25000 +centerx = 0 +centery = 0 +zoomx = 45.0 +zoomy = 45.0 +sizex = 32000 +sizey = 32000 +finangle = -30.0 +swapx = -1 +swapy = -1 +lsteps = [ (1.0, 2),(0.25, 1), (0.75, 1), (1.0, 5)] +warpdest = [[-1500., 1500.], + [ 1500., 1500.], + [ 1500.,-1500.], + [-1500.,-1500.]] + +[laser2] +color = -1 +type = LUKE400 +ip = 192.168.2.6 +kpps = 25000 +centerx = 0 +centery = 0 +zoomx = 45.0 +zoomy = 45.0 +sizex = 30600 +sizey = 32000 +finangle = -4.0 +swapx = -1 +swapy = -1 +lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] +warpdest = [[-1500., 1500.], + [ 1500., 1500.], + [ 1500.,-1500.], + [-1500.,-1500.]] + +[laser3] +color = -1 +type = LUKE400 +ip = 192.168.1.5 +kpps = 25000 +centerx = 0 +centery = 0 +zoomx = 45.0 +zoomy = 45.0 +sizex = 32000 +sizey = 32000 +finangle = 0.0 +swapx = -1 +swapy = -1 +lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] +warpdest = [[-1500., 1500.], + [ 1500., 1500.], + [ 1500.,-1500.], + [-1500.,-1500.]] + +[plugins] +plugins = { + "trckr": {"OSC": 8017, "command": "python3 plugins/VJing/trckr.py", "display": True}, + "aurora": {"OSC": 8090, "command": "python3 plugins/aurora/aurora.py", "display": True}, + "maxw": {"OSC": 8012, "command": "python3 plugins/maxwell.py", "display": True}, + "square": {"OSC": 8013, "command": "python3 plugins/square.py", "display": True}, + "custom1": {"OSC": 8014, "command": "python3 plugins/custom1.py", "display": True}, + "mitraille": {"OSC": 8015, "command": "python3 plugins/audio/mitraille.py", "display": True}, + "livecode": {"OSC": 8016, "command": "python3 plugins/livecoding.py", "display": True}, + "nozoid": {"OSC": 8003, "command": "python3 plugins/audio/nozoids3.py", "display": True}, + "glyph": {"OSC": 8004, "command": "python3 plugins/laserglyph.py", "display": True}, + "planet": {"OSC": 8005, "command": "python3 plugins/planetarium/main.py", "display": True}, + "words": {"OSC": 8006, "command": "python3 plugins/livewords3.py", "display": True}, + "cycl": {"OSC": 8007, "command": "python3 plugins/textcycl.py", "display": True}, + "simu": {"OSC": 8008, "command": "python plugins/pysimu.py", "display": False}, + "artnet": {"OSC": 8009, "command": "python3 libs3/artnet.py", "display": False}, + "livecode": {"OSC": 8016, "command": "python3 plugins/livecoding.py", "display": True}, + "ljpong": {"OSC": 8020, "command": "python plugins/games/ljpong/main.py", "display": True}, + "ljwars": {"OSC": 8021, "command": "python plugins/games/ljsw/main.py", "display": True}, + "audiogen": {"OSC": 8030, "command": "python3 plugins/audio/audiogen.py", "display": False}, + "midigen": {"OSC": 8031, "command": "python3 plugins/audio/midigen.py", "display": False}, + "viewgen": {"OSC": 8032, "command": "python3 plugins/audio/viewgen.py", "display": True} + } + diff --git a/README.md b/README.md index c550b4c..95eca6f 100644 --- a/README.md +++ b/README.md @@ -381,7 +381,7 @@ All these commands are available via OSC (port 8002) or websocket (port 9001) Use the same syntax if you send your pointlist directly in redis : "/pl/0/0" is the key and value is "[(150.0,..." -Every point must be : (x,y,color). Color is the hex color #FFFFFF in decimal. +Every point must be : (x,y,color). Color is the hex color like #FFFFFF in decimal. For new laserist : if point A is green and next point B is red, line AB will be red. /scale/X/lasernumber value diff --git a/libs3/cli.py b/libs3/cli.py index e2f019e..7af0f73 100644 --- a/libs3/cli.py +++ b/libs3/cli.py @@ -22,7 +22,7 @@ def handle(): #have to be done before importing bhorosc.py to get correct port assignment argsparser = argparse.ArgumentParser(description="LJ v0.8") argsparser.add_argument("-r","--redisIP",help="IP address to bind builtin servers (OSC and websocket) also must be the Redis server IP ",type=str) - argsparser.add_argument("-L","--Lasers",help="Number of lasers requested (Autodetected by default).",type=int) + argsparser.add_argument("-L","--Lasers",help="Number of lasers requested (1 by default).",type=int) argsparser.add_argument("-v","--verbose",help="Debug mode 0,1 or 2 (0 by default)",type=int) argsparser.add_argument("-x","--invx",help="Invert laser 0 X axis again",action="store_true") argsparser.add_argument("-y","--invy",help="Invert laser 0 Y axis again",action="store_true") @@ -113,7 +113,7 @@ def handle(): if args.Lasers != None: gstt.LaserNumber = args.Lasers else: - gstt.LaserNumber = -1 + gstt.LaserNumber = 1 if args.bhoroscIP != None: diff --git a/libs3/commands.py b/libs3/commands.py index a0fd8c0..133c2e7 100644 --- a/libs3/commands.py +++ b/libs3/commands.py @@ -188,8 +188,8 @@ def NoteOn(note): print("Only",gstt.LaserNumber,"lasers asked, you dum ass !") plugins.sendWSall("/redstatus No Laser"+str(note-24)) plugins.sendWSall("/laser "+str(gstt.LaserNumber-1)) + plugins.SendAll("/laser "+str(gstt.LaserNumber-1)) - else: gstt.Laser = note -24 plugins.sendWSall("/status Laser " + str(gstt.Laser)) @@ -282,12 +282,6 @@ def handler(oscpath, args): NoteOn(int(args[0])) - # regen index.html (python build.py) - elif oscpath[1] == "regen": - subprocess.Popen(["python", plugins.ljpath + "/webui/build.py"]) - - # todo - elif oscpath[1] == "CC": CC(int(args[0]), int(args[1])) @@ -342,13 +336,14 @@ def handler(oscpath, args): if oscpath[2] == "regen": print() - print("Regen www pages...") + print("Regen www pages with",gstt.wwwIP,"...") UpdateAllwww() if oscpath[2] == "IP": print() print("new server IP for www regen",args[0]) gstt.wwwIP = args[0] + settings.Write() if oscpath[2] == "debug": @@ -361,7 +356,6 @@ def handler(oscpath, args): if oscpath[2] == "rescan": print() - print("Rescanning DACs...") DAChecks() print("Done.") @@ -374,7 +368,11 @@ def handler(oscpath, args): plugins.Restart(args[0]) print() - + ''' regen index.html (python build.py) + elif oscpath[1] == "regen": + print("new ui IP", args[0]) + #subprocess.Popen(["python3", plugins.ljpath + "/webui/build.py"]) + ''' # @@ -518,21 +516,25 @@ def handler(oscpath, args): # Different useful codes for some commands # -def Updatewww(file_name): + +def Updatepage(file_name): print("updating", file_name) f=open(file_name,"r+") a=f.readlines() + #print a for line in a: - - if "var LJ = " in line == True: + + # python3 + IPline = ("var LJ = " in line) + if IPline == True: p=a.index(line) #so now we have the position of the line which to be modified - a[p]=" var LJ = 'ws://"+gstt.wwwIP+":9001/'\n" + a[p]=" var LJ = 'ws://"+gstt.wwwIP+":9001/'\n" #print(p, line, a[p]) - + f.seek(0) f.truncate() #ersing all data from the file f.close() @@ -543,20 +545,16 @@ def Updatewww(file_name): o.close() #now the modification is done in the file -# Change def UpdateAllwww(): - - print("Updating all www pages...") - Updatewww(gstt.ljpath+"/www/LJ.js") - Updatewww(gstt.ljpath+"/www/trckr/trckrcam1.html") - Updatewww(gstt.ljpath+"/www/simu.html") - Updatewww(gstt.ljpath+"/www/align.html") - Updatewww(gstt.ljpath+"/www/gen0.html") - Updatewww(gstt.ljpath+"/www/aur0.html") - Updatewww(gstt.ljpath+"/www/aur0s.html") - Updatewww(gstt.ljpath+"/www/aur1.html") - Updatewww(gstt.ljpath+"/www/auralls.html") - Updatewww(gstt.ljpath+"/www/index.html") + + print("Updating www files to use", gstt.wwwIP) + Updatepage(gstt.ljpath+"/www/LJ.js") + Updatepage(gstt.ljpath+"/www/trckr/trckrcam1.html") + Updatepage(gstt.ljpath+"/www/simu.html") + Updatepage(gstt.ljpath+"/www/align.html") + Updatepage(gstt.ljpath+"/www/auralls.html") + Updatepage(gstt.ljpath+"/www/index.html") + def isOpen(ip): @@ -589,7 +587,7 @@ def isconnected(IP): return ipup ''' -# autodetect connected DACs. Will change gstt.LaserNumber. One at least +# autodetect DACs in LJ.conf. def DAChecks(): gstt.dacs = [-1, -1, -1, -1] @@ -605,14 +603,14 @@ def DAChecks(): else: print("DAC", dac, "at", gstt.lasersIPS[dac], ": DOWN") - + ''' # At least one. if gstt.dacnumber == 0: gstt.dacs = [0, -1, -1, -1] gstt.dacnumber = 1 gstt.LaserNumber = gstt.dacnumber - + ''' ''' diff --git a/libs3/settings.py b/libs3/settings.py index 714d6b7..5d1ca24 100644 --- a/libs3/settings.py +++ b/libs3/settings.py @@ -79,4 +79,3 @@ def Read(): config = configparser.ConfigParser() config.read(gstt.ConfigName) - diff --git a/main.py b/main.py index c3c41fd..bf33162 100755 --- a/main.py +++ b/main.py @@ -155,17 +155,6 @@ NozoscPORTout = plugins.Port("nozoid") planetIPout = nozoscIP planetPORTout = plugins.Port("planet") -''' -# Bank0 OSC Client : to send OSC message to bank0 inport 8010 -bank0IPout = nozoscIP -bank0PORTout = plugins.Port("bank0") -''' - - -# -# DACs available checks ? -# - import socket @@ -433,7 +422,7 @@ if __name__ == '__main__': # Bug in 3.8.4 MacOS default multiprocessing start method is spawn. Spawn doesn't work properly set_start_method('fork') - print("") + print("gstt.LaserNumber", gstt.LaserNumber) if gstt.LaserNumber == -1: log.infog("Autodetected DACs mode") commands.DAChecks() @@ -485,7 +474,6 @@ if __name__ == '__main__': # Launch OSC thread listening to oscserver print("Launching OSC server...") print("at", oscserverIPin, "port",str(oscserverPORTin)) - #print("Will update webUI dac status every second") oscserver.addMsgHandler( "/noteon", commands.NoteOn) oscserver.addMsgHandler( "/scim", commands.Scim) oscserver.addMsgHandler( "/line1", commands.Line1) @@ -494,7 +482,6 @@ if __name__ == '__main__': oscserver.addMsgHandler("default", handler) _thread.start_new_thread(osc_thread, ()) - #print wserver print("Launching webUI Websocket server...") print("at", serverIP, "port",wsPORT) wserver.set_fn_new_client(new_client) diff --git a/www/align.html b/www/align.html index 416380b..61d4ff9 100644 --- a/www/align.html +++ b/www/align.html @@ -624,7 +624,7 @@ }, onClose: function () { - _WS.showline1('LJ2 DISCONNECTED '); + _WS.showline1('LJ DISCONNECTED '); document.getElementById("on").value = 0; document.getElementById("lstt/0").value = 0; document.getElementById("lstt/1").value = 0; @@ -673,6 +673,15 @@ divtext1.innerHTML=''+ res[1]+" "+res[2]+''; break; + case "/lack/": + console.log("/lack "+res[1]) + document.getElementById(res[0].slice(1)).value = res[1]; + break; + + case "/lstt/": + console.log("/lstt "+res[1]) + document.getElementById(res[0].slice(1)).value = res[1]; + break; default: //console.log("test "+res[0].slice(1)+" "+res[1]); diff --git a/www/auralls.html b/www/auralls.html index 8d2c6c2..3f15575 100644 --- a/www/auralls.html +++ b/www/auralls.html @@ -440,7 +440,7 @@ onClose: function () { - _WS.showline1('LJ2 DISCONNECTED '); + _WS.showline1('LJ DISCONNECTED '); //var divtext1 = document.getElementById('line1'); ///divtext1.innerHTML='DISCONNECTED'; document.getElementById("on").value = 0; @@ -497,9 +497,20 @@ //console.log(pl) pl2 = eval(pl.replace(/[()]/g, '')); break; + + case "/lack/": + console.log("/lack "+res[1]) + document.getElementById(res[0].slice(1)).value = res[1]; + break; + + case "/lstt/": + console.log("/lstt "+res[1]) + document.getElementById(res[0].slice(1)).value = res[1]; + break; + default: - //console.log("test "+res[0].slice(1)+" "+res[1]); + //console.log("default "+res[0].slice(1)+" "+res[1]); //document.getElementById(res[0].slice(1)).value = res[1]; //_WS.showstatus(e.data); } diff --git a/www/index.html b/www/index.html index 3196027..3101372 100644 --- a/www/index.html +++ b/www/index.html @@ -300,6 +300,16 @@ console.log("/laser "+res[1]) newlaser(res[1]) break; + + case "/lack/": + console.log("/lack "+res[1]) + document.getElementById(res[0].slice(1)).value = res[1]; + break; + + case "/lstt/": + console.log("/lstt "+res[1]) + document.getElementById(res[0].slice(1)).value = res[1]; + break; default: diff --git a/www/simu.html b/www/simu.html index 95ae133..e2d0c5c 100644 --- a/www/simu.html +++ b/www/simu.html @@ -287,6 +287,17 @@ case "/plpoi": //console.log("plpoint"); break; + + case "/lack/": + console.log("/lack "+res[1]) + document.getElementById(res[0].slice(1)).value = res[1]; + break; + + case "/lstt/": + console.log("/lstt "+res[1]) + document.getElementById(res[0].slice(1)).value = res[1]; + break; + default: //console.log("test "+res[0].slice(1)+" "+res[1]); document.getElementById(res[0].slice(1)).value = res[1]; diff --git a/www/trckr/trckrcam1.html b/www/trckr/trckrcam1.html index 0a5d65e..46b307d 100644 --- a/www/trckr/trckrcam1.html +++ b/www/trckr/trckrcam1.html @@ -378,7 +378,6 @@