6 if n : return s+'\0'*(5-n)
9 def osc_command(url,*args):
15 argstring += struct.pack(">I",arg)
16 elif type(arg) is str:
18 argstring += osc_string(arg)
20 raise RunstimeError, "Invalid OSC argument"
21 return osc_string(url) + osc_string(tag) + argstring
23 class OSCSender(object):
25 def __init__(self, host, port):
26 self._sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
27 self._target = (host,port)
29 def command(self, path, *args):
30 if type(args[0]) in (tuple, list) : args = args[0]
31 Logger.log('osc','osc://%s:%s%s %s'
32 % (self._target[0], self._target[1], path,
33 ' '.join(map(repr,args))))
34 self._sock.sendto(osc_command(path, *args),self._target)
37 class Controller(object) :
39 def __init__(self, host, port):
40 self._sender = OSCSender(host,port)
42 def hit(self, command, index=0):
43 self._sender.command("/sl/%d/hit" % index, str(command))
46 class Command(Actions.Action):
48 def __init__(self, name, controller, command):
49 Actions.Action.__init__(self, name)
50 self._controller = controller
51 self._command = command
53 def __call__(self, binding):
54 self._controller.hit(self._command)