implement MASTER related macros
This commit is contained in:
parent
5b70c20e24
commit
c8bfcd22e8
|
@ -9,45 +9,94 @@ from pythonosc import udp_client
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
|
|
||||||
def button_delay(time=0.05):
|
def button_press(server, path, delay=0.05):
|
||||||
sleep(time)
|
server.send_message(path, 1) # button down
|
||||||
|
sleep(delay)
|
||||||
|
server.send_message(path, 0) # button up
|
||||||
|
|
||||||
|
|
||||||
def _master_go(self, expr):
|
def num(string):
|
||||||
if (expr.master().getText() == "*"):
|
|
||||||
print("Main GO")
|
|
||||||
self.server.osc.send_message("/hog/hardware/maingo", 1) # button down
|
|
||||||
button_delay()
|
|
||||||
self.server.osc.send_message("/hog/hardware/maingo", 0) # button up
|
|
||||||
return 1
|
|
||||||
|
|
||||||
print("GO Master is a stub")
|
|
||||||
return -1
|
|
||||||
|
|
||||||
|
|
||||||
def _master_halt(self, expr):
|
|
||||||
print("Halt Master is a stub")
|
|
||||||
return -1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _master_fade(self, expr):
|
|
||||||
print("Fade Master is a stub")
|
|
||||||
return -1
|
|
||||||
|
|
||||||
|
|
||||||
def _master_fade_grand(self, expr):
|
|
||||||
try:
|
try:
|
||||||
level = float(expr.number().getText())
|
num = int(string)
|
||||||
|
return num
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("Expected a number...")
|
num = float(string)
|
||||||
return -1
|
return num
|
||||||
|
|
||||||
|
|
||||||
|
def _master_go(self, ctx):
|
||||||
|
if ctx.number is not None:
|
||||||
|
print("GO MASTER doesn't support goto. "
|
||||||
|
+ "Cue number " + str(ctx.number) + " will be ignored.")
|
||||||
|
|
||||||
|
if (len(ctx.master.targets) == 0):
|
||||||
|
print("Main GO")
|
||||||
|
button_press(self.server.osc, "/hog/hardware/maingo")
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
for i in ctx.master.targets:
|
||||||
|
if isinstance(i, int) is not True:
|
||||||
|
print("GO MASTER macro targets must be intigers. "
|
||||||
|
+ str(i) + " is not an intigers.")
|
||||||
|
continue
|
||||||
|
if (i < 0):
|
||||||
|
print("Master " + str(i) + " should have been greater than 0.")
|
||||||
|
continue
|
||||||
|
master = str(i)
|
||||||
|
print("GO on master " + master)
|
||||||
|
button_press(self.server.osc, "/hog/hardware/go/" + master)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
def _master_halt(self, ctx):
|
||||||
|
if (len(ctx.master.targets) == 0):
|
||||||
|
print("Main HALT")
|
||||||
|
button_press(self.server.osc, "/hog/hardware/mainhalt")
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
for i in ctx.master.targets:
|
||||||
|
if isinstance(i, int) is not True:
|
||||||
|
print("GO MASTER macro targets must be intigers. "
|
||||||
|
+ str(i) + " is not an intigers.")
|
||||||
|
continue
|
||||||
|
if (i < 0):
|
||||||
|
print("Master " + str(i) + " should have been greater than 0.")
|
||||||
|
continue
|
||||||
|
master = str(i)
|
||||||
|
print("HALT on master " + master)
|
||||||
|
button_press(self.server.osc, "/hog/hardware/pause/" + master)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
def _master_fade(self, ctx):
|
||||||
|
level = ctx.number
|
||||||
if (level < 0 or level > 100):
|
if (level < 0 or level > 100):
|
||||||
print("Level must be between 0 and 100.")
|
print("Level must be between 0 and 100.")
|
||||||
return -1
|
return -1
|
||||||
|
if (len(ctx.master.targets) == 0):
|
||||||
|
print("MASTER FADE doesn't support unspecified current master.")
|
||||||
|
return -1
|
||||||
|
else:
|
||||||
|
for i in ctx.master.targets:
|
||||||
|
if isinstance(i, int) is not True:
|
||||||
|
print("FADE MASTER macro targets must be intigers. "
|
||||||
|
+ str(i) + " is not an intigers.")
|
||||||
|
continue
|
||||||
|
if (i < 0):
|
||||||
|
print("Master " + str(i) + " should have been greater than 0.")
|
||||||
|
continue
|
||||||
|
master = str(i)
|
||||||
|
level *= 255 / 100 # percent in Macro, 0>255 in OSC
|
||||||
|
print("FADE MASTER on master " + master)
|
||||||
|
self.server.osc.send_message("/hog/hardware/fader/"+master, level)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
def _master_fade_grand(self, ctx):
|
||||||
|
level = ctx.number
|
||||||
|
if (level < 0 or level > 100):
|
||||||
|
print("Level must be between 0 and 100.")
|
||||||
|
return -1
|
||||||
print("Fading Grand Master to " + str(level) + "%")
|
print("Fading Grand Master to " + str(level) + "%")
|
||||||
level *= 255 / 100 # percent in Macro, 0>255 in OSC
|
level *= 255 / 100 # percent in Macro, 0>255 in OSC
|
||||||
self.server.osc.send_message("/hog/hardware/fader/0", level)
|
self.server.osc.send_message("/hog/hardware/fader/0", level)
|
||||||
|
@ -55,20 +104,12 @@ def _master_fade_grand(self, expr):
|
||||||
|
|
||||||
|
|
||||||
def _master_choose(self, expr):
|
def _master_choose(self, expr):
|
||||||
try:
|
if (expr.number < 0):
|
||||||
master = int(expr.number().getText())
|
|
||||||
except ValueError:
|
|
||||||
print("Expected a number...")
|
|
||||||
return -1
|
|
||||||
|
|
||||||
if (master < 0):
|
|
||||||
print("Master must be greater than 0.")
|
print("Master must be greater than 0.")
|
||||||
return -1
|
return -1
|
||||||
|
master = str(expr.number)
|
||||||
print("Choose Master " + str(master))
|
print("Choose Master " + master)
|
||||||
self.server.osc.send_message("/hog/hardware/choose/" + str(master), 1) # down
|
button_press(self.server.osc, "/hog/hardware/choose/" + master)
|
||||||
button_delay()
|
|
||||||
self.server.osc.send_message("/hog/hardware/choose/" + str(master), 0) # up
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
@ -143,6 +184,12 @@ class OscCommentMacroListener(CommentMacroListener):
|
||||||
self.parser = parser
|
self.parser = parser
|
||||||
self.server = server
|
self.server = server
|
||||||
|
|
||||||
|
def enterMacro(self, ctx: CommentMacroParser.MacroContext):
|
||||||
|
ctx.targets = []
|
||||||
|
ctx.number = None
|
||||||
|
ctx.device = None
|
||||||
|
ctx.time = None
|
||||||
|
|
||||||
def exitMacro(self, ctx: CommentMacroParser.MacroContext):
|
def exitMacro(self, ctx: CommentMacroParser.MacroContext):
|
||||||
lisp_tree_str = ctx.toStringTree(recog=self.parser)
|
lisp_tree_str = ctx.toStringTree(recog=self.parser)
|
||||||
print(beautify_lisp_string(lisp_tree_str))
|
print(beautify_lisp_string(lisp_tree_str))
|
||||||
|
@ -156,3 +203,30 @@ class OscCommentMacroListener(CommentMacroListener):
|
||||||
|
|
||||||
print("Exiting Macro")
|
print("Exiting Macro")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
def enterMaster(self, ctx: CommentMacroParser.MasterContext):
|
||||||
|
ctx.targets = []
|
||||||
|
|
||||||
|
def exitMaster(self, ctx: CommentMacroParser.MasterContext):
|
||||||
|
if isinstance(ctx.parentCtx, CommentMacroParser.MacroContext):
|
||||||
|
ctx.parentCtx.master = ctx
|
||||||
|
|
||||||
|
def exitNumber(self, ctx: CommentMacroParser.NumberContext):
|
||||||
|
number = num(ctx.getText())
|
||||||
|
if isinstance(ctx.parentCtx, CommentMacroParser.TargetContext):
|
||||||
|
ctx.parentCtx.targets.append(number)
|
||||||
|
if isinstance(ctx.parentCtx, CommentMacroParser.MacroContext):
|
||||||
|
ctx.parentCtx.number = number
|
||||||
|
|
||||||
|
def exitSpan(self, ctx: CommentMacroParser.SpanContext):
|
||||||
|
number1 = num(ctx.children[0].getText())
|
||||||
|
number2 = num(ctx.children[2].getText())
|
||||||
|
if isinstance(ctx.parentCtx, CommentMacroParser.TargetContext):
|
||||||
|
for i in (range(min(number1, number2), max(number1, number2) + 1)):
|
||||||
|
ctx.parentCtx.targets.append(i)
|
||||||
|
|
||||||
|
def enterTarget(self, ctx: CommentMacroParser.TargetContext):
|
||||||
|
ctx.targets = []
|
||||||
|
|
||||||
|
def exitTarget(self, ctx: CommentMacroParser.TargetContext):
|
||||||
|
ctx.parentCtx.targets.extend(ctx.targets)
|
||||||
|
|
Loading…
Reference in New Issue