Beispiel #1
0
    def __init__(self,
                 port=30321,
                 nogui=True,
                 open="python-interface-help.pd",
                 cmd=None,
                 path=["patches"],
                 extra=None,
                 stderr=True):
        """
		port - what port to connect to [netreceive] on.
		nogui - boolean: whether to start Pd with or without a gui. Defaults to nogui=True
		open - string: full path to a .pd file to open on startup.
		cmd - message to send to Pd on startup.
		path - an array of paths to add to Pd startup path.
		extra - a string containing extra command line arguments to pass to Pd.
		"""
        self.connectCallback = None

        if sys.platform == "win32":
            pdexe = "pd\\bin\\pd.exe"
        elif sys.platform == "linux2":
            pdexe = "pd"
        elif sys.platform == "darwin":
            pdexe = "./Pd.app/Contents/Resources/bin/pd"
        else:
            raise PdException(
                "Unknown Pd executable location on your platform ('%s')." %
                sys.platform)
        args = [pdexe]

        if stderr:
            args.append("-stderr")

        if nogui:
            args.append("-nogui")

        if open:
            args.append("-open")
            args.append(open)

        if cmd:
            args.append("-send")
            args.append(cmd)

        for p in path:
            args.append("-path")
            args.append(p)

        if extra:
            args += extra.split(" ")

        #print "COMMAND:", " ".join(args)
        try:
            self.pd = Popen(args,
                            stdin=None,
                            stderr=PIPE,
                            stdout=PIPE,
                            close_fds=(sys.platform != "win32"))
        except OSError:
            raise PdException("Problem running `%s` from '%s'" %
                              (pdexe, getcwd()))

        if port:
            self.port = port

        self._map = {}
        self._pdSend = PdSend(map=self._map)
        self._pdReceive = PdReceive(self, map=self._map)