コード例 #1
0
ファイル: osc.py プロジェクト: jean-emmanuel/pyOSCseq
    def send(self, target, *message):
        """
        Send osc message over udp
        """

        if target.isdigit():
            target = '127.0.0.1:' + target

        if 'osc.udp://' not in target:
            target = 'osc.udp://' + target

        ServerThread.send(self, target, *message)
コード例 #2
0
ファイル: qlcManager.py プロジェクト: orlammd/PlagiatSetup
class qlcStopper(object):
    def __init__(self, port, qlcappport):
        self.port = port
        if self.port is not None:
            self.server = ServerThread(self.port)
            self.server.register_methods(self)
            self.server.start()

    @make_method('/Stop', None)
    def allStopQlc(self, path, args):
        for path in paths:
            self.server.send(qlcappport, path, 0)
コード例 #3
0
    def send(self, target, *message):
        """
        Send osc message over udp
        """

        if target.isdigit():
            target = '127.0.0.1:' + target

        if 'osc.udp://' not in target:
            target = 'osc.udp://' + target

        ServerThread.send(self, target, *message)
コード例 #4
0
ファイル: qlcManager.py プロジェクト: orlammd/PlagiatSetup
class qlcDelayer(object):
    def __init__(self, port, qlcappport):
        self.port = port
        if self.port is not None:
            self.server = ServerThread(self.port)
            self.server.register_methods(self)
            self.server.start()

    @make_method(None, 'i')
    def sendToQlc(self, path, args):
    	sleep(.001)
        self.server.send(qlcappport, path, args[0])


    @make_method(None, 'fff') # /BC/1 R G B
    @make_method(None, 'iii') # /BC/1 R G B
    def sendToQlcRgb(self, path, args):
        if '/Segment' in path:
            sleep(.001)
            self.server.send(qlcappport, path.replace('/Segment', '/Red/Segment'), args[0])
            self.server.send(qlcappport, path.replace('/Segment', '/Green/Segment'), args[1])
            self.server.send(qlcappport, path.replace('/Segment', '/Blue/Segment'), args[2])
コード例 #5
0
ファイル: xaircmd.py プロジェクト: SpotlightKid/xair-remote
class XAirCmdApp(cmd.Cmd):
    allow_cli_args = False
    abbrev = True
    intro = "Enter OSC command (Control-C or Control-D to quit)..."
    prompt = 'xair> '
    # legalChars = u'/' + cmd.Cmd.legalChars

    def __init__(self, server, destport=10024, srcport=11111, debug=False, **kwargs):
        """Class initialiser."""
        self.timeout = self.settable['timeout'] = 500
        self.server = self.settable['server'] = server
        self.destport = self.settable['destport'] = destport
        # add built-in custom command shortcuts
        self.shortcuts.update({
            '/': 'osc',
        })
        # add built-in custom command aliases
        kwargs.setdefault('use_ipython', True)
        super().__init__(**kwargs)
        self.aliases.update({
            'mute': 'osc /lr/mix/on 0',
            'unmute': 'osc /lr/mix/on 1',
            'mainvol': '/lr/mix/fader',
        })
        self.srcport = srcport
        self.debug = debug
        self.osc_commands = parse_commands()
        self.osc_command_names = sorted([cmd.address.lstrip('/')
                                         for cmd in self.osc_commands.values()])
        self.queue = queue.Queue()
        self.osc = ServerThread(self.srcport)
        self.osc.add_method(None, None, self.osc_recv)

        # hooks
        self.register_preloop_hook(self.start_osc_server)
        self.register_postloop_hook(self.stop_osc_server)

    def osc_recv(self, path, args, types, addr):
        log.debug("OSC RECV (%s, %s): %s %s [%s]", addr.hostname, addr.port, path,
                  types, ", ".join(repr(arg) for arg in args))
        self.queue.put((path, args, types, addr))

    def do_osc(self, line):
        if not line:
            return self.help_osc()

        try:
            oscaddr, rawargs = line.split(None, 1)
        except ValueError:
            oscaddr = line
            rawargs = ''

        oscaddr = '/' + oscaddr.lstrip('/')
# ~        if not oscaddr.startswith('/'):
# ~            self.perror("OSC address must start with a slash", traceback_war=False)
# ~            return

        oscargs = []
        for arg in shlex.split(rawargs, posix=False):
            if arg.strip():
                try:
                    oscargs.append(ast.literal_eval(arg))
                except:  # noqa:E722
                    oscargs.append(arg)

        log.debug("OSC SEND -> (%s, %s): %s %s", self.server, self.destport, oscaddr,
                  "".join("%r" % arg for arg in oscargs))
        self.osc.send((self.server, self.destport), oscaddr, *oscargs)

        try:
            path, args, types, addr = self.queue.get(timeout=self.timeout / 1000)
        except queue.Empty:
            self.p_warn("No reply within timeout ({:d} msec).".format(self.timeout))
        else:
            self.p_ok("{} {} [{}]".format(path, types, ", ".join(repr(arg) for arg in args)))

    def help_osc(self):
        self.poutput("osc ADDR [arg1 [arg2] ... [argn]]")

    def complete_osc(self, text, line, begidx, endidx):
        log.debug((text, line, begidx, endidx))

        #if not text.startswith('/'):
        #    text = '/' + text

        return self.delimiter_complete(text, line, begidx, endidx, self.osc_command_names, '/')

    def p_ok(self, msg):
        self.poutput(msg, color=Fore.GREEN)

    def p_warn(self, msg):
        self.poutput(msg, color=Fore.YELLOW)

    def start_osc_server(self) -> None:
        self.osc.start()

    def stop_osc_server(self) -> None:
        self.osc.stop()
        self.poutput('')

    def postparse(self, parse_result) -> None:
        log.debug("postparse: %r", list(parse_result))
        return parse_result