UI upgrades
24
LJ.conf
@ -1,5 +1,5 @@
|
|||||||
[General]
|
[General]
|
||||||
lasernumber = 4
|
lasernumber = 1
|
||||||
debug = 0
|
debug = 0
|
||||||
ljayserverip = 127.0.0.1
|
ljayserverip = 127.0.0.1
|
||||||
nozoscip = 127.0.0.1
|
nozoscip = 127.0.0.1
|
||||||
@ -26,7 +26,7 @@ warpdest = [[-1500., 1500.],
|
|||||||
|
|
||||||
[laser1]
|
[laser1]
|
||||||
color = -1
|
color = -1
|
||||||
ip = 192.168.1.5
|
ip = 192.168.1.3
|
||||||
kpps = 25000
|
kpps = 25000
|
||||||
centerx = 506
|
centerx = 506
|
||||||
centery = 413
|
centery = 413
|
||||||
@ -39,9 +39,9 @@ swapx = -1
|
|||||||
swapy = -1
|
swapy = -1
|
||||||
lsteps = [ (1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)]
|
lsteps = [ (1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)]
|
||||||
warpdest = [[-1500., 1500.],
|
warpdest = [[-1500., 1500.],
|
||||||
[ 1500., 1500.],
|
[ 1500., 1500.],
|
||||||
[ 1500.,-1500.],
|
[ 1500.,-1500.],
|
||||||
[-1500.,-1500.]]
|
[-1500.,-1500.]]
|
||||||
|
|
||||||
[laser2]
|
[laser2]
|
||||||
color = -1
|
color = -1
|
||||||
@ -58,15 +58,15 @@ swapx = 1
|
|||||||
swapy = 1
|
swapy = 1
|
||||||
lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)]
|
lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)]
|
||||||
warpdest = [[-1500., 1500.],
|
warpdest = [[-1500., 1500.],
|
||||||
[ 1500., 1500.],
|
[ 1500., 1500.],
|
||||||
[ 1500.,-1500.],
|
[ 1500.,-1500.],
|
||||||
[-1500.,-1500.]]
|
[-1500.,-1500.]]
|
||||||
|
|
||||||
[laser3]
|
[laser3]
|
||||||
color = -1
|
color = -1
|
||||||
ip = 192.168.1.4
|
ip = 192.168.1.4
|
||||||
kpps = 25000
|
kpps = 25000
|
||||||
centerx = 0
|
centerx = -12
|
||||||
centery = 0
|
centery = 0
|
||||||
zoomx = 38.0
|
zoomx = 38.0
|
||||||
zoomy = 26.0
|
zoomy = 26.0
|
||||||
@ -77,7 +77,7 @@ swapx = -1
|
|||||||
swapy = -1
|
swapy = -1
|
||||||
lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)]
|
lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)]
|
||||||
warpdest = [[-1500., 1500.],
|
warpdest = [[-1500., 1500.],
|
||||||
[ 1500., 1500.],
|
[ 1500., 1500.],
|
||||||
[ 1500.,-1500.],
|
[ 1500.,-1500.],
|
||||||
[-1500.,-1500.]]
|
[-1500.,-1500.]]
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ Sam Neurohack
|
|||||||
|
|
||||||
import math
|
import math
|
||||||
import redis
|
import redis
|
||||||
from OSC import OSCServer, OSCClient, OSCMessage
|
#from OSC import OSCServer, OSCClient, OSCMessage
|
||||||
|
|
||||||
redisIP = '127.0.0.1'
|
redisIP = '127.0.0.1'
|
||||||
r = redis.StrictRedis(host=redisIP, port=6379, db=0)
|
r = redis.StrictRedis(host=redisIP, port=6379, db=0)
|
||||||
@ -39,6 +39,7 @@ oscmsg = OSCMessage()
|
|||||||
osclientlj.connect((redisIP, 8002))
|
osclientlj.connect((redisIP, 8002))
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
'''
|
||||||
def Send(oscaddress,oscargs=''):
|
def Send(oscaddress,oscargs=''):
|
||||||
|
|
||||||
oscmsg = OSCMessage()
|
oscmsg = OSCMessage()
|
||||||
@ -53,7 +54,7 @@ def Send(oscaddress,oscargs=''):
|
|||||||
print ('Connection to LJ refused : died ?')
|
print ('Connection to LJ refused : died ?')
|
||||||
pass
|
pass
|
||||||
#time.sleep(0.001
|
#time.sleep(0.001
|
||||||
|
'''
|
||||||
|
|
||||||
def WebStatus(message):
|
def WebStatus(message):
|
||||||
Send("/status",message)
|
Send("/status",message)
|
||||||
@ -249,7 +250,7 @@ def rPolyLineOneColor(xy_list, c, PL , closed, xpos = 0, ypos =0, resize =0.7, r
|
|||||||
|
|
||||||
|
|
||||||
def LinesPL(PL):
|
def LinesPL(PL):
|
||||||
print "Stupido !! your code is to old : use DrawPL() instead of LinesPL()"
|
print ("Stupido !! your code is to old : use DrawPL() instead of LinesPL()")
|
||||||
DrawPL(PL)
|
DrawPL(PL)
|
||||||
|
|
||||||
def DrawPL(PL):
|
def DrawPL(PL):
|
||||||
@ -311,4 +312,4 @@ def Text(message,c, PL, xpos, ypos, resize, rotx, roty, rotz):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
96
clients/planetarium/hipnames
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
Acamar, 13847
|
||||||
|
Groombridge 1830, 57939
|
||||||
|
Achernar, 7588
|
||||||
|
Hadar, 68702
|
||||||
|
Acrux, 60718
|
||||||
|
Hamal, 9884
|
||||||
|
Adhara, 33579
|
||||||
|
Izar, 72105
|
||||||
|
Agena, 68702
|
||||||
|
Kapteyn's star, 24186
|
||||||
|
Albireo, 95947
|
||||||
|
Kaus Australis, 90185
|
||||||
|
Alcor, 65477
|
||||||
|
Kocab, 72607
|
||||||
|
Alcyone, 17702
|
||||||
|
Kruger,60, 110893
|
||||||
|
Aldebaran, 21421
|
||||||
|
Luyten's star, 36208
|
||||||
|
Alderamin, 105199
|
||||||
|
Markab, 113963
|
||||||
|
Algenib, 1067
|
||||||
|
Megrez, 59774
|
||||||
|
Algieba, 50583
|
||||||
|
Menkar, 14135
|
||||||
|
Algol, 14576
|
||||||
|
Merak, 53910
|
||||||
|
Alhena, 31681
|
||||||
|
Mintaka, 25930
|
||||||
|
Alioth, 62956
|
||||||
|
Mira, 10826
|
||||||
|
Alkaid, 67301
|
||||||
|
Mirach, 5447
|
||||||
|
Almaak, 9640
|
||||||
|
Mirphak, 15863
|
||||||
|
Alnair, 109268
|
||||||
|
Mizar, 65378
|
||||||
|
Alnath, 25428
|
||||||
|
Nihal, 25606
|
||||||
|
Alnilam, 26311
|
||||||
|
Nunki, 92855
|
||||||
|
Alnitak, 26727
|
||||||
|
Phad, 58001
|
||||||
|
Alphard, 46390
|
||||||
|
Pleione, 17851
|
||||||
|
Alphekka, 76267
|
||||||
|
Polaris, 11767
|
||||||
|
Alpheratz, 677
|
||||||
|
Pollux, 37826
|
||||||
|
Alshain, 98036
|
||||||
|
Procyon, 37279
|
||||||
|
Altair, 97649
|
||||||
|
Proxima, 70890
|
||||||
|
Ankaa, 2081
|
||||||
|
Rasalgethi, 84345
|
||||||
|
Antares, 80763
|
||||||
|
Rasalhague, 86032
|
||||||
|
Arcturus, 69673
|
||||||
|
Red,Rectangle, 30089
|
||||||
|
Arneb, 25985,
|
||||||
|
Regulus, 49669
|
||||||
|
Babcock's star, 112247
|
||||||
|
Rigel, 24436
|
||||||
|
Barnard's,star, 87937
|
||||||
|
Rigil Kent, 71683
|
||||||
|
Bellatrix, 25336
|
||||||
|
Sadalmelik, 109074
|
||||||
|
Betelgeuse, 27989
|
||||||
|
Saiph, 27366
|
||||||
|
Campbell's star, 96295
|
||||||
|
Scheat, 113881
|
||||||
|
Canopus, 30438
|
||||||
|
Shaula, 85927
|
||||||
|
Capella, 24608
|
||||||
|
Shedir, 3179
|
||||||
|
Caph, 746
|
||||||
|
Sheliak, 92420
|
||||||
|
Castor, 36850
|
||||||
|
Sirius, 32349
|
||||||
|
Cor Caroli, 63125
|
||||||
|
Spica, 65474
|
||||||
|
Cyg X-1, 98298
|
||||||
|
Tarazed, 97278
|
||||||
|
Deneb, 102098
|
||||||
|
Thuban, 68756
|
||||||
|
Denebola, 57632
|
||||||
|
Unukalhai, 77070
|
||||||
|
Diphda, 3419
|
||||||
|
Van,Maanen 2, 3829
|
||||||
|
Dubhe, 54061
|
||||||
|
Vega, 91262
|
||||||
|
Enif, 107315
|
||||||
|
Vindemiatrix, 63608
|
||||||
|
Etamin, 87833
|
||||||
|
Zaurak, 18543
|
||||||
|
Fomalhaut, 113368
|
||||||
|
3C 273, 60936
|
@ -46,6 +46,7 @@ def OSCstart():
|
|||||||
#osc_udp_client(redisIP, 8002, "LJ 8002")
|
#osc_udp_client(redisIP, 8002, "LJ 8002")
|
||||||
|
|
||||||
def OSCframe():
|
def OSCframe():
|
||||||
|
#print("OSCprocess")
|
||||||
osc_process()
|
osc_process()
|
||||||
|
|
||||||
# Properly close the system. Todo
|
# Properly close the system. Todo
|
||||||
@ -55,14 +56,11 @@ def OSCstop():
|
|||||||
|
|
||||||
def Send(oscaddress,oscargs=''):
|
def Send(oscaddress,oscargs=''):
|
||||||
|
|
||||||
oscmsg = OSCMessage()
|
|
||||||
oscmsg.setAddress(oscaddress)
|
|
||||||
oscmsg.append(oscargs)
|
|
||||||
|
|
||||||
#print ("sending to bhorosc : ",oscmsg)
|
|
||||||
try:
|
try:
|
||||||
msg = oscbuildparse.OSCMessage(oscaddress, None, [oscargs])
|
msg = oscbuildparse.OSCMessage(oscaddress, None, [oscargs])
|
||||||
osc_send(msg, "LJ 8002")
|
osc_send(msg, "LJ 8002")
|
||||||
|
OSCframe()
|
||||||
|
|
||||||
except:
|
except:
|
||||||
print ('Connection to LJ refused : died ?')
|
print ('Connection to LJ refused : died ?')
|
||||||
pass
|
pass
|
||||||
@ -82,11 +80,6 @@ osc_udp_server("0.0.0.0", 3724, "anotherserver")
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ASCII_GRAPHICS = [
|
ASCII_GRAPHICS = [
|
||||||
|
|
||||||
# caracteres corrects
|
# caracteres corrects
|
||||||
@ -341,4 +334,4 @@ def Text(message,c, PL, xpos, ypos, resize, rotx, roty, rotz):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
# coding=UTF-8
|
# coding=UTF-8
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@ -5,7 +6,7 @@ Multi Laser planetarium in python3 for LJ.
|
|||||||
v0.01
|
v0.01
|
||||||
Sam Neurohack
|
Sam Neurohack
|
||||||
|
|
||||||
Accuracy tested against apparent data and starchart at https://www.calsky.com/cs.cgi?cha=7&sec=3&sub=2
|
Accuracy could be tested against apparent data and starchart at https://www.calsky.com/cs.cgi?cha=7&sec=3&sub=2
|
||||||
Remember to set the same observer position and time.
|
Remember to set the same observer position and time.
|
||||||
|
|
||||||
See Readme for more information
|
See Readme for more information
|
||||||
@ -13,8 +14,10 @@ See Readme for more information
|
|||||||
|
|
||||||
Todo:
|
Todo:
|
||||||
|
|
||||||
|
- use debug mode and check altaz calculated values against online sites.
|
||||||
- Validate aa2radec() with online calculator. Rewrite it to remove need for Astropy.
|
- Validate aa2radec() with online calculator. Rewrite it to remove need for Astropy.
|
||||||
- Findout how to use OSC in python 3.
|
- Findout how to use OSC in python 3.
|
||||||
|
-
|
||||||
- Code WebUI page.
|
- Code WebUI page.
|
||||||
- UpdateStars() in each laser sky. Get magnitude. See UpdateSolar for example.
|
- UpdateStars() in each laser sky. Get magnitude. See UpdateSolar for example.
|
||||||
- All Draw operations should also check visibility in the given laser altitude range.
|
- All Draw operations should also check visibility in the given laser altitude range.
|
||||||
@ -39,7 +42,11 @@ from skyfield.data import hipparcos
|
|||||||
|
|
||||||
from osc4py3.as_eventloop import *
|
from osc4py3.as_eventloop import *
|
||||||
from osc4py3 import oscbuildparse
|
from osc4py3 import oscbuildparse
|
||||||
from osc4py3 import oscmethod as osm
|
#from osc4py3 import oscmethod as osm
|
||||||
|
from osc4py3.oscmethod import *
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
@ -65,8 +72,8 @@ print ("Arguments parsing if needed...")
|
|||||||
argsparser = argparse.ArgumentParser(description="Planetarium for LJ")
|
argsparser = argparse.ArgumentParser(description="Planetarium for LJ")
|
||||||
argsparser.add_argument("-r","--redisIP",help="IP of the Redis server used by LJ (127.0.0.1 by default) ",type=str)
|
argsparser.add_argument("-r","--redisIP",help="IP of the Redis server used by LJ (127.0.0.1 by default) ",type=str)
|
||||||
argsparser.add_argument("-c","--client",help="LJ client number (0 by default)",type=int)
|
argsparser.add_argument("-c","--client",help="LJ client number (0 by default)",type=int)
|
||||||
argsparser.add_argument("-l","--laser",help="Laser number to be displayed (0 by default)",type=int)
|
argsparser.add_argument("-L","--Lasers",help="Number of lasers connected (1 by default).",type=int)
|
||||||
argsparser.add_argument("-d","--debug",help="Verbosity level (0 by default)",type=int)
|
argsparser.add_argument("-v","--verbose",help="Verbosity level (0 by default)",type=int)
|
||||||
argsparser.add_argument("-i","--input",help="inputs OSC Port (8005 by default)",type=int)
|
argsparser.add_argument("-i","--input",help="inputs OSC Port (8005 by default)",type=int)
|
||||||
#argsparser.add_argument("-n","--name",help="City Name of the observer",type=str)
|
#argsparser.add_argument("-n","--name",help="City Name of the observer",type=str)
|
||||||
#argsparser.add_argument("-r","--redisIP",help="Country code of the observer ",type=str)
|
#argsparser.add_argument("-r","--redisIP",help="Country code of the observer ",type=str)
|
||||||
@ -79,13 +86,13 @@ if args.client:
|
|||||||
else:
|
else:
|
||||||
ljclient = 0
|
ljclient = 0
|
||||||
|
|
||||||
if args.laser:
|
if args.Lasers:
|
||||||
lasernumber = args.laser
|
lasernumber = args.Lasers
|
||||||
else:
|
else:
|
||||||
lasernumber = 0
|
lasernumber = 1
|
||||||
|
|
||||||
if args.debug:
|
if args.verbose:
|
||||||
debug = args.laser
|
debug = args.verbose
|
||||||
else:
|
else:
|
||||||
debug = 0
|
debug = 0
|
||||||
|
|
||||||
@ -322,7 +329,7 @@ def DrawSolar(laser):
|
|||||||
# Stars
|
# Stars
|
||||||
#
|
#
|
||||||
|
|
||||||
StarsObjectShape = [(-50,30), (-30,-30), (30,-30), (10,30), (-50,30)]
|
StarsObjectShape = [(-10,10), (-10,-10), (10,-10), (10,10), (-10,10)]
|
||||||
|
|
||||||
def LoadHipparcos(ts):
|
def LoadHipparcos(ts):
|
||||||
global hipdata
|
global hipdata
|
||||||
@ -543,6 +550,26 @@ def InitObserver(SkyCity, SkyCountryCode, time,ts):
|
|||||||
RadecSkies(LaserSkies, AstroSkyTime)
|
RadecSkies(LaserSkies, AstroSkyTime)
|
||||||
|
|
||||||
|
|
||||||
|
# Change Observer position by adding deltas (Gpslong, gpslat, elevation in decimal degree/meters)
|
||||||
|
def UpdateObserver(gpslatdelta, gpslongdelta, elevationdelta,time,ts):
|
||||||
|
global LaserSkies, Skylat, Skylong, SkyfieldTime, AstrObserver, SkyObserver
|
||||||
|
|
||||||
|
Skylat += gpslatdelta
|
||||||
|
Skylong += gpslongdelta
|
||||||
|
Skyelevation += elevationdelta
|
||||||
|
AstroSkyTime = time
|
||||||
|
print ("AstroPy time", AstroSkyTime)
|
||||||
|
SkyfieldTime = ts.from_astropy(AstroSkyTime)
|
||||||
|
print("SkyfieldTime from AstropyUTC",SkyfieldTime.utc_iso())
|
||||||
|
|
||||||
|
AstrObserver = EarthLocation(lat = Skylat * u.deg, lon = Skylong * u.deg, height = Skyelevation * u.m,)
|
||||||
|
SkyObserver = earth + Topos(Skylat, Skylong)
|
||||||
|
RadecSkies(LaserSkies, AstroSkyTime)
|
||||||
|
|
||||||
|
UpdateSolar()
|
||||||
|
UpdateStars()
|
||||||
|
UpdateAnything()
|
||||||
|
|
||||||
def NewTime(timeshift):
|
def NewTime(timeshift):
|
||||||
|
|
||||||
SkyfieldTime += timeshift
|
SkyfieldTime += timeshift
|
||||||
@ -555,60 +582,60 @@ def NewTime(timeshift):
|
|||||||
UpdateAnything()
|
UpdateAnything()
|
||||||
|
|
||||||
|
|
||||||
#def handlerfunction(s, x, y):
|
def OSCstart(value):
|
||||||
# Will receive message data unpacked in s, x, y
|
|
||||||
# pass
|
|
||||||
|
|
||||||
def OSChandler(address, s, x, y):
|
|
||||||
# Will receive message address, and message data flattened in s, x, y
|
# Will receive message address, and message data flattened in s, x, y
|
||||||
print("Planetarium OSC server got address", address,"s",s,"x",x,"y",y)
|
print("Planetarium OSC server got /planet/start with value", value)
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
|
def OSCUI(value):
|
||||||
|
# Will receive message address, and message data flattened in s, x, y
|
||||||
|
print("Planetarium OSC server got /planet/planetUI with value", value)
|
||||||
|
|
||||||
def WebStatus(message):
|
def WebStatus(message):
|
||||||
lj3.Send("/status",message)
|
lj3.Send("/status",message)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Main part
|
# Main part
|
||||||
#
|
#
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
lj3.OSCstart()
|
WebStatus("Planetarium")
|
||||||
# Make server channels to receive packets.
|
|
||||||
#osc_udp_server("127.0.0.1", 3721, "localhost")
|
|
||||||
osc_udp_server("0.0.0.0", OSCinPort, "InPort")
|
|
||||||
|
|
||||||
# Associate Python functions with message address patterns, using default
|
|
||||||
# argument scheme OSCARG_DATAUNPACK.
|
|
||||||
#osc_method("/planet/*", handlerfunction)
|
|
||||||
# Too, but request the message address pattern before in argscheme
|
|
||||||
osc_method("/planet/*", OSChandler, argscheme=osm.OSCARG_ADDRESS + osm.OSCARG_DATAUNPACK)
|
|
||||||
|
|
||||||
|
# OSC Server callbacks
|
||||||
|
print("Starting OSC at 127.0.0.1 port",OSCinPort,"...")
|
||||||
|
osc_startup()
|
||||||
|
osc_udp_server("127.0.0.1", OSCinPort, "InPort")
|
||||||
|
osc_method("/planet/start*", OSCstart)
|
||||||
|
osc_method("/planet/planetUI*", OSCUI)
|
||||||
|
|
||||||
|
WebStatus("Load Cities.")
|
||||||
ts = load.timescale()
|
ts = load.timescale()
|
||||||
LoadCities()
|
LoadCities()
|
||||||
|
|
||||||
SkyCity = 'Paris'
|
SkyCity = 'Paris'
|
||||||
SkyCountryCode = 'FR'
|
SkyCountryCode = 'FR'
|
||||||
|
WebStatus(SkyCity)
|
||||||
|
|
||||||
|
WebStatus("Solar System..")
|
||||||
LoadSolar()
|
LoadSolar()
|
||||||
|
|
||||||
|
WebStatus("Observer..")
|
||||||
InitObserver(SkyCity, SkyCountryCode, Time.now(),ts)
|
InitObserver(SkyCity, SkyCountryCode, Time.now(),ts)
|
||||||
|
|
||||||
|
WebStatus("Load Stars..")
|
||||||
LoadHipparcos(ts)
|
LoadHipparcos(ts)
|
||||||
|
|
||||||
|
|
||||||
StarSelect()
|
StarSelect()
|
||||||
|
|
||||||
#print()
|
WebStatus("Updating...")
|
||||||
#print ("Updating Sky Objects for current observer...")
|
|
||||||
#print()
|
|
||||||
print("Updating solar system (de421) objects position for observer at", Skylat, Skylong, "time", SkyfieldTime.utc_iso())
|
print("Updating solar system (de421) objects position for observer at", Skylat, Skylong, "time", SkyfieldTime.utc_iso())
|
||||||
UpdateSolar()
|
UpdateSolar()
|
||||||
#print ("Done.")
|
|
||||||
#print()
|
|
||||||
print("Updating stars for observer at", Skylat, Skylong, "time", SkyfieldTime.utc_iso())
|
print("Updating stars for observer at", Skylat, Skylong, "time", SkyfieldTime.utc_iso())
|
||||||
UpdateStars(ts)
|
UpdateStars(ts)
|
||||||
|
|
||||||
|
WebStatus("Ready")
|
||||||
|
lj3.Send("/planet/start",1)
|
||||||
print ("Done.")
|
print ("Done.")
|
||||||
|
|
||||||
# UpdateStars() Todo
|
# UpdateStars() Todo
|
||||||
@ -617,19 +644,28 @@ try:
|
|||||||
DisplaySolar = False
|
DisplaySolar = False
|
||||||
DisplayOrientation = True
|
DisplayOrientation = True
|
||||||
DisplayAnything = False
|
DisplayAnything = False
|
||||||
|
print("Start displaying on",lasernumber,"lasers")
|
||||||
|
|
||||||
while 1:
|
while 1:
|
||||||
|
|
||||||
for laser in range(lasernumber):
|
for laser in range(lasernumber):
|
||||||
|
|
||||||
|
#print ("Drawing laser",lasernumber)
|
||||||
if DisplayOrientation:
|
if DisplayOrientation:
|
||||||
DrawOrientation(laser)
|
DrawOrientation(laser)
|
||||||
|
lj3.OSCframe()
|
||||||
|
|
||||||
if DisplaySolar:
|
if DisplaySolar:
|
||||||
DrawSolar(laser)
|
DrawSolar(laser)
|
||||||
|
lj3.OSCframe()
|
||||||
|
|
||||||
if DisplayStars:
|
if DisplayStars:
|
||||||
DrawStars(laser)
|
DrawStars(laser)
|
||||||
|
lj3.OSCframe()
|
||||||
|
|
||||||
if DisplayAnything:
|
if DisplayAnything:
|
||||||
DrawAnything()
|
DrawAnything()
|
||||||
|
lj3.OSCframe()
|
||||||
|
|
||||||
lj3.DrawPL(laser)
|
lj3.DrawPL(laser)
|
||||||
lj3.OSCframe()
|
lj3.OSCframe()
|
||||||
@ -644,6 +680,8 @@ except KeyboardInterrupt:
|
|||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
|
||||||
|
WebStatus("Planet Exit")
|
||||||
|
print("Stopping OSC...")
|
||||||
lj3.OSCstop()
|
lj3.OSCstop()
|
||||||
|
|
||||||
print ("Fin du planetarium.")
|
print ("Fin du planetarium.")
|
||||||
|
243
commands.py
@ -73,7 +73,7 @@ Bob could use /pl/2/0 and /pl/2/1 and Lisa could use /pl/2/2 and /pl/2/3.
|
|||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
from __future__ import absolute_import
|
||||||
import types, time
|
import types, time
|
||||||
import gstt
|
import gstt
|
||||||
import homographyp
|
import homographyp
|
||||||
@ -159,144 +159,153 @@ def Mouse(x1,y1,x2,y2):
|
|||||||
def handler(oscpath, args):
|
def handler(oscpath, args):
|
||||||
|
|
||||||
print ""
|
print ""
|
||||||
print "Handler"
|
print "OSC handler in commands.py got oscpath[1] :",oscpath[1], "with args :",args
|
||||||
|
|
||||||
if oscpath[1] == "client" or oscpath[1] =="noteon" or oscpath[1]=="mouse":
|
# 2 incoming cases : generic or specific for a given lasernumber
|
||||||
|
# Need better programming
|
||||||
|
if oscpath[1] == "client" or oscpath[1] =="noteon" or oscpath[1]=="mouse" or oscpath[1]=="emergency" or oscpath[1]=="simu" or oscpath[1]=="status" or oscpath[1]=="run" or oscpath[1]=="nozoid" or oscpath[1]=="planet" or oscpath[1]=="live" or oscpath[1]=="planet" :
|
||||||
|
|
||||||
if oscpath[1] == "client":
|
if oscpath[1] == "client":
|
||||||
LasClientChange(int(args[0]))
|
LasClientChange(int(args[0]))
|
||||||
|
|
||||||
elif oscpath[1] == "noteon":
|
elif oscpath[1] == "noteon":
|
||||||
NoteOn(int(args[0]))
|
NoteOn(int(args[0]))
|
||||||
|
|
||||||
elif oscpath[1] == "mouse":
|
elif oscpath[1] == "mouse":
|
||||||
Mouse(int(args[0]),int(args[1]),int(args[2]),int(args[3]))
|
Mouse(int(args[0]),int(args[1]),int(args[2]),int(args[3]))
|
||||||
|
|
||||||
|
# /emergency value (0 or 1)
|
||||||
|
if oscpath[1] == "emergency":
|
||||||
|
|
||||||
|
if args[0] == "1":
|
||||||
|
print "EMERGENCY MODE"
|
||||||
|
for laser in range(gstt.lasernumber):
|
||||||
|
print "Black requested for laser ", laser
|
||||||
|
BlackOn(laser)
|
||||||
|
else:
|
||||||
|
for laser in range(gstt.lasernumber):
|
||||||
|
print "Back to normal for laser ", laser
|
||||||
|
UserOn(laser)
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
pathlength = len(oscpath)
|
pathlength = len(oscpath)
|
||||||
|
|
||||||
if pathlength == 3:
|
if pathlength == 3:
|
||||||
laser = int(oscpath[2])
|
laser = int(oscpath[2])
|
||||||
else:
|
else:
|
||||||
laser = int(oscpath[3])
|
laser = int(oscpath[3])
|
||||||
|
|
||||||
print "args[0] :",args[0]," ", type(args[0])
|
|
||||||
|
|
||||||
# /grid/lasernumber value (0 or 1)
|
print "args[0] :",args[0]," ", type(args[0])
|
||||||
if oscpath[1] == "grid":
|
|
||||||
|
|
||||||
if args[0] == "1":
|
|
||||||
print "Grid requested for laser ", laser
|
|
||||||
GridOn(laser)
|
|
||||||
else:
|
|
||||||
print "No grid for laser ", laser
|
|
||||||
UserOn(laser)
|
|
||||||
|
|
||||||
|
|
||||||
# /black/lasernumber value (0 or 1)
|
|
||||||
if oscpath[1] == "black":
|
|
||||||
|
|
||||||
if args[0] == "1":
|
|
||||||
print "Black requested for laser ", laser
|
|
||||||
BlackOn(laser)
|
|
||||||
else:
|
|
||||||
print "No black for laser ", laser
|
|
||||||
UserOn(laser)
|
|
||||||
|
|
||||||
|
|
||||||
# /ip/lasernumber value
|
|
||||||
if oscpath[1] == "ip":
|
|
||||||
print "New IP for laser ", laser
|
|
||||||
gstt.lasersIPS[laser]= args[0]
|
|
||||||
settings.Write()
|
|
||||||
|
|
||||||
|
|
||||||
# /kpps/lasernumber value
|
|
||||||
# Live change of kpps is not implemented in newdac.py. Change will effect next startup.
|
|
||||||
if oscpath[1] == "kpps":
|
|
||||||
print "New kpps for laser ", laser, " next startup", int(args[0])
|
|
||||||
gstt.kpps[laser]= int(args[0])
|
|
||||||
settings.Write()
|
|
||||||
|
|
||||||
# /angle/lasernumber value
|
|
||||||
if oscpath[1] == "angle":
|
|
||||||
print "New Angle modification for laser ", oscpath[2], ":", float(args[0])
|
|
||||||
gstt.finANGLE[laser] += float(args[0])
|
|
||||||
NewEDH(laser)
|
|
||||||
"New angle", gstt.finANGLE[laser]
|
|
||||||
|
|
||||||
# /intens/lasernumber value
|
# /grid/lasernumber value (0 or 1)
|
||||||
if oscpath[1] == "intens":
|
if oscpath[1] == "grid":
|
||||||
print "New intensity requested for laser ", laser, ":", int(args[0])
|
|
||||||
print "Change not implemented yet"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# /resampler/lasernumber lsteps
|
|
||||||
# lsteps is a string like "[ (1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)]"
|
|
||||||
if oscpath[1] == "resampler":
|
|
||||||
Resampler(laser,args[0])
|
|
||||||
|
|
||||||
|
if args[0] == "1":
|
||||||
# /mouse/lasernumber value (0 or 1)
|
print "Grid requested for laser ", laser
|
||||||
if oscpath[1] == "mouse":
|
GridOn(laser)
|
||||||
|
else:
|
||||||
|
print "No grid for laser ", laser
|
||||||
|
UserOn(laser)
|
||||||
|
|
||||||
|
|
||||||
|
# /ip/lasernumber value
|
||||||
|
if oscpath[1] == "ip":
|
||||||
|
print "New IP for laser ", laser
|
||||||
|
gstt.lasersIPS[laser]= args[0]
|
||||||
|
settings.Write()
|
||||||
|
|
||||||
if args[0] == "1":
|
|
||||||
print "Mouse requested for laser ", oscpath[2]
|
|
||||||
gstt.Laser = oscpath[2]
|
|
||||||
else:
|
|
||||||
print "No mouse for laser ", oscpath[2]
|
|
||||||
|
|
||||||
|
|
||||||
# /swap/X/lasernumber value (0 or 1)
|
|
||||||
if oscpath[1] == "swap" and oscpath[2] == "X":
|
|
||||||
|
|
||||||
print "swapX was", gstt.swapX[laser]
|
# /kpps/lasernumber value
|
||||||
if args[0] == "0":
|
# Live change of kpps is not implemented in newdac.py. Change will effect next startup.
|
||||||
print "swap X -1 for laser ", laser
|
if oscpath[1] == "kpps":
|
||||||
gstt.swapX[laser]= -1
|
print "New kpps for laser ", laser, " next startup", int(args[0])
|
||||||
NewEDH(laser)
|
gstt.kpps[laser]= int(args[0])
|
||||||
|
settings.Write()
|
||||||
else:
|
|
||||||
print "swap X 1 for laser ", laser
|
|
||||||
gstt.swapX[laser]= 1
|
|
||||||
NewEDH(laser)
|
|
||||||
|
|
||||||
# /swap/Y/lasernumber value (0 or 1)
|
|
||||||
if oscpath[1] == "swap" and oscpath[2] == "Y":
|
|
||||||
|
|
||||||
print "swapY was", gstt.swapX[laser]
|
|
||||||
if args[0] == "0":
|
|
||||||
print "swap Y -1 for laser ", laser
|
|
||||||
gstt.swapY[laser]= -1
|
|
||||||
NewEDH(laser)
|
|
||||||
else:
|
|
||||||
print "swap Y 1 for laser ", laser
|
|
||||||
gstt.swapY[laser]= 1
|
|
||||||
NewEDH(laser)
|
|
||||||
|
|
||||||
# /loffset/X/lasernumber value
|
|
||||||
if oscpath[1] == "loffset" and oscpath[2] == "X":
|
|
||||||
print "offset/X laser", laser, "modified to", args[0]
|
|
||||||
gstt.centerX[laser] -= int(args[0])
|
|
||||||
NewEDH(laser)
|
|
||||||
|
|
||||||
# /loffset/Y/lasernumber value
|
# /angle/lasernumber value
|
||||||
if oscpath[1] == "loffset" and oscpath[2] == "Y":
|
if oscpath[1] == "angle":
|
||||||
print "offset/Y laser", laser, "modified to", args[0]
|
print "New Angle modification for laser ", oscpath[2], ":", float(args[0])
|
||||||
gstt.centerY[laser] -= int(args[0])
|
gstt.finANGLE[laser] += float(args[0])
|
||||||
NewEDH(laser)
|
|
||||||
|
|
||||||
|
|
||||||
# /scale/X/lasernumber value
|
|
||||||
if oscpath[1] == "scale" and oscpath[2] == "X":
|
|
||||||
if gstt.zoomX[laser] + int(args[0]) > 0:
|
|
||||||
gstt.zoomX[laser] += int(args[0])
|
|
||||||
print "scale/X laser", laser , "modified to", gstt.zoomX[laser]
|
|
||||||
NewEDH(laser)
|
NewEDH(laser)
|
||||||
|
"New angle", gstt.finANGLE[laser]
|
||||||
# /scale/Y/lasernumber value
|
|
||||||
if oscpath[1] == "scale" and oscpath[2] == "Y":
|
# /intens/lasernumber value
|
||||||
if gstt.zoomY[laser] + int(args[0]) > 0:
|
if oscpath[1] == "intens":
|
||||||
gstt.zoomY[laser] += int(args[0])
|
print "New intensity requested for laser ", laser, ":", int(args[0])
|
||||||
print "scale/Y laser", laser, "modified to", gstt.zoomY[laser]
|
print "Change not implemented yet"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# /resampler/lasernumber lsteps
|
||||||
|
# lsteps is a string like "[ (1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)]"
|
||||||
|
if oscpath[1] == "resampler":
|
||||||
|
Resampler(laser,args[0])
|
||||||
|
|
||||||
|
|
||||||
|
# /mouse/lasernumber value (0 or 1)
|
||||||
|
if oscpath[1] == "mouse":
|
||||||
|
|
||||||
|
if args[0] == "1":
|
||||||
|
print "Mouse requested for laser ", oscpath[2]
|
||||||
|
gstt.Laser = oscpath[2]
|
||||||
|
else:
|
||||||
|
print "No mouse for laser ", oscpath[2]
|
||||||
|
|
||||||
|
|
||||||
|
# /swap/X/lasernumber value (0 or 1)
|
||||||
|
if oscpath[1] == "swap" and oscpath[2] == "X":
|
||||||
|
|
||||||
|
print "swapX was", gstt.swapX[laser]
|
||||||
|
if args[0] == "0":
|
||||||
|
print "swap X -1 for laser ", laser
|
||||||
|
gstt.swapX[laser]= -1
|
||||||
|
NewEDH(laser)
|
||||||
|
|
||||||
|
else:
|
||||||
|
print "swap X 1 for laser ", laser
|
||||||
|
gstt.swapX[laser]= 1
|
||||||
|
NewEDH(laser)
|
||||||
|
|
||||||
|
# /swap/Y/lasernumber value (0 or 1)
|
||||||
|
if oscpath[1] == "swap" and oscpath[2] == "Y":
|
||||||
|
|
||||||
|
print "swapY was", gstt.swapX[laser]
|
||||||
|
if args[0] == "0":
|
||||||
|
print "swap Y -1 for laser ", laser
|
||||||
|
gstt.swapY[laser]= -1
|
||||||
|
NewEDH(laser)
|
||||||
|
else:
|
||||||
|
print "swap Y 1 for laser ", laser
|
||||||
|
gstt.swapY[laser]= 1
|
||||||
|
NewEDH(laser)
|
||||||
|
|
||||||
|
# /loffset/X/lasernumber value
|
||||||
|
if oscpath[1] == "loffset" and oscpath[2] == "X":
|
||||||
|
print "offset/X laser", laser, "modified to", args[0]
|
||||||
|
gstt.centerX[laser] -= int(args[0])
|
||||||
NewEDH(laser)
|
NewEDH(laser)
|
||||||
|
|
||||||
|
# /loffset/Y/lasernumber value
|
||||||
|
if oscpath[1] == "loffset" and oscpath[2] == "Y":
|
||||||
|
print "offset/Y laser", laser, "modified to", args[0]
|
||||||
|
gstt.centerY[laser] -= int(args[0])
|
||||||
|
NewEDH(laser)
|
||||||
|
|
||||||
|
|
||||||
|
# /scale/X/lasernumber value
|
||||||
|
if oscpath[1] == "scale" and oscpath[2] == "X":
|
||||||
|
if gstt.zoomX[laser] + int(args[0]) > 0:
|
||||||
|
gstt.zoomX[laser] += int(args[0])
|
||||||
|
print "scale/X laser", laser , "modified to", gstt.zoomX[laser]
|
||||||
|
NewEDH(laser)
|
||||||
|
|
||||||
|
# /scale/Y/lasernumber value
|
||||||
|
if oscpath[1] == "scale" and oscpath[2] == "Y":
|
||||||
|
if gstt.zoomY[laser] + int(args[0]) > 0:
|
||||||
|
gstt.zoomY[laser] += int(args[0])
|
||||||
|
print "scale/Y laser", laser, "modified to", gstt.zoomY[laser]
|
||||||
|
NewEDH(laser)
|
||||||
|
|
||||||
'''
|
'''
|
||||||
For reference values of EDH modifier if assign to keyboard keys (was alignp)
|
For reference values of EDH modifier if assign to keyboard keys (was alignp)
|
||||||
|
10
gstt.py
@ -74,11 +74,13 @@ swapY = [1,1,1,-1]
|
|||||||
# For glitch art : change position and number of points added by tracer.py
|
# For glitch art : change position and number of points added by tracer.py
|
||||||
# shortline is for distance with next point, shorter than 4000 (in etherdream coordinates)
|
# shortline is for distance with next point, shorter than 4000 (in etherdream coordinates)
|
||||||
# i.e (0.25,3) means add 3 points at 25% on the line.
|
# i.e (0.25,3) means add 3 points at 25% on the line.
|
||||||
|
stepshortline = [(1.0, 8)]
|
||||||
|
stepslongline = [(0.25, 3), (0.75, 3), (1.0, 10)]
|
||||||
|
|
||||||
|
#stepslongline = [(0.25,1), (0.75, 1), (1.0, 1)]
|
||||||
#stepshortline = [(1.0, 8)]
|
#stepshortline = [(1.0, 8)]
|
||||||
#stepslongline = [(0.25, 3), (0.75, 3), (1.0, 10)]
|
#stepslongline = [(1.0, 1)]
|
||||||
stepslongline = [(0.25,1), (0.75, 1), (1.0, 1)]
|
#stepshortline = [(1.0, 1)]
|
||||||
#stepshortline = [(1.0, 8)]
|
|
||||||
stepslongline = [(1.0, 1)]
|
|
||||||
|
|
||||||
point = [0,0,0]
|
point = [0,0,0]
|
||||||
|
|
||||||
|
157
main.py
Normal file → Executable file
@ -14,7 +14,7 @@ todo :
|
|||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
from __future__ import absolute_import
|
|
||||||
import time
|
import time
|
||||||
import gstt
|
import gstt
|
||||||
import redis
|
import redis
|
||||||
@ -78,8 +78,8 @@ print "Laser client number :",gstt.LasClientNumber
|
|||||||
serverIP = gstt.LjayServerIP
|
serverIP = gstt.LjayServerIP
|
||||||
print "Redis IP :", serverIP
|
print "Redis IP :", serverIP
|
||||||
|
|
||||||
bhoroscIP = gstt.oscIPin
|
extoscIP = gstt.oscIPin
|
||||||
print "Bhorosc IP :", bhoroscIP
|
print "extosc IP :", extoscIP
|
||||||
|
|
||||||
nozoscIP = gstt.nozoscip
|
nozoscIP = gstt.nozoscip
|
||||||
print "Nozosc IP :", nozoscIP
|
print "Nozosc IP :", nozoscIP
|
||||||
@ -94,15 +94,15 @@ print "Lasers requested :", gstt.LaserNumber
|
|||||||
# Websocket listening port
|
# Websocket listening port
|
||||||
wsPORT = 9001
|
wsPORT = 9001
|
||||||
|
|
||||||
# With Bhorosc
|
# With extosc
|
||||||
# OSC Server : accept OSC message on port 8002
|
# OSC Server : accept OSC message on port 8002
|
||||||
#oscIPin = "192.168.1.10"s
|
#oscIPin = "192.168.1.10"s
|
||||||
bhoroscIPin = serverIP
|
extoscIPin = serverIP
|
||||||
bhoroscPORTin = 8002
|
extoscPORTin = 8002
|
||||||
|
|
||||||
# OSC Client : to send OSC message to an IP port 8001
|
# OSC Client : to send OSC message to an IP port 8001
|
||||||
bhoroscIPout = bhoroscIP
|
extoscIPout = extoscIP
|
||||||
bhoroscPORTout = 8001
|
extoscPORTout = 8001
|
||||||
|
|
||||||
|
|
||||||
# With Nozoid
|
# With Nozoid
|
||||||
@ -110,9 +110,14 @@ bhoroscPORTout = 8001
|
|||||||
NozoscIPout = nozoscIP
|
NozoscIPout = nozoscIP
|
||||||
NozoscPORTout = 8003
|
NozoscPORTout = 8003
|
||||||
|
|
||||||
#print bhoroscIPin
|
|
||||||
|
|
||||||
oscserver = OSCServer( (bhoroscIPin, bhoroscPORTin) )
|
# With Planetarium
|
||||||
|
# OSC Client : to send OSC message to planetarium inport 8005
|
||||||
|
planetIPout = nozoscIP
|
||||||
|
planetPORTout = 8005
|
||||||
|
|
||||||
|
|
||||||
|
oscserver = OSCServer( (extoscIPin, extoscPORTin) )
|
||||||
oscserver.timeout = 0
|
oscserver.timeout = 0
|
||||||
OSCRunning = True
|
OSCRunning = True
|
||||||
|
|
||||||
@ -122,64 +127,90 @@ def handle_timeout(self):
|
|||||||
|
|
||||||
oscserver.handle_timeout = types.MethodType(handle_timeout, oscserver)
|
oscserver.handle_timeout = types.MethodType(handle_timeout, oscserver)
|
||||||
|
|
||||||
osclientbhorosc = OSCClient()
|
osclientext = OSCClient()
|
||||||
oscmsg = OSCMessage()
|
oscmsg = OSCMessage()
|
||||||
osclientbhorosc.connect((bhoroscIPout, bhoroscPORTout))
|
osclientext.connect((extoscIPout, extoscPORTout))
|
||||||
|
|
||||||
# send UI string as OSC message to Bhorosc 8001
|
# send UI string as OSC message to extosc 8001
|
||||||
# sendbhorosc(oscaddress, [arg1, arg2,...])
|
# sendextosc(oscaddress, [arg1, arg2,...])
|
||||||
|
|
||||||
def sendbhorosc(oscaddress,oscargs=''):
|
def sendextosc(oscaddress,oscargs=''):
|
||||||
|
|
||||||
oscmsg = OSCMessage()
|
oscmsg = OSCMessage()
|
||||||
oscmsg.setAddress(oscaddress)
|
oscmsg.setAddress(oscaddress)
|
||||||
oscmsg.append(oscargs)
|
oscmsg.append(oscargs)
|
||||||
|
|
||||||
#print ("sending to bhorosc : ",oscmsg)
|
#print ("sending to extosc : ",oscmsg)
|
||||||
try:
|
try:
|
||||||
osclientbhorosc.sendto(oscmsg, (bhoroscIPout, bhoroscPORTout))
|
osclientext.sendto(oscmsg, (extoscIPout, extoscPORTout))
|
||||||
oscmsg.clearData()
|
oscmsg.clearData()
|
||||||
except:
|
except:
|
||||||
print ('Connection to bhorosc refused : died ?')
|
print ('Connection to extosc IP', extoscIPout, 'port', extoscPORTout,'refused : died ?')
|
||||||
sendWSall("/on 0")
|
sendWSall("/on 0")
|
||||||
sendWSall("/status NoLJay")
|
sendWSall("/status NoLJay")
|
||||||
pass
|
|
||||||
#time.sleep(0.001)
|
#time.sleep(0.001)
|
||||||
|
|
||||||
|
|
||||||
# send UI string as OSC message to Nozosc 8003
|
# send UI string as OSC message to Nozosc 8003
|
||||||
# sendnozosc(oscaddress, [arg1, arg2,...])
|
# sendnozosc(oscaddress, [arg1, arg2,...])
|
||||||
|
|
||||||
|
osclientnozoid = OSCClient()
|
||||||
|
osclientnozoid.connect((NozoscIPout, NozoscPORTout))
|
||||||
|
|
||||||
def sendnozosc(oscaddress,oscargs=''):
|
def sendnozosc(oscaddress,oscargs=''):
|
||||||
|
|
||||||
oscmsg = OSCMessage()
|
oscmsg = OSCMessage()
|
||||||
oscmsg.setAddress(oscaddress)
|
oscmsg.setAddress(oscaddress)
|
||||||
oscmsg.append(oscargs)
|
oscmsg.append(oscargs)
|
||||||
|
|
||||||
#print ("sending to nozosc : ",oscmsg)
|
print "Sending OSC to Nozosc server :", oscaddress,'with args', oscargs
|
||||||
try:
|
try:
|
||||||
osclientnozosc.sendto(oscmsg, (NozoscIPout, NozoscPORTout))
|
osclientnozoid.sendto(oscmsg, (NozoscIPout, NozoscPORTout))
|
||||||
oscmsg.clearData()
|
oscmsg.clearData()
|
||||||
except:
|
except:
|
||||||
print ('Connection to nozosc refused : died ?')
|
print 'Connection to nozosc IP', NozoscIPout,'port', NozoscPORTout,' refused : died ?'
|
||||||
sendWSall("/on 0")
|
sendWSall("/on 0")
|
||||||
sendWSall("/status No Nozosc ")
|
sendWSall("/status No Nozosc ")
|
||||||
pass
|
|
||||||
#time.sleep(0.001)
|
#time.sleep(0.001)
|
||||||
|
|
||||||
|
# send UI string as OSC message to Planet 8005
|
||||||
|
# sendplanet(oscaddress, [arg1, arg2,...])
|
||||||
|
|
||||||
|
osclientplanet = OSCClient()
|
||||||
|
osclientplanet.connect((planetIPout, planetPORTout))
|
||||||
|
|
||||||
|
def sendplanet(oscaddress,oscargs=''):
|
||||||
|
|
||||||
|
oscmsg = OSCMessage()
|
||||||
|
oscmsg.setAddress(oscaddress)
|
||||||
|
oscmsg.append(oscargs)
|
||||||
|
|
||||||
|
print "Sending OSC to Planet server :", oscaddress,'with args :', oscargs
|
||||||
|
try:
|
||||||
|
osclientplanet.sendto(oscmsg, (planetIPout, planetPORTout))
|
||||||
|
oscmsg.clearData()
|
||||||
|
except:
|
||||||
|
print 'OSC send to planet IP', planetIPout, 'port', planetPORTout, "refused : died ?"
|
||||||
|
sendWSall("/planet/start 0")
|
||||||
|
sendWSall("/status No Planet")
|
||||||
|
|
||||||
|
#time.sleep(0.001)
|
||||||
|
|
||||||
# OSC default path handler : send incoming OSC message to UI via websocket 9001
|
# OSC default path handler : send incoming OSC message to UI via websocket 9001
|
||||||
def handler(path, tags, args, source):
|
def handler(path, tags, args, source):
|
||||||
|
|
||||||
oscpath = path.split("/")
|
oscpath = path.split("/")
|
||||||
print ""
|
print ""
|
||||||
print "OSC said : ", path, oscpath, args
|
print "OSC default handler in main said : path", path," oscpath ", oscpath," args", args
|
||||||
#print "debug", gstt.debug
|
#print "debug", gstt.debug
|
||||||
if gstt.debug >0:
|
#if gstt.debug >0:
|
||||||
print ""
|
# print "default handler"
|
||||||
print "default handler"
|
# print "OSC said path", path," oscpath ", oscpath," args", args
|
||||||
print "OSC said : ", path, oscpath, args
|
|
||||||
sendWSall(path + " " + str(args[0]))
|
sendWSall(path + " " + str(args[0]))
|
||||||
|
|
||||||
commands.handler(oscpath,args)
|
commands.handler(oscpath,args)
|
||||||
|
|
||||||
|
|
||||||
@ -216,8 +247,8 @@ def osc_thread():
|
|||||||
|
|
||||||
|
|
||||||
lack= r.get('/lack/'+str(laserid))
|
lack= r.get('/lack/'+str(laserid))
|
||||||
if gstt.debug >0:
|
if gstt.debug >1:
|
||||||
print "laserid", laserid,"lack",lack
|
print "laserid", laserid, "lack", lack
|
||||||
if lack == 'a': # Dac sent ACK ("a") -> led is green (1)
|
if lack == 'a': # Dac sent ACK ("a") -> led is green (1)
|
||||||
sendWSall("/lack/" + str(laserid) +" 1")
|
sendWSall("/lack/" + str(laserid) +" 1")
|
||||||
if lack == 'F': # Dac sent FULL ("F") -> led is orange (5)
|
if lack == 'F': # Dac sent FULL ("F") -> led is orange (5)
|
||||||
@ -280,27 +311,61 @@ def client_left(client, server):
|
|||||||
print("WS Client(%d) disconnected" % client['id'])
|
print("WS Client(%d) disconnected" % client['id'])
|
||||||
|
|
||||||
|
|
||||||
# Called when a WS client sends a message
|
# Called for each ws received message.
|
||||||
def message_received(client, server, message):
|
def message_received(client, server, message):
|
||||||
if len(message) > 200:
|
if len(message) > 200:
|
||||||
message = message[:200]+'..'
|
message = message[:200]+'..'
|
||||||
|
|
||||||
if gstt.debug >0:
|
#if gstt.debug >0:
|
||||||
print ("")
|
# print ("")
|
||||||
print("WS Client(%d) said: %s" % (client['id'], message))
|
# print("WS Client(%d) said: %s" % (client['id'], message))
|
||||||
|
|
||||||
print("WS Client(%d) said: %s" % (client['id'], message))
|
print("")
|
||||||
|
|
||||||
oscpath = message.split(" ")
|
oscpath = message.split(" ")
|
||||||
args[0] = str(oscpath[1])
|
print "WS Client", client['id'], "said :", message, "splitted in an oscpath :", oscpath
|
||||||
#print oscpath[0].split("/"),oscpath[1]
|
|
||||||
commands.handler(oscpath[0].split("/"),args)
|
# If message included "planet" forward the message as OSC to planet IP port 8005
|
||||||
|
if oscpath[0].find("planet") != -1:
|
||||||
# current UI has no dedicated off button so /on 0 trigs /off to bhorosc
|
if len(oscpath) == 1:
|
||||||
if oscpath[0] == "/on":
|
sendplanet(oscpath[0], oscargs='noargs')
|
||||||
if oscpath[1] == "1":
|
|
||||||
sendbhorosc("/on")
|
|
||||||
else:
|
else:
|
||||||
sendbhorosc("/off")
|
sendplanet(oscpath[0], oscargs=oscpath[1])
|
||||||
|
|
||||||
|
# If message included "nozoid" forward the message as OSC to nozoid IP port 8003
|
||||||
|
elif oscpath[0].find("nozoid") != -1:
|
||||||
|
if len(oscpath) == 1:
|
||||||
|
sendnozosc(oscpath[0], oscargs='noargs')
|
||||||
|
else:
|
||||||
|
sendnozosc(oscpath[0], oscargs=oscpath[1])
|
||||||
|
|
||||||
|
# If message included "ai" do something
|
||||||
|
elif oscpath[0].find("ai") != -1:
|
||||||
|
print "ai order ", oscpath
|
||||||
|
|
||||||
|
# If message included "lissa" do something
|
||||||
|
elif oscpath[0].find("lissa") != -1:
|
||||||
|
print "lissa order ", oscpath
|
||||||
|
|
||||||
|
# If message included "vj" do something
|
||||||
|
elif oscpath[0].find("vj") != -1:
|
||||||
|
print "VJ order ", oscpath
|
||||||
|
|
||||||
|
elif len(oscpath) > 1:
|
||||||
|
args[0] = str(oscpath[1])
|
||||||
|
#print oscpath[0].split("/"),oscpath[1]
|
||||||
|
|
||||||
|
# current UI has no dedicated off button so /on 0 trigs /off to extosc
|
||||||
|
elif oscpath[0] == "/on":
|
||||||
|
if oscpath[1] == "1":
|
||||||
|
sendextosc("/on")
|
||||||
|
else:
|
||||||
|
sendextosc("/off")
|
||||||
|
|
||||||
|
else:
|
||||||
|
args[0] = "noargs"
|
||||||
|
commands.handler(oscpath[0].split("/"),args)
|
||||||
|
|
||||||
|
|
||||||
# if needed a loop back : WS Client -> server -> WS Client
|
# if needed a loop back : WS Client -> server -> WS Client
|
||||||
#sendWSall("ws"+message)
|
#sendWSall("ws"+message)
|
||||||
@ -367,10 +432,10 @@ try:
|
|||||||
# Websocket startup
|
# Websocket startup
|
||||||
server = WebsocketServer(wsPORT,host=serverIP)
|
server = WebsocketServer(wsPORT,host=serverIP)
|
||||||
|
|
||||||
# Launch OSC thread listening to Bhorosc
|
# Launch OSC thread listening to extosc
|
||||||
print ""
|
print ""
|
||||||
print "Launching OSC server..."
|
print "Launching OSC server..."
|
||||||
print "at", bhoroscIPin, "port",str(bhoroscPORTin)
|
print "at", extoscIPin, "port",str(extoscPORTin)
|
||||||
print "Will update webUI dac status every second"
|
print "Will update webUI dac status every second"
|
||||||
oscserver.addMsgHandler( "/noteon", commands.NoteOn )
|
oscserver.addMsgHandler( "/noteon", commands.NoteOn )
|
||||||
# Default OSC handler for all OSC incoming message
|
# Default OSC handler for all OSC incoming message
|
||||||
|
338
webui/LJ.js
@ -1,23 +1,25 @@
|
|||||||
//
|
//
|
||||||
// LJ.js v0.7.0
|
// LJ.js v0.7.1
|
||||||
//
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// Central horizontal menu
|
||||||
|
//
|
||||||
|
|
||||||
function noMenu() {
|
function noMenu() {
|
||||||
// Set all menu button with normal button style
|
// Set all central menu buttons with normal button style
|
||||||
var x = document.getElementById("showalign");
|
var x = document.getElementById("align");
|
||||||
x.className = "button";
|
x.value = 0 ;
|
||||||
var x = document.getElementById("showrun");
|
var x = document.getElementById("run");
|
||||||
x.className = "button";
|
x.value = 0 ;
|
||||||
var x = document.getElementById("showcanvas");
|
var x = document.getElementById("simu");
|
||||||
x.className = "button";
|
x.value = 0 ;
|
||||||
var x = document.getElementById("showlive");
|
var x = document.getElementById("live");
|
||||||
x.className = "button";
|
x.value = 0 ;
|
||||||
var x = document.getElementById("shownozoid");
|
var x = document.getElementById("nozoid");
|
||||||
x.className = "button";
|
x.value = 0 ;
|
||||||
var x = document.getElementById("showplanet");
|
var x = document.getElementById("planet");
|
||||||
x.className = "button";
|
x.value = 0 ;
|
||||||
|
|
||||||
// Hide all possible main central grids.
|
// Hide all possible main central grids.
|
||||||
var x = document.getElementById("mgalign");
|
var x = document.getElementById("mgalign");
|
||||||
@ -37,103 +39,188 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function showAlign() {
|
function showAlign() {
|
||||||
noMenu();
|
noMenu();
|
||||||
var x = document.getElementById("mgalign");
|
var x = document.getElementById("mgalign");
|
||||||
x.style.display = "grid";
|
x.style.display = "grid";
|
||||||
var x = document.getElementById("showalign");
|
var x = document.getElementById("align");
|
||||||
x.className = "button:checked";
|
x.value = 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showRun() {
|
function showRun() {
|
||||||
noMenu();
|
noMenu();
|
||||||
var x = document.getElementById("mgrun");
|
var x = document.getElementById("mgrun");
|
||||||
x.style.display = "grid";
|
x.style.display = "grid";
|
||||||
var x = document.getElementById("showrun");
|
var x = document.getElementById("run");
|
||||||
x.className = "button:checked";
|
x.value = 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showCanvas() {
|
function showCanvas() {
|
||||||
noMenu();
|
noMenu();
|
||||||
var x = document.getElementById("mgsimu");
|
var x = document.getElementById("mgsimu");
|
||||||
x.style.display = "grid";
|
x.style.display = "grid";
|
||||||
var x = document.getElementById("cnvbuttons");
|
var x = document.getElementById("cnvbuttons");
|
||||||
x.style.display = "grid";
|
x.style.display = "grid";
|
||||||
var x = document.getElementById("showcanvas");
|
var x = document.getElementById("simu");
|
||||||
x.className = "button:checked";
|
x.value = 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showLive() {
|
function showLive() {
|
||||||
noMenu();
|
noMenu();
|
||||||
var x = document.getElementById("mglive");
|
var x = document.getElementById("mglive");
|
||||||
x.style.display = "grid";
|
x.style.display = "grid";
|
||||||
var x = document.getElementById("showlive");
|
var x = document.getElementById("live");
|
||||||
x.className = "button:checked";
|
x.value = 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showNozoid() {
|
function showNozoid() {
|
||||||
noMenu();
|
noMenu();
|
||||||
var x = document.getElementById("mgnozoid");
|
var x = document.getElementById("mgnozoid");
|
||||||
x.style.display = "grid";
|
x.style.display = "grid";
|
||||||
var x = document.getElementById("shownozoid");
|
var x = document.getElementById("nozoid");
|
||||||
x.className = "button:checked";
|
x.value = 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showPlanet() {
|
function showPlanet() {
|
||||||
noMenu();
|
noMenu();
|
||||||
var x = document.getElementById("mgplanet");
|
var x = document.getElementById("mgplanet");
|
||||||
x.style.display = "grid";
|
x.style.display = "grid";
|
||||||
var x = document.getElementById("cnvbuttons");
|
var x = document.getElementById("cnvbuttons");
|
||||||
x.style.display = "grid";
|
x.style.display = "grid";
|
||||||
var x = document.getElementById("showplanet");
|
var x = document.getElementById("planet");
|
||||||
x.className = "button:checked";
|
x.value = 1 ;
|
||||||
}
|
}
|
||||||
|
|
||||||
function buttonClicked(clicked_id) {
|
function buttonClicked(clicked_id) {
|
||||||
_WS.send("/" + clicked_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
function onSubmit(clicked_id) {
|
_WS.send("/" + clicked_id);
|
||||||
var input = document.getElementById(clicked_id);
|
|
||||||
console.log("/" + clicked_id + " " + input.value);
|
// update Canvas right part of maingrid
|
||||||
_WS.send("/" + clicked_id + " " + input.value);
|
if (clicked_id === "planet/planetUI") {
|
||||||
_WS.showout("/" + clicked_id + " " + input.value);
|
showplanetUI();
|
||||||
|
}
|
||||||
|
if (clicked_id === "nozoid/nozoidUI") {
|
||||||
|
shownozoidUI();
|
||||||
|
}
|
||||||
|
if (clicked_id === "ai/aiUI") {
|
||||||
|
showaiUI();
|
||||||
|
}
|
||||||
|
if (clicked_id === "lissa/lissaUI") {
|
||||||
|
showlissaUI();
|
||||||
|
}
|
||||||
|
if (clicked_id === "vj/vjUI") {
|
||||||
|
showlissaUI();
|
||||||
|
}
|
||||||
|
if (clicked_id === "nozoid/down 50") {
|
||||||
|
var x = document.getElementById("nozoid/down 50");
|
||||||
|
x.value = 0 ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// SimuUIs
|
||||||
|
//
|
||||||
|
|
||||||
|
function nosimuUI() {
|
||||||
|
// Hide all possible main central grids.
|
||||||
|
var x = document.getElementById("planetUI");
|
||||||
|
x.style.display = "none";
|
||||||
|
var x = document.getElementById("nozoidUI");
|
||||||
|
x.style.display = "none";
|
||||||
|
var x = document.getElementById("aiUI");
|
||||||
|
x.style.display = "none";
|
||||||
|
var x = document.getElementById("lissaUI");
|
||||||
|
x.style.display = "none";
|
||||||
|
var x = document.getElementById("vjUI");
|
||||||
|
x.style.display = "none";
|
||||||
|
}
|
||||||
|
|
||||||
|
function showplanetUI() {
|
||||||
|
nosimuUI();
|
||||||
|
var x = document.getElementById("planetUI");
|
||||||
|
x.style.display = "grid";
|
||||||
|
}
|
||||||
|
|
||||||
|
function shownozoidUI() {
|
||||||
|
nosimuUI();
|
||||||
|
var x = document.getElementById("nozoidUI");
|
||||||
|
x.style.display = "grid";
|
||||||
|
}
|
||||||
|
|
||||||
|
function showaiUI() {
|
||||||
|
nosimuUI();
|
||||||
|
var x = document.getElementById("aiUI");
|
||||||
|
x.style.display = "grid";
|
||||||
|
}
|
||||||
|
|
||||||
|
function showlissaUI() {
|
||||||
|
nosimuUI();
|
||||||
|
var x = document.getElementById("lissaUI");
|
||||||
|
x.style.display = "grid";
|
||||||
|
}
|
||||||
|
|
||||||
|
function showvjUI() {
|
||||||
|
nosimuUI();
|
||||||
|
var x = document.getElementById("vjUI");
|
||||||
|
x.style.display = "grid";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Forms submits
|
||||||
|
//
|
||||||
|
|
||||||
|
function onSubmit(clicked_id) {
|
||||||
|
var input = document.getElementById(clicked_id);
|
||||||
|
console.log("/" + clicked_id + " " + input.value);
|
||||||
|
_WS.send("/" + clicked_id + " " + input.value);
|
||||||
|
_WS.showout("/" + clicked_id + " " + input.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Websocket handler
|
||||||
|
//
|
||||||
|
|
||||||
var pl = "";
|
var pl = "";
|
||||||
var pl2 = new Array();
|
var pl2 = new Array();
|
||||||
var _WS = {
|
var _WS = {
|
||||||
uri: 'ws://127.0.0.1:9001/',
|
uri: 'ws://127.0.0.1:9001/',
|
||||||
ws: null,
|
ws: null,
|
||||||
init : function (e) {
|
|
||||||
_WS.s = new WebSocket(_WS.uri);
|
init : function (e) {
|
||||||
_WS.s.onopen = function (e) { _WS.onOpen(e); };
|
_WS.s = new WebSocket(_WS.uri);
|
||||||
_WS.s.onclose = function (e) { _WS.onClose(e); };
|
_WS.s.onopen = function (e) { _WS.onOpen(e); };
|
||||||
_WS.s.onmessage = function (e) { _WS.onMessage(e); };
|
_WS.s.onclose = function (e) { _WS.onClose(e); };
|
||||||
_WS.s.onerror = function (e) { _WS.onError(e); };
|
_WS.s.onmessage = function (e) { _WS.onMessage(e); };
|
||||||
},
|
_WS.s.onerror = function (e) { _WS.onError(e); };
|
||||||
onOpen: function () {
|
},
|
||||||
_WS.showout(_WS.uri);
|
|
||||||
_WS.showout('CONNECTED');
|
onOpen: function () {
|
||||||
document.getElementById("on").value = 1;
|
_WS.showout(_WS.uri);
|
||||||
},
|
_WS.showout('CONNECTED');
|
||||||
onClose: function () {
|
document.getElementById("on").value = 1;
|
||||||
_WS.showout('DISCONNECTED');
|
},
|
||||||
document.getElementById("on").value = 0;
|
|
||||||
document.getElementById("lstt/0").value = 0;
|
onClose: function () {
|
||||||
document.getElementById("lstt/1").value = 0;
|
_WS.showout('DISCONNECTED');
|
||||||
document.getElementById("lstt/2").value = 0;
|
document.getElementById("on").value = 0;
|
||||||
document.getElementById("lstt/3").value = 0;
|
document.getElementById("lstt/0").value = 0;
|
||||||
document.getElementById("lack/0").value = 0;
|
document.getElementById("lstt/1").value = 0;
|
||||||
document.getElementById("lack/1").value = 0;
|
document.getElementById("lstt/2").value = 0;
|
||||||
document.getElementById("lack/2").value = 0;
|
document.getElementById("lstt/3").value = 0;
|
||||||
document.getElementById("lack/3").value = 0;
|
document.getElementById("lack/0").value = 0;
|
||||||
},
|
document.getElementById("lack/1").value = 0;
|
||||||
onMessage: function (e) {
|
document.getElementById("lack/2").value = 0;
|
||||||
var res = e.data.split(" ");
|
document.getElementById("lack/3").value = 0;
|
||||||
//console.log(e.data)
|
},
|
||||||
//console.log(res[0].substring(0,6))
|
|
||||||
|
onMessage: function (e) {
|
||||||
|
var res = e.data.split(" ");
|
||||||
|
//console.log(e.data)
|
||||||
|
//console.log(res[0].substring(0,6))
|
||||||
|
|
||||||
switch (res[0].substring(0,6)) {
|
switch (res[0].substring(0,6)) {
|
||||||
case "/statu":
|
case "/statu":
|
||||||
_WS.showstatus(e.data.slice(8));
|
_WS.showstatus(e.data.slice(8));
|
||||||
@ -149,39 +236,44 @@
|
|||||||
document.getElementById(res[0].slice(1)).value = res[1];
|
document.getElementById(res[0].slice(1)).value = res[1];
|
||||||
_WS.showin(e.data);
|
_WS.showin(e.data);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
},
|
|
||||||
onError: function (e) {
|
|
||||||
_WS.showin('<span style="color: red;">ERROR:</span> ' + e.data);
|
|
||||||
},
|
|
||||||
showin: function (message) {
|
|
||||||
var divtext = document.getElementById('showin');
|
|
||||||
divtext.innerHTML="";
|
|
||||||
divtext.innerHTML= message.toString();
|
|
||||||
},
|
|
||||||
showout: function (message) {
|
|
||||||
var divtext = document.getElementById('showout');
|
|
||||||
divtext.innerHTML="";
|
|
||||||
divtext.innerHTML= message.toString();
|
|
||||||
},
|
|
||||||
showstatus: function (message) {
|
|
||||||
var divtext = document.getElementById('showstatus');
|
|
||||||
divtext.innerHTML="";
|
|
||||||
divtext.innerHTML= message.toString();
|
|
||||||
},
|
|
||||||
send: function (message) {
|
|
||||||
if (!message.length) {
|
|
||||||
alert('Empty message not allowed !');
|
|
||||||
} else {
|
|
||||||
_WS.showout(message);
|
|
||||||
_WS.s.send(message);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
close: function () {
|
|
||||||
_WS.showout('GOODBYE !');
|
|
||||||
_WS.s.close();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
window.addEventListener('load', _WS.init, false);
|
onError: function (e) {
|
||||||
|
_WS.showin('<span style="color: red;">ERROR:</span> ' + e.data);
|
||||||
|
},
|
||||||
|
|
||||||
|
showin: function (message) {
|
||||||
|
var divtext = document.getElementById('showin');
|
||||||
|
divtext.innerHTML="";
|
||||||
|
divtext.innerHTML= message.toString();
|
||||||
|
},
|
||||||
|
|
||||||
|
showout: function (message) {
|
||||||
|
var divtext = document.getElementById('showout');
|
||||||
|
divtext.innerHTML="";
|
||||||
|
divtext.innerHTML= message.toString();
|
||||||
|
},
|
||||||
|
|
||||||
|
showstatus: function (message) {
|
||||||
|
var divtext = document.getElementById('showstatus');
|
||||||
|
divtext.innerHTML="";
|
||||||
|
divtext.innerHTML= message.toString();
|
||||||
|
},
|
||||||
|
|
||||||
|
send: function (message) {
|
||||||
|
if (!message.length) {
|
||||||
|
alert('Empty message not allowed !');
|
||||||
|
} else {
|
||||||
|
_WS.showout(message);
|
||||||
|
_WS.s.send(message);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
close: function () {
|
||||||
|
_WS.showout('GOODBYE !');
|
||||||
|
_WS.s.close();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener('load', _WS.init, false);
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
.mgtitle {
|
.mgtitle {
|
||||||
display: grid;
|
display: grid;
|
||||||
height: 90px;
|
height: 90px;
|
||||||
grid-template-columns: 130px 70px 80px 600px;
|
grid-template-columns: 130px 70px 80px 70px 530px;
|
||||||
background-color: #111;
|
background-color: #111;
|
||||||
transition: all .3s ease;
|
transition: all .3s ease;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
@ -21,13 +21,13 @@
|
|||||||
}
|
}
|
||||||
.mgstatus {
|
.mgstatus {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 300px 150px 1fr;
|
grid-template-columns: 470px 80px 1fr;
|
||||||
grid-template-raw: 30px;
|
grid-template-raw: 30px;
|
||||||
grid-column-gap: 1px;
|
grid-column-gap: 1px;
|
||||||
grid-row-gap: 1px;
|
grid-row-gap: 1px;
|
||||||
border-color: #334;
|
border-color: #334;
|
||||||
border-style: groove;
|
border-style: groove;
|
||||||
border-width: 1px;
|
border-width: 0px;
|
||||||
background-color: #111;
|
background-color: #111;
|
||||||
font-size: small;
|
font-size: small;
|
||||||
color:#444;
|
color:#444;
|
||||||
@ -37,7 +37,7 @@
|
|||||||
font-family: 'hobeaux-rococeaux-background', Helvetica;
|
font-family: 'hobeaux-rococeaux-background', Helvetica;
|
||||||
}
|
}
|
||||||
.mgalign {
|
.mgalign {
|
||||||
display: grid;
|
display: none;
|
||||||
height: 400px;
|
height: 400px;
|
||||||
grid-template-columns: 144px 144px 138px 138px 10px 326px;
|
grid-template-columns: 144px 144px 138px 138px 10px 326px;
|
||||||
grid-template-rows: 1Fr;
|
grid-template-rows: 1Fr;
|
||||||
@ -47,13 +47,12 @@
|
|||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
}
|
}
|
||||||
.mgsimu {
|
.mgsimu {
|
||||||
display: none;
|
display: grid;
|
||||||
height: 400px;
|
height: 400px;
|
||||||
width: 900px;
|
width: 900px;
|
||||||
grid-template-columns: 500px 400px;
|
grid-template-columns: 500px 400px;
|
||||||
grid-template-rows: 400px;
|
grid-template-rows: 400px;
|
||||||
background-color: #151515;
|
background-color: #151515;
|
||||||
|
|
||||||
}
|
}
|
||||||
.cnvbuttons {
|
.cnvbuttons {
|
||||||
display: none;
|
display: none;
|
||||||
@ -133,7 +132,7 @@
|
|||||||
display: grid;
|
display: grid;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
grid-template-columns: 60px 75px 40px 60px 75px 60px 75px 60px 75px;
|
grid-template-columns: 60px 75px 40px 60px 75px 60px 75px 60px 75px;
|
||||||
background-color: #111;
|
background-color: #000;
|
||||||
justify-items: center;
|
justify-items: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
grid-gap: 1px;
|
grid-gap: 1px;
|
||||||
@ -303,10 +302,7 @@
|
|||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
padding: 8px 5px;
|
padding: 8px 5px;
|
||||||
border: 1px solid #404040;
|
border: 1px solid #404040;
|
||||||
background: #141414;
|
background: #000;
|
||||||
background: -webkit-gradient(linear, left top, left bottom, from(#141414), to(#141414));
|
|
||||||
background: -moz-linear-gradient(top, #141414, #141414);
|
|
||||||
background: linear-gradient(to bottom, #141414, #141414);
|
|
||||||
font: normal normal normal 11px arial;
|
font: normal normal normal 11px arial;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@ -343,15 +339,22 @@
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.submit {
|
.submit {
|
||||||
background: #0c0c0c;
|
background: #000;
|
||||||
color: #c0c0c0;
|
color: #c0c0c0;
|
||||||
width: 90px;
|
width: 90px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
height: 15px;
|
height: 15px;
|
||||||
background: -webkit-gradient(linear, left top, left bottom, from(#0c0c0c), to(#141414));
|
border: 1px solid #445;
|
||||||
background: -moz-linear-gradient(top, #0c0c0c, #141414);
|
}
|
||||||
background: linear-gradient(to bottom, #0c0c0c, #141414);
|
.submitsmall {
|
||||||
|
background: #000;
|
||||||
|
color: #c0c0c0;
|
||||||
|
width: 45px;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
height: 15px;
|
||||||
border: 1px solid #445;
|
border: 1px solid #445;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
599
webui/index.html
@ -1,5 +1,10 @@
|
|||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
<!--
|
||||||
|
LJ webapp 'mg' stand for main grid elements
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
@ -50,6 +55,8 @@
|
|||||||
<div><webaudio-switch id="on" height="52" width="41" value="0" src="knobs/bigbluetoggle.png" type="toggle"></webaudio-switch></div>
|
<div><webaudio-switch id="on" height="52" width="41" value="0" src="knobs/bigbluetoggle.png" type="toggle"></webaudio-switch></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Lasers state grid -->
|
<!-- Lasers state grid -->
|
||||||
<div class="lsttgrid">
|
<div class="lsttgrid">
|
||||||
|
|
||||||
@ -80,19 +87,48 @@
|
|||||||
<div><webaudio-knob id="lack/3" src="knobs/leds.png" height="17" width="17" diameter="17" min="0" max="6" value="0" sprites="6"></webaudio-knob></div>
|
<div><webaudio-knob id="lack/3" src="knobs/leds.png" height="17" width="17" diameter="17" min="0" max="6" value="0" sprites="6"></webaudio-knob></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- blackout button -->
|
||||||
|
<div class="blackout">
|
||||||
|
<div class="lasertextxs">Emergy Black</div>
|
||||||
|
<div><webaudio-switch id="emergency" height="64" width="64" value="0" src="knobs/blackout.png" type="toggle"></webaudio-switch></div>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<!--
|
|
||||||
<div class="topgrid">
|
<div class="topgrid">
|
||||||
<div class="lasertext">Laser</div>
|
<!--
|
||||||
<div><webaudio-knob id="noteon" src="knobs/Prophetic5.png" diameter="70" min="16" max="20" value="0" sprites="5"></webaudio-knob></div>
|
<div class="app">
|
||||||
<div><webaudio-param style="font-size:medium;" link="noteon"></webaudio-param></div>
|
<x-sign>
|
||||||
<div class="lasertext">Set</div>
|
<div class="glitch __city" data-text="paris city">
|
||||||
<div><webaudio-knob id="noteon" src="knobs/Prophetic5.png" diameter="70" min="8" max="12" value="4" sprites="5"></webaudio-knob></div>
|
</div>
|
||||||
<div class="lasertext">Curve</div>
|
<div class="glitch __info" data-text="paris city">
|
||||||
<div><webaudio-knob id="noteon" src="knobs/Prophetic10.png" diameter="70" min="0" max="7" value="4" sprites="10"></webaudio-knob></div>
|
</div>
|
||||||
<div class="lasertext">Simu</div>
|
|
||||||
<div><webaudio-knob id="noteon" src="knobs/Prophetic5.png" diameter="70" min="24" max="28" value="0" sprites="5"></webaudio-knob></div>
|
<div class="glitch __state">
|
||||||
-->
|
<table class="t-info">
|
||||||
|
<tr>
|
||||||
|
<th class="xl-info" colspan="2" rowspan="2"></th>
|
||||||
|
<th class="sm-info" colspan="2"></th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="sm-info" colspan="2">http://www.teamlaser.fr</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</x-sign>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
<div class="lasertext">Laser</div>
|
||||||
|
<div><webaudio-knob id="noteon" src="knobs/Prophetic5.png" diameter="70" min="16" max="20" value="0" sprites="5"></webaudio-knob></div>
|
||||||
|
<div><webaudio-param style="font-size:medium;" link="noteon"></webaudio-param></div>
|
||||||
|
<div class="lasertext">Set</div>
|
||||||
|
<div><webaudio-knob id="noteon" src="knobs/Prophetic5.png" diameter="70" min="8" max="12" value="4" sprites="5"></webaudio-knob></div>
|
||||||
|
<div class="lasertext">Curve</div>
|
||||||
|
<div><webaudio-knob id="noteon" src="knobs/Prophetic10.png" diameter="70" min="0" max="7" value="4" sprites="10"></webaudio-knob></div>
|
||||||
|
<div class="lasertext">Simu</div>
|
||||||
|
<div><webaudio-knob id="noteon" src="knobs/Prophetic5.png" diameter="70" min="24" max="28" value="0" sprites="5"></webaudio-knob></div>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div></div>
|
<div></div>
|
||||||
<div></div>
|
<div></div>
|
||||||
@ -109,15 +145,57 @@
|
|||||||
<webaudio-switch id="simu" height="10" width="99" value="0" src="knobs/simu.png" type="toggle"></webaudio-switch>
|
<webaudio-switch id="simu" height="10" width="99" value="0" src="knobs/simu.png" type="toggle"></webaudio-switch>
|
||||||
<webaudio-switch id="run" height="10" width="99" value="0" src="knobs/run.png" type="toggle"></webaudio-switch>
|
<webaudio-switch id="run" height="10" width="99" value="0" src="knobs/run.png" type="toggle"></webaudio-switch>
|
||||||
<webaudio-switch id="live" height="10" width="99" value="0" src="knobs/live.png" type="toggle"></webaudio-switch> -->
|
<webaudio-switch id="live" height="10" width="99" value="0" src="knobs/live.png" type="toggle"></webaudio-switch> -->
|
||||||
<button class="button:checked" id="showalign" onclick="showAlign()" checked="checked">Align</button>
|
<webaudio-switch id="align" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/align.png"></webaudio-switch>
|
||||||
<button class="button" id="showcanvas" onclick="showCanvas()">Simu</button>
|
<webaudio-switch id="simu" value="1" height="27" width="75" tooltip="Switch-B" src="knobs/simu.png"></webaudio-switch>
|
||||||
<button class="button" id="showrun" onclick="showRun()">Run</button>
|
<webaudio-switch id="live" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/live.png"></webaudio-switch>
|
||||||
<button class="button" id="showlive" onclick="showLive()">Live</button>
|
<webaudio-switch id="run" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/run.png"></webaudio-switch>
|
||||||
|
<webaudio-switch id="planet" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/planet.png"></webaudio-switch>
|
||||||
|
<webaudio-switch id="nozoid" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/nozoid.png"></webaudio-switch>
|
||||||
|
<!--
|
||||||
|
<button class="button" id="showrun" onclick="showRun()">Run</button>
|
||||||
<button class="button" id="shownozoid" onclick="showNozoid()">Nozoid</button>
|
<button class="button" id="shownozoid" onclick="showNozoid()">Nozoid</button>
|
||||||
<button class="button" id="showplanet" onclick="showPlanet()">Planet</button>
|
<button class="button" id="showplanet" onclick="showPlanet()">Planet</button>
|
||||||
</div>
|
-->
|
||||||
<div><button class="button" id="showstatus">DISCONNECTED</button></div>
|
</div>
|
||||||
<div></div>
|
<div><button class="submit" id="showstatus">OFFLINE</button></div>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<span class="lasertext">Client</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="noteon 0 selected="selected" ">0</option>
|
||||||
|
<option value="noteon 1">1</option>
|
||||||
|
<option value="noteon 2">2</option>
|
||||||
|
<option value="noteon 3">3</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span class="lasertext">PL</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="noteon 24" selected="selected" >0</option>
|
||||||
|
<option value="noteon 25">1</option>
|
||||||
|
<option value="noteon 26">2</option>
|
||||||
|
<option value="noteon 27">3</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span class="lasertext">Laser</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="noteon 24" selected="selected" >0</option>
|
||||||
|
<option value="noteon 25">1</option>
|
||||||
|
<option value="noteon 26">2</option>
|
||||||
|
<option value="noteon 27">3</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="planet/planetUI" selected="selected" >Planetarium</option>
|
||||||
|
<option value="nozoid/nozoidUI">Nozoid</option>
|
||||||
|
<option value="vj/vjUI">VJing</option>
|
||||||
|
<option value="ai/aiUI">AI</option>
|
||||||
|
<option value="lissa/lissaUI">Lissa</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@ -146,7 +224,7 @@
|
|||||||
<webaudio-switch id="swap/Y/0" value="0" height="25" width="21" tooltip="Switch-B" src="knobs/swapy.png"></webaudio-switch>
|
<webaudio-switch id="swap/Y/0" value="0" height="25" width="21" tooltip="Switch-B" src="knobs/swapy.png"></webaudio-switch>
|
||||||
</div>
|
</div>
|
||||||
<!-- Lasergrid 0 -->
|
<!-- Lasergrid 0 -->
|
||||||
<div class="lasergrid" style="background-image: url(lasergrid0.png);">
|
<div class="lasergrid" style="background-image: url(knobs/lasergrid0.png);">
|
||||||
|
|
||||||
<div><webaudio-param id="kpps/0" link="kpps/0" ></webaudio-param></div>
|
<div><webaudio-param id="kpps/0" link="kpps/0" ></webaudio-param></div>
|
||||||
<div><webaudio-param id="points/0" link="points/0"></webaudio-param></div>
|
<div><webaudio-param id="points/0" link="points/0"></webaudio-param></div>
|
||||||
@ -200,7 +278,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Lasergrid 1 -->
|
<!-- Lasergrid 1 -->
|
||||||
<div class="lasergrid" style="background-image: url(lasergrid1.png);">
|
<div class="lasergrid" style="background-image: url(knobs/lasergrid1.png);">
|
||||||
<div><webaudio-param id="kpps/1" link="kpps/1"></webaudio-param></div>
|
<div><webaudio-param id="kpps/1" link="kpps/1"></webaudio-param></div>
|
||||||
<div><webaudio-param id="points/1" link="points/1"></webaudio-param></div>
|
<div><webaudio-param id="points/1" link="points/1"></webaudio-param></div>
|
||||||
<div class="lasertext">kPPS</div>
|
<div class="lasertext">kPPS</div>
|
||||||
@ -253,7 +331,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Laser 2 grid -->
|
<!-- Laser 2 grid -->
|
||||||
<div class="lasergrid" style="background-image: url(lasergrid2.png)">
|
<div class="lasergrid" style="background-image: url(knobs/lasergrid2.png)">
|
||||||
<div><webaudio-param id="kpps/2" link="kpps/2"></webaudio-param></div>
|
<div><webaudio-param id="kpps/2" link="kpps/2"></webaudio-param></div>
|
||||||
<div><webaudio-param id="points/2" link="points/2"></webaudio-param></div>
|
<div><webaudio-param id="points/2" link="points/2"></webaudio-param></div>
|
||||||
<div class="lasertext">kPPS</div>
|
<div class="lasertext">kPPS</div>
|
||||||
@ -309,7 +387,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Laser 3 grid -->
|
<!-- Laser 3 grid -->
|
||||||
<div class="lasergrid" style="background-image: url(lasergrid3.png)">
|
<div class="lasergrid" style="background-image: url(knobs/lasergrid3.png)">
|
||||||
<div><webaudio-param id="kpps/3" link="kpps/3" ></webaudio-param></div>
|
<div><webaudio-param id="kpps/3" link="kpps/3" ></webaudio-param></div>
|
||||||
<div><webaudio-param id="points/3" link="points/3"></webaudio-param></div>
|
<div><webaudio-param id="points/3" link="points/3"></webaudio-param></div>
|
||||||
<div class="lasertext">kPPS</div>
|
<div class="lasertext">kPPS</div>
|
||||||
@ -441,33 +519,330 @@
|
|||||||
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Simulator to display point list
|
Simulator and interfaces
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<div id = "mgsimu" class="mgsimu">
|
<div id = "mgsimu" class="mgsimu">
|
||||||
|
<!-- left part : simulator -->
|
||||||
<div>
|
<div>
|
||||||
<canvas id="canvas" width="500" height="400" style="border-color: #445;border-style:groove;border-width:1px;"></canvas>
|
<canvas id="canvas" width="500" height="400" style="border-color: #445;border-style:groove;border-width:1px;"></canvas>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Selection buttons grid -->
|
<!-- right part : interdace -->
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<!-- sub right part : planetarium -->
|
||||||
|
|
||||||
|
<div id ="planetUI" style = "display: grid;justify-items: center;">
|
||||||
|
<!-- Stop and start switch -->
|
||||||
|
<div>
|
||||||
|
<div><webaudio-switch id="planet/start" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/planet.png"></webaudio-switch></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form onsubmit="onSubmit(); return false;">
|
||||||
|
<span class="lasertext">Country (FR)</span>
|
||||||
|
<input class = "submitsmall" onchange = "onSubmit(this.id)" type="text" id="planet/country">
|
||||||
|
<span class="lasertext">City</span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/city">
|
||||||
|
</form>
|
||||||
|
<form>
|
||||||
|
<span class="lasertext">Date/Time (2012-7-12 23:00:00) </span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/time">
|
||||||
|
</form>
|
||||||
|
<form onsubmit="onSubmit(); return false;">
|
||||||
|
<span class="lasertext">Laser 0 : Alt</span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/alt/0">
|
||||||
|
<span class="lasertext">Az</span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/az/0">
|
||||||
|
<span class="lasertext">Angle</span>
|
||||||
|
<input class = "submitsmall" onchange = "onSubmit(this.id)" type="text" id="planet/angle/0">
|
||||||
|
</form>
|
||||||
|
<form onsubmit="onSubmit(); return false;">
|
||||||
|
<span class="lasertext">Laser 1 : Alt</span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/alt/1">
|
||||||
|
<span class="lasertext">Az</span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/az/1">
|
||||||
|
<span class="lasertext">Angle</span>
|
||||||
|
<input class = "submitsmall" onchange = "onSubmit(this.id)" type="text" id="planet/angle/1">
|
||||||
|
</form>
|
||||||
|
<form onsubmit="onSubmit(); return false;">
|
||||||
|
<span class="lasertext">Laser 2 : Alt</span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/alt/2">
|
||||||
|
<span class="lasertext">Az</span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/az/2">
|
||||||
|
<span class="lasertext">Angle</span>
|
||||||
|
<input class = "submitsmall" onchange = "onSubmit(this.id)" type="text" id="planet/angle/2">
|
||||||
|
</form>
|
||||||
|
<form onsubmit="onSubmit(); return false;">
|
||||||
|
<span class="lasertext">Laser 3 : Alt</span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/alt/3">
|
||||||
|
<span class="lasertext">Az</span>
|
||||||
|
<input class = "submit" onchange = "onSubmit(this.id)" type="text" id="planet/az/3">
|
||||||
|
<span class="lasertext">Angle</span>
|
||||||
|
<input class = "submitsmall" onchange = "onSubmit(this.id)" type="text" id="planet/angle/3">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- sub right part : lissaUI -->
|
||||||
|
|
||||||
|
<div id ="lissaUI" style = "display: none;justify-items: center;">
|
||||||
|
<!-- Lissa interface -->
|
||||||
|
<div class="lissabox">
|
||||||
|
<div class="lasertext" style="border-color:#334;border-style: groove;border-width:1px;">LISSA
|
||||||
|
</div>
|
||||||
|
<div class="lissagrid">
|
||||||
|
|
||||||
|
<div><webaudio-knob id="cc/5" diameter="60" min="0" max="127" value="0"></webaudio-knob></div>
|
||||||
|
<div><webaudio-knob id="cc/6" diameter="60" min="0" max="127" value="0"></webaudio-knob></div>
|
||||||
|
<div><webaudio-param link="cc/5" value="0"></webaudio-param></div>
|
||||||
|
<div><webaudio-param link="cc/6" value="0"></webaudio-param></div>
|
||||||
|
<div class="lasertext">Select X</div>
|
||||||
|
<div class="lasertext">Select Y</div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div><webaudio-knob id="cc/21" diameter="60" min="1" max="127" value="1"></webaudio-knob></div>
|
||||||
|
<div><webaudio-knob id="cc/22" diameter="60" min="1" max="127" value="1"></webaudio-knob></div>
|
||||||
|
<div><webaudio-param link="cc/21" value="0"></webaudio-param></div>
|
||||||
|
<div><webaudio-param link="cc/22" value="0"></webaudio-param></div>
|
||||||
|
<div class="lasertext">FOV</div>
|
||||||
|
<div class="lasertext">Dist</div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div><webaudio-knob id="cc/1" diameter="60" min="1" max="127" value="1"></webaudio-knob></div>
|
||||||
|
<div><webaudio-knob id="cc/2" diameter="60" min="1" max="127" value="1"></webaudio-knob></div>
|
||||||
|
<div><webaudio-param link="cc/1" value="0"></webaudio-param></div>
|
||||||
|
<div><webaudio-param link="cc/2" value="0"></webaudio-param></div>
|
||||||
|
<div class="lasertext">Offset X</div>
|
||||||
|
<div class="lasertext">Offset Y</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- sub right part : aiUI -->
|
||||||
|
|
||||||
|
<div id ="aiUI" style = "display: none;justify-items: center;">
|
||||||
|
<!-- with AI Interface -->
|
||||||
|
<div class="withaibox">
|
||||||
|
<div class="lasertext" style="border-color:#334;border-style: groove;border-width:1px;">With AI
|
||||||
|
</div>
|
||||||
|
<div class="withaigrid">
|
||||||
|
<div><webaudio-knob id="ai/velocity" diameter="60" min="0" max="127" value="64"></webaudio-knob></div>
|
||||||
|
<div><webaudio-knob id="ai/expressivity" diameter="60" min="0" max="127" value="64"></webaudio-knob></div>
|
||||||
|
<div><webaudio-param link="ai/velocity" value="64"></webaudio-param></div>
|
||||||
|
<div><webaudio-param link="ai/expressivity" value="64"></webaudio-param></div>
|
||||||
|
<div class="lasertext">Velocity</div>
|
||||||
|
<div class="lasertext">Express.</div>
|
||||||
|
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div><webaudio-knob id="ai/sensibility" diameter="60" min="0" max="127" value="64"></webaudio-knob></div>
|
||||||
|
<div><webaudio-knob id="ai/beauty" diameter="60" min="0" max="127" value="64"></webaudio-knob></div>
|
||||||
|
<div><webaudio-param link="ai/sensibility" value="64"></webaudio-param></div>
|
||||||
|
<div><webaudio-param link="ai/beauty" value="64"></webaudio-param></div>
|
||||||
|
<div class="lasertext">Sens.</div>
|
||||||
|
<div class="lasertext">Beauty</div>
|
||||||
|
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div><webaudio-knob id="cc/1" diameter="60" min="1" max="127" value="64"></webaudio-knob></div>
|
||||||
|
<div><webaudio-knob id="cc/2" diameter="60" min="1" max="127" value="64"></webaudio-knob></div>
|
||||||
|
<div><webaudio-param link="cc/1" value="1"></webaudio-param></div>
|
||||||
|
<div><webaudio-param link="cc/2" value="1"></webaudio-param></div>
|
||||||
|
<div class="lasertext">CC 1</div>
|
||||||
|
<div class="lasertext">CC 2</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- sub right part : vjUI -->
|
||||||
|
|
||||||
|
<div id ="vjUI" style = "display: none;justify-items: center;">
|
||||||
|
<!-- VJ Interface -->
|
||||||
|
<!-- Stop and start switch -->
|
||||||
|
<div><webaudio-switch id="vj/start" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/live.png"></webaudio-switch></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- sub right part : NozoidUI -->
|
||||||
|
|
||||||
|
<div id ="nozoidUI" style = "display: none;justify-items: center;">
|
||||||
|
<!-- Stop and start switch -->
|
||||||
|
<div>
|
||||||
|
<div><webaudio-switch id="nozoid/start" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/nozoids.png"></webaudio-switch></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<!-- Nozoids list and leds -->
|
||||||
|
<div>
|
||||||
|
<webaudio-switch id="nozoid/mmo3" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/mmo3.png"></webaudio-switch>
|
||||||
|
<webaudio-knob id="nozoid/mmo3/led" src="knobs/leds.png" height="17" width="17" diameter="17" min="0" max="6" value="0" sprites="6"></webaudio-knob>
|
||||||
|
|
||||||
|
<webaudio-switch id="nozoid/ocs2" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/ocs2.png"></webaudio-switch>
|
||||||
|
<webaudio-knob id="nozoid/ocs2/led" src="knobs/leds.png" height="17" width="17" diameter="17" min="0" max="6" value="0" sprites="6"></webaudio-knob>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Curve choice -->
|
||||||
|
<div>
|
||||||
|
<span class="lasertext" >Curve</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="nozoid/curve 0">0</option>
|
||||||
|
<option value="nozoid/curve 1">1</option>
|
||||||
|
<option value="nozoid/curve 2">2</option>
|
||||||
|
<option value="nozoid/curve 3">3</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- Color choice -->
|
||||||
|
<span class="lasertext" >Color</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="nozoid/color 255 0 0">Red</option>
|
||||||
|
<option value="nozoid/color 0 255 0">Green</option>
|
||||||
|
<option value="nozoid/color 0 0 255">Blue</option>
|
||||||
|
<option value="nozoid/color 255 255 0">Yellow</option>
|
||||||
|
<option value="nozoid/color 0 255 255">Cyan</option>
|
||||||
|
<option value="nozoid/color 255 0 255">Magenta</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- X curve Line IN and X Curve choices -->
|
||||||
|
<div>
|
||||||
|
<span class="lasertext" >X : LineIN</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="nozoid/X/IN 0">STOP</option>
|
||||||
|
<option value="nozoid/X/IN 1">VCO1</option>
|
||||||
|
<option value="nozoid/X/IN 2">VCO2</option>
|
||||||
|
<option value="nozoid/X/IN 3">LFO1</option>
|
||||||
|
<option value="nozoid/X/IN 4">LFO2</option>
|
||||||
|
<option value="nozoid/X/IN 5">LFO3</option>
|
||||||
|
<option value="nozoid/X/IN 6">CV/GEN</option>
|
||||||
|
<option value="nozoid/X/IN 7">ADSR</option>
|
||||||
|
<option value="nozoid/X/IN 8">LIGHT</option>
|
||||||
|
<option value="nozoid/X/IN 9">LINE IN</option>
|
||||||
|
<option value="nozoid/X/IN 10">MIDI</option>
|
||||||
|
<option value="nozoid/X/IN 11">CV1</option>
|
||||||
|
<option value="nozoid/X/IN 12">CV2</option>
|
||||||
|
<option value="nozoid/X/IN 13">CV3</option>
|
||||||
|
<option value="nozoid/X/IN 17">1 Out</option>
|
||||||
|
<option value="nozoid/X/IN 18">2 Out</option>
|
||||||
|
<option value="nozoid/X/IN 20">VCF</option>
|
||||||
|
<option value="nozoid/X/IN 21">MIX</option>
|
||||||
|
<option value="nozoid/X/IN 22">VCA</option>
|
||||||
|
</select>
|
||||||
|
<span class="lasertext" >Curve</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="nozoid/X/IN 0">Stop</option>
|
||||||
|
<option value="nozoid/X/IN 1">OSC1</option>
|
||||||
|
<option value="nozoid/X/IN 2">OSC2</option>
|
||||||
|
<option value="nozoid/X/IN 3">OSC3</option>
|
||||||
|
<option value="nozoid/X/IN 4">LFO1</option>
|
||||||
|
<option value="nozoid/X/IN 5">LFO2</option>
|
||||||
|
<option value="nozoid/X/IN 6">LFO3</option>
|
||||||
|
<option value="nozoid/X/IN 7">ADSR</option>
|
||||||
|
<option value="nozoid/X/IN 8">CV</option>
|
||||||
|
<option value="nozoid/X/IN 9">Line IN</option>
|
||||||
|
<option value="nozoid/X/IN 10">Jstck</option>
|
||||||
|
<option value="nozoid/X/IN 11">INL</option>
|
||||||
|
<option value="nozoid/X/IN 12">INR</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Y curve Line IN and Y Curve choices -->
|
||||||
|
<div>
|
||||||
|
<span class="lasertext" >Y : LineIN</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="nozoid/Y/IN 0">STOP</option>
|
||||||
|
<option value="nozoid/Y/IN 1">VCO1</option>
|
||||||
|
<option value="nozoid/Y/IN 2">VCO2</option>
|
||||||
|
<option value="nozoid/Y/IN 3">LFO1</option>
|
||||||
|
<option value="nozoid/Y/IN 4">LFO2</option>
|
||||||
|
<option value="nozoid/Y/IN 5">LFO3</option>
|
||||||
|
<option value="nozoid/Y/IN 6">CV/GEN</option>
|
||||||
|
<option value="nozoid/Y/IN 7">ADSR</option>
|
||||||
|
<option value="nozoid/Y/IN 8">LIGHT</option>
|
||||||
|
<option value="nozoid/Y/IN 9">LINE IN</option>
|
||||||
|
<option value="nozoid/Y/IN 10">MIDI</option>
|
||||||
|
<option value="nozoid/Y/IN 11">CV1</option>
|
||||||
|
<option value="nozoid/Y/IN 12">CV2</option>
|
||||||
|
<option value="nozoid/Y/IN 13">CV3</option>
|
||||||
|
<option value="nozoid/Y/IN 17">1 Out</option>
|
||||||
|
<option value="nozoid/Y/IN 18">2 Out</option>
|
||||||
|
<option value="nozoid/Y/IN 20">VCF</option>
|
||||||
|
<option value="nozoid/Y/IN 21">MIX</option>
|
||||||
|
<option value="nozoid/Y/IN 22">VCA</option>
|
||||||
|
</select>
|
||||||
|
<span class="lasertext" >Curve</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="nozoid/Y/IN 0">Stop</option>
|
||||||
|
<option value="nozoid/Y/IN 1">OSC1</option>
|
||||||
|
<option value="nozoid/Y/IN 2">OSC2</option>
|
||||||
|
<option value="nozoid/Y/IN 3">OSC3</option>
|
||||||
|
<option value="nozoid/Y/IN 4">LFO1</option>
|
||||||
|
<option value="nozoid/Y/IN 5">LFO2</option>
|
||||||
|
<option value="nozoid/Y/IN 6">LFO3</option>
|
||||||
|
<option value="nozoid/Y/IN 7">ADSR</option>
|
||||||
|
<option value="nozoid/Y/IN 8">CV</option>
|
||||||
|
<option value="nozoid/Y/IN 9">Line IN</option>
|
||||||
|
<option value="nozoid/Y/IN 10">Jstck</option>
|
||||||
|
<option value="nozoid/Y/IN 11">INL</option>
|
||||||
|
<option value="nozoid/X/IN 12">INR</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Automodulation X and Y choice -->
|
||||||
|
<div>
|
||||||
|
<span class="lasertext" >Automod : X</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="nozoid/auto/X/0">0</option>
|
||||||
|
<option value="nozoid/auto/X/1 Out">1 Out</option>
|
||||||
|
<option value="nozoid/auto/X/2 Out">2 Out</option>
|
||||||
|
<option value="nozoid/auto/X/3 Out">3 Out</option>
|
||||||
|
<option value="nozoid/auto/X/OutR">OutR</option>
|
||||||
|
<option value="nozoid/auto/X/OutL">OutL</option>
|
||||||
|
</select>
|
||||||
|
<span class="lasertext">Y</span>
|
||||||
|
<select onclick="buttonClicked(this.value)">
|
||||||
|
<option value="nozoid/auto/Y/0">0</option>
|
||||||
|
<option value="nozoid/auto/Y/1 Out">1 Out</option>
|
||||||
|
<option value="nozoid/auto/Y/2 Out">2 Out</option>
|
||||||
|
<option value="nozoid/auto/Y/3 Out">3 Out</option>
|
||||||
|
<option value="nozoid/auto/Y/OutR">OutR</option>
|
||||||
|
<option value="nozoid/auto/Y/OutL">OutL</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Nozoid speed UP and Down -->
|
||||||
|
<div>
|
||||||
|
<webaudio-switch id="nozoid/down 50" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/slower.png"></webaudio-switch>
|
||||||
|
<webaudio-switch id="nozoid/up 50" value="0" height="27" width="75" tooltip="Switch-B" src="knobs/faster.png"></webaudio-switch>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Selection buttons grid
|
||||||
<div id="cnvbuttons" class="cnvbuttons">
|
<div id="cnvbuttons" class="cnvbuttons">
|
||||||
<div><img src="knobs/client.png" alt=" " class="icongrid" /></div>
|
|
||||||
<div><img src="knobs/client.png" alt=" " class="icongrid" /></div>
|
<div><img src="knobs/client.png" alt=" " class="icongrid" /></div>
|
||||||
<div><img src="knobs/client.png" alt=" " class="icongrid" /></div>
|
<div><img src="knobs/client.png" alt=" " class="icongrid" /></div>
|
||||||
<div><img src="knobs/client.png" alt=" " class="icongrid" /></div>
|
<div><img src="knobs/client.png" alt=" " class="icongrid" /></div>
|
||||||
|
<div><img src="knobs/client.png" alt=" " class="icongrid" /></div>
|
||||||
<div><button id ="noteon 0" onclick ="buttonClicked(this.id)" class="button:checked">0</button></div>
|
<div><button id ="noteon 0" onclick ="buttonClicked(this.id)" class="button:checked">0</button></div>
|
||||||
<div><button id ="noteon 1" onclick ="buttonClicked(this.id)" class="button">1</button></div>
|
<div><button id ="noteon 1" onclick ="buttonClicked(this.id)" class="button">1</button></div>
|
||||||
<div><button id ="noteon 2" onclick ="buttonClicked(this.id)" class="button">2</button></div>
|
<div><button id ="noteon 2" onclick ="buttonClicked(this.id)" class="button">2</button></div>
|
||||||
<div><button id ="noteon 3" onclick ="buttonClicked(this.id)" class="button">3</button></div>
|
<div><button id ="noteon 3" onclick ="buttonClicked(this.id)" class="button">3</button></div>
|
||||||
<div><img src="knobs/iconljay2.png" alt=" " class="icongrid" /></div>
|
<div><img src="knobs/iconljay2.png" alt=" " class="icongrid" /></div>
|
||||||
<div><img src="knobs/iconljay2.png" alt=" " class="icongrid" /></div>
|
<div><img src="knobs/iconljay2.png" alt=" " class="icongrid" /></div>
|
||||||
<div><img src="knobs/iconljay2.png" alt=" " class="icongrid" /></div>
|
<div><img src="knobs/iconljay2.png" alt=" " class="icongrid" /></div>
|
||||||
<div><img src="knobs/iconljay2.png" alt=" " class="icongrid" /></div>
|
<div><img src="knobs/iconljay2.png" alt=" " class="icongrid" /></div>
|
||||||
<div><button id ="noteon 24" onclick ="buttonClicked(this.id)" class="button:checked">PL 0</button></div>
|
<div><button id ="noteon 24" onclick ="buttonClicked(this.id)" class="button:checked">PL 0</button></div>
|
||||||
<div><button id ="noteon 25" onclick ="buttonClicked(this.id)" class="button">PL 1</button></div>
|
<div><button id ="noteon 25" onclick ="buttonClicked(this.id)" class="button">PL 1</button></div>
|
||||||
<div><button id ="noteon 26" onclick ="buttonClicked(this.id)" class="button">PL 2</button></div>
|
<div><button id ="noteon 26" onclick ="buttonClicked(this.id)" class="button">PL 2</button></div>
|
||||||
<div><button id ="noteon 27" onclick ="buttonClicked(this.id)" class="button">PL 3</button></div>
|
<div><button id ="noteon 27" onclick ="buttonClicked(this.id)" class="button">PL 3</button></div>
|
||||||
</div>
|
</div>
|
||||||
|
-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@ -589,64 +964,64 @@
|
|||||||
<div>
|
<div>
|
||||||
<span class="lasertext" >XCURVE LineIN</span>
|
<span class="lasertext" >XCURVE LineIN</span>
|
||||||
<select onclick="buttonClicked(this.value)">
|
<select onclick="buttonClicked(this.value)">
|
||||||
<option value="x/IN 0">STOP</option>
|
<option value="nozoid/X/IN 0">STOP</option>
|
||||||
<option value="x/IN 1">VCO1</option>
|
<option value="nozoid/X/IN 1">VCO1</option>
|
||||||
<option value="x/IN 2">VCO2</option>
|
<option value="nozoid/X/IN 2">VCO2</option>
|
||||||
<option value="x/IN 3">LFO1</option>
|
<option value="nozoid/X/IN 3">LFO1</option>
|
||||||
<option value="x/IN 4">LFO2</option>
|
<option value="nozoid/X/IN 4">LFO2</option>
|
||||||
<option value="x/IN 5">LFO3</option>
|
<option value="nozoid/X/IN 5">LFO3</option>
|
||||||
<option value="x/IN 6">CV/GEN</option>
|
<option value="nozoid/X/IN 6">CV/GEN</option>
|
||||||
<option value="x/IN 7">ADSR</option>
|
<option value="nozoid/X/IN 7">ADSR</option>
|
||||||
<option value="x/IN 8">LIGHT</option>
|
<option value="nozoid/X/IN 8">LIGHT</option>
|
||||||
<option value="x/IN 9">LINE IN</option>
|
<option value="nozoid/X/IN 9">LINE IN</option>
|
||||||
<option value="x/IN 10">MIDI</option>
|
<option value="nozoid/X/IN 10">MIDI</option>
|
||||||
<option value="x/IN 11">CV1</option>
|
<option value="nozoid/X/IN 11">CV1</option>
|
||||||
<option value="x/IN 12">CV2</option>
|
<option value="nozoid/X/IN 12">CV2</option>
|
||||||
<option value="x/IN 13">CV3</option>
|
<option value="nozoid/X/IN 13">CV3</option>
|
||||||
<option value="x/IN 17">1 Out</option>
|
<option value="nozoid/X/IN 17">1 Out</option>
|
||||||
<option value="x/IN 18">2 Out</option>
|
<option value="nozoid/X/IN 18">2 Out</option>
|
||||||
<option value="x/IN 20">VCF</option>
|
<option value="nozoid/X/IN 20">VCF</option>
|
||||||
<option value="x/IN 21">MIX</option>
|
<option value="nozoid/X/IN 21">MIX</option>
|
||||||
<option value="x/IN 22">VCA</option>
|
<option value="nozoid/X/IN 22">VCA</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<span class="lasertext" >XCURVE</span>
|
<span class="lasertext" >XCURVE</span>
|
||||||
<select onclick="buttonClicked(this.value)">
|
<select onclick="buttonClicked(this.value)">
|
||||||
<option value="x/IN 0">Stop</option>
|
<option value="nozoid/X/IN 0">Stop</option>
|
||||||
<option value="x/IN 1">OSC1</option>
|
<option value="nozoid/X/IN 1">OSC1</option>
|
||||||
<option value="x/IN 2">OSC2</option>
|
<option value="nozoid/X/IN 2">OSC2</option>
|
||||||
<option value="x/IN 3">OSC3</option>
|
<option value="nozoid/X/IN 3">OSC3</option>
|
||||||
<option value="x/IN 4">LFO1</option>
|
<option value="nozoid/X/IN 4">LFO1</option>
|
||||||
<option value="x/IN 5">LFO2</option>
|
<option value="nozoid/X/IN 5">LFO2</option>
|
||||||
<option value="x/IN 6">LFO3</option>
|
<option value="nozoid/X/IN 6">LFO3</option>
|
||||||
<option value="x/IN 7">ADSR</option>
|
<option value="nozoid/X/IN 7">ADSR</option>
|
||||||
<option value="x/IN 8">CV</option>
|
<option value="nozoid/X/IN 8">CV</option>
|
||||||
<option value="x/IN 9">Line IN</option>
|
<option value="nozoid/X/IN 9">Line IN</option>
|
||||||
<option value="x/IN 10">Jstck</option>
|
<option value="nozoid/X/IN 10">Jstck</option>
|
||||||
<option value="x/IN 11">INL</option>
|
<option value="nozoid/X/IN 11">INL</option>
|
||||||
<option value="x/IN 12">INR</option>
|
<option value="nozoid/X/IN 12">INR</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<span class="lasertext" >Automodulation X ? </span>
|
<span class="lasertext" >Automodulation X ? </span>
|
||||||
<select onclick="buttonClicked(this.value)">
|
<select onclick="buttonClicked(this.value)">
|
||||||
<option value="auto/X/0">0</option>
|
<option value="nozoid/auto/X/0">0</option>
|
||||||
<option value="auto/X/1 Out">1 Out</option>
|
<option value="nozoid/auto/X/1 Out">1 Out</option>
|
||||||
<option value="auto/X/2 Out">2 Out</option>
|
<option value="nozoid/auto/X/2 Out">2 Out</option>
|
||||||
<option value="auto/X/3 Out">3 Out</option>
|
<option value="nozoid/auto/X/3 Out">3 Out</option>
|
||||||
<option value="auto/X/OutR">OutR</option>
|
<option value="nozoid/auto/X/OutR">OutR</option>
|
||||||
<option value="auto/X/OutL">OutL</option>
|
<option value="nozoid/auto/X/OutL">OutL</option>
|
||||||
</select>
|
</select>
|
||||||
<span class="lasertext">Automodulation Y ? </span>
|
<span class="lasertext">Automodulation Y ? </span>
|
||||||
<select onclick="buttonClicked(this.value)">
|
<select onclick="buttonClicked(this.value)">
|
||||||
<option value="auto/Y/0">0</option>
|
<option value="nozoid/auto/Y/0">0</option>
|
||||||
<option value="auto/Y/1 Out">1 Out</option>
|
<option value="nozoid/auto/Y/1 Out">1 Out</option>
|
||||||
<option value="auto/Y/2 Out">2 Out</option>
|
<option value="nozoid/auto/Y/2 Out">2 Out</option>
|
||||||
<option value="auto/Y/3 Out">3 Out</option>
|
<option value="nozoid/auto/Y/3 Out">3 Out</option>
|
||||||
<option value="auto/Y/OutR">OutR</option>
|
<option value="nozoid/auto/Y/OutR">OutR</option>
|
||||||
<option value="auto/Y/OutL">OutL</option>
|
<option value="nozoid/auto/Y/OutL">OutL</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -707,13 +1082,13 @@
|
|||||||
var log=[];
|
var log=[];
|
||||||
var knobs = document.getElementsByTagName('webaudio-knob');
|
var knobs = document.getElementsByTagName('webaudio-knob');
|
||||||
for(var i = 0; i < knobs.length; i++){
|
for(var i = 0; i < knobs.length; i++){
|
||||||
knobs[i].addEventListener("input",Dump,false);
|
knobs[i].addEventListener("input",Dump,false);
|
||||||
knobs[i].addEventListener("change",Dump,false);
|
knobs[i].addEventListener("change",Dump,false);
|
||||||
}
|
}
|
||||||
var sliders = document.getElementsByTagName('webaudio-slider');
|
var sliders = document.getElementsByTagName('webaudio-slider');
|
||||||
for(var i = 0; i < sliders.length; i++){
|
for(var i = 0; i < sliders.length; i++){
|
||||||
sliders[i].addEventListener("input",Dump,false);
|
sliders[i].addEventListener("input",Dump,false);
|
||||||
sliders[i].addEventListener("change",Dump,false);
|
sliders[i].addEventListener("change",Dump,false);
|
||||||
}
|
}
|
||||||
var switches = document.getElementsByTagName('webaudio-switch');
|
var switches = document.getElementsByTagName('webaudio-switch');
|
||||||
for(var i = 0; i < switches.length; i++) {
|
for(var i = 0; i < switches.length; i++) {
|
||||||
@ -722,7 +1097,7 @@
|
|||||||
function Dump(e) {
|
function Dump(e) {
|
||||||
var str="";
|
var str="";
|
||||||
str=e.type + " : " + e.target.id + " : " + e.target.value + " ";
|
str=e.type + " : " + e.target.id + " : " + e.target.value + " ";
|
||||||
//console.log(str);
|
console.log(str);
|
||||||
log.unshift(str);
|
log.unshift(str);
|
||||||
log.length=1;
|
log.length=1;
|
||||||
str="";
|
str="";
|
||||||
@ -734,27 +1109,52 @@
|
|||||||
evview.innerHTML=str;
|
evview.innerHTML=str;
|
||||||
//console.log( e.type + "/" + e.target.id + "/" + e.target.value);
|
//console.log( e.type + "/" + e.target.id + "/" + e.target.value);
|
||||||
|
|
||||||
if (e.target.id === "noteon" && e.type ==="input")
|
if (e.target.id === "align" && e.type === "change") {
|
||||||
console.log("only noteon change are sent not input");
|
showAlign();
|
||||||
|
}
|
||||||
|
if (e.target.id === "simu" && e.type === "change") {
|
||||||
|
showCanvas();
|
||||||
|
}
|
||||||
|
if (e.target.id === "live" && e.type === "change") {
|
||||||
|
showLive();
|
||||||
|
}
|
||||||
|
if (e.target.id === "nozoid" && e.type === "change") {
|
||||||
|
showNozoid();
|
||||||
|
}
|
||||||
|
if (e.target.id === "planet" && e.type === "change") {
|
||||||
|
showPlanet();
|
||||||
|
}
|
||||||
|
if (e.target.id === "run" && e.type === "change") {
|
||||||
|
showRun();
|
||||||
|
}
|
||||||
|
if (e.target.id === "on" && e.type === "change") {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
|
||||||
else
|
if (e.target.id === "nozoid/down 50" && e.type === "input") {
|
||||||
_WS.send("/" + e.target.id + " " + e.target.value);
|
e.target.value = 1 ;
|
||||||
|
}
|
||||||
// for /scale : after a change (knob is released) reset knob value to 0
|
|
||||||
if (e.target.id.substring(0,5) === "scale" && e.type === "change") {
|
if (e.target.id === "noteon" && e.type ==="input")
|
||||||
e.target.value = 0;
|
console.log("only noteon change are sent not input");
|
||||||
//console.log(e.target.id + "set to 0")
|
else
|
||||||
}
|
_WS.send("/" + e.target.id + " " + e.target.value);
|
||||||
// for /loffset : after a change (knob is released) reset knob value to 0
|
|
||||||
if (e.target.id.substring(0,7) === "loffset" && e.type === "change") {
|
// for /scale : after a change (knob is released) reset knob value to 0
|
||||||
e.target.value = 0;
|
if (e.target.id.substring(0,5) === "scale" && e.type === "change") {
|
||||||
console.log(e.target.id + "set to 0")
|
e.target.value = 0;
|
||||||
}
|
//console.log(e.target.id + "set to 0")
|
||||||
// for /angle : after a change (knob is released) reset knob value to 0
|
}
|
||||||
if (e.target.id.substring(0,5) === "angle" && e.type === "change") {
|
// for /loffset : after a change (knob is released) reset knob value to 0
|
||||||
e.target.value = 0;
|
if (e.target.id.substring(0,7) === "loffset" && e.type === "change") {
|
||||||
//console.log(e.target.id + "set to 0")
|
e.target.value = 0;
|
||||||
}
|
console.log(e.target.id + "set to 0")
|
||||||
|
}
|
||||||
|
// for /angle : after a change (knob is released) reset knob value to 0
|
||||||
|
if (e.target.id.substring(0,5) === "angle" && e.type === "change") {
|
||||||
|
e.target.value = 0;
|
||||||
|
//console.log(e.target.id + "set to 0")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -783,7 +1183,8 @@
|
|||||||
return { x: evt.clientX - rect.left, y: evt.clientY - rect.top };
|
return { x: evt.clientX - rect.left, y: evt.clientY - rect.top };
|
||||||
}
|
}
|
||||||
|
|
||||||
function MouseDown(evt)
|
|
||||||
|
function MouseDown(evt)
|
||||||
{
|
{
|
||||||
mousePosDown = getMousePos(aligncanvas, evt);
|
mousePosDown = getMousePos(aligncanvas, evt);
|
||||||
mouseMsgDown = mousePosDown.x + ' ' + mousePosDown.y;
|
mouseMsgDown = mousePosDown.x + ' ' + mousePosDown.y;
|
||||||
|
BIN
webui/knobs/align.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 5.7 KiB |
BIN
webui/knobs/faster.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 3.1 KiB |
BIN
webui/knobs/live.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 7.3 KiB |
BIN
webui/knobs/mmo3.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 5.0 KiB |
BIN
webui/knobs/nozoid.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
webui/knobs/nozoids.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
webui/knobs/ocs2.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
webui/knobs/planet.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
webui/knobs/power.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
webui/knobs/run.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
webui/knobs/simu.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
webui/knobs/slower.png
Normal file
After Width: | Height: | Size: 3.8 KiB |