コード例 #1
0
    def initPyroServer(self):
        Pyro.config.PYRO_ES_BLOCKQUEUE = False

        # Event listener
        Pyro.core.initClient()

        # Create publisher
        #self.publisher = Pyro.core.getProxyForURI("PYRONAME://" + Pyro.constants.EVENTSERVER_NAME)
        self.publisher = LivePublisher(self.log_message)
        self.subscriber = LiveSubscriber(self.publisher, self.log_message)
コード例 #2
0
    def initPyroServer(self):
        Pyro.config.PYRO_ES_BLOCKQUEUE = False

        # Event listener
        Pyro.core.initClient()

        # Create publisher
        #self.publisher = Pyro.core.getProxyForURI("PYRONAME://" + Pyro.constants.EVENTSERVER_NAME)
        self.publisher = LivePublisher(self.log_message)
        self.subscriber = LiveSubscriber(self.publisher, self.log_message)
コード例 #3
0
    def initPyroServer(self):
        Pyro.config.PYRO_ES_BLOCKQUEUE = False

        # Event listener
        Pyro.core.initClient()

        # Create publisher and subscriber links to event server
        self.publisher = LivePublisher()
        self.subscriber = LiveSubscriber(self.publisher)

        # Set the global publisher for all wrappers
        PyroWrapper.set_publisher(self.publisher)
コード例 #4
0
class FissureVR_Pyro(ControlSurface):
    def __init__(self, c_instance):
        ControlSurface.__init__(self, c_instance)
        with self.component_guard():
            self.cInstance = c_instance
            self._suppress_send_midi = True

            debug_log(self, "--------------------------")
            debug_log(self, "FissureVR Pyro DEBUG_START")

            # Wrappers for Ableton objects
            self.song = None
            self.tracks = []
            self.clock = None

            self.initPyroServer()
            self.build_wrappers()
            self._suppress_send_midi = False

    def initPyroServer(self):
        Pyro.config.PYRO_ES_BLOCKQUEUE = False

        # Event listener
        Pyro.core.initClient()

        # Create publisher
        #self.publisher = Pyro.core.getProxyForURI("PYRONAME://" + Pyro.constants.EVENTSERVER_NAME)
        self.publisher = LivePublisher(self.log_message)
        self.subscriber = LiveSubscriber(self.publisher, self.log_message)

    def disconnect(self):
        self._suppress_send_midi = True
        self._suppress_send_midi = False
        ControlSurface.disconnect(self)

    def refresh_state(self):
        ControlSurface.refresh_state(self)
        self.request_rebuild_midi_map()

    def build_midi_map(self, midi_map_handle):
        self.log_message("Building midi map...")
        ControlSurface.build_midi_map(self, midi_map_handle)

    def receive_midi(self, midi_bytes):
        #self.log_message("Received midi! " + str(midi_bytes))
        self.requestLoop()
        ControlSurface.receive_midi(self, midi_bytes)

    def suggest_map_mode(self, cc_no, channel):
        return Live.MidiMap.MapMode.absolute

    def update_display(self):
        #Call the pyro request handler so that messages will always be accepted
        self.requestLoop()
        ControlSurface.update_display(self)

    def requestLoop(self):
        self.subscriber.handle_requests()

    def build_wrappers(self):
        debug_log(self, "Creating Live/Pyro wrappers")

        song = PyroSong(self.publisher)
        # self.log_message(song.dump_song_xml())
        self.subscriber.set_song(song)

        self.clock = PyroEncoderElement(0, 1, None, (0, 0, 1))
        parameters = {}
        for trackindex in range(len(getTracks())):
            trackWrapper = PyroTrack(trackindex, self.publisher)
            self.tracks.append(trackWrapper)

            for deviceindex in range(len(getTrack(trackindex).devices)):
                deviceWrapper = PyroDevice(trackindex, deviceindex,
                                           self.publisher)
                trackWrapper.devices.append(deviceWrapper)

                for parameterindex in range(
                        len(
                            getTrack(
                                trackindex).devices[deviceindex].parameters)):
                    parameterWrapper = PyroDeviceParameter(
                        trackindex, deviceindex, parameterindex,
                        self.publisher)
                    parameters[(trackindex, deviceindex,
                                parameterindex)] = parameterWrapper

        self.subscriber.set_parameter_list(parameters)
        self.refresh_state()
コード例 #5
0
class ShowtimeBridge(ControlSurface):

    def __init__(self, c_instance):
        ControlSurface.__init__(self, c_instance)
        with self.component_guard():
            self.cInstance = c_instance
            self._suppress_send_midi = True

            Log.set_logger(self.log_message)
            Log.set_log_level(Log.LOG_WARN)
            Log.write("-----------------------")
            Log.write("ShowtimeBridge starting")
            Log.info(sys.version)

            self.initPyroServer()

            # Register methods to the showtimebridge server
            wrapperClasses = PyroWrapper.__subclasses__()
            wrapperClasses.append(PyroWrapper)
            for cls in wrapperClasses:  
                cls.clear_instances()
                cls.register_methods()
                for action in cls.incoming_methods().values():
                    Log.info("Adding %s to incoming callbacks" % action.methodName)
                    self.subscriber.add_incoming_action(action.methodName, cls, action.callback)
                    self.publisher.register_to_showtime(action.methodName, action.methodAccess, action.methodArgs)

                for action in cls.outgoing_methods().values():
                    Log.info("Adding %s to outgoing methods" % action.methodName)
                    self.publisher.register_to_showtime(action.methodName, action.methodAccess)

            # Midi clock to trigger incoming message check
            self.clock = PyroEncoderElement(0, 119)

            # Create the root wrapper
            PyroSong.add_instance(PyroSong(getSong()))

            self.refresh_state()
            self._suppress_send_midi = False

    def initPyroServer(self):
        Pyro.config.PYRO_ES_BLOCKQUEUE = False

        # Event listener
        Pyro.core.initClient()

        # Create publisher and subscriber links to event server
        self.publisher = LivePublisher()
        self.subscriber = LiveSubscriber(self.publisher)

        # Set the global publisher for all wrappers
        PyroWrapper.set_publisher(self.publisher)

    def disconnect(self):
        self._suppress_send_midi = True
        self._suppress_send_midi = False
        ControlSurface.disconnect(self)

    def refresh_state(self):
        ControlSurface.refresh_state(self)
        self.request_rebuild_midi_map()

    def build_midi_map(self, midi_map_handle):
        Log.info("Building midi map...")
        ControlSurface.build_midi_map(self, midi_map_handle)

    def receive_midi(self, midi_bytes):
        # Hack to get a faster update loop. Call our update function each time we receive
        # a midi message
        self.requestLoop()
        ControlSurface.receive_midi(self, midi_bytes)

    def suggest_map_mode(self, cc_no, channel):
        return Live.MidiMap.MapMode.absolute

    def update_display(self):
        #Call the pyro request handler so that messages will always be accepted
        self.requestLoop()
        ControlSurface.update_display(self)

    def requestLoop(self):
        self.subscriber.handle_requests()
        PyroWrapper.process_deferred_actions()
コード例 #6
0
class FissureVR_Pyro(ControlSurface):

    def __init__(self, c_instance):
        ControlSurface.__init__(self, c_instance)
        with self.component_guard():
            self.cInstance = c_instance
            self._suppress_send_midi = True

            debug_log(self, "--------------------------")
            debug_log(self, "FissureVR Pyro DEBUG_START")

            # Wrappers for Ableton objects
            self.song = None
            self.tracks = []
            self.clock = None

            self.initPyroServer()
            self.build_wrappers()
            self._suppress_send_midi = False

    def initPyroServer(self):
        Pyro.config.PYRO_ES_BLOCKQUEUE = False

        # Event listener
        Pyro.core.initClient()

        # Create publisher
        #self.publisher = Pyro.core.getProxyForURI("PYRONAME://" + Pyro.constants.EVENTSERVER_NAME)
        self.publisher = LivePublisher(self.log_message)
        self.subscriber = LiveSubscriber(self.publisher, self.log_message)

    def disconnect(self):
        self._suppress_send_midi = True
        self._suppress_send_midi = False
        ControlSurface.disconnect(self)

    def refresh_state(self):
        ControlSurface.refresh_state(self)
        self.request_rebuild_midi_map()

    def build_midi_map(self, midi_map_handle):
        self.log_message("Building midi map...")
        ControlSurface.build_midi_map(self, midi_map_handle)

    def receive_midi(self, midi_bytes):
        #self.log_message("Received midi! " + str(midi_bytes))
        self.requestLoop()
        ControlSurface.receive_midi(self, midi_bytes)

    def suggest_map_mode(self, cc_no, channel):
        return Live.MidiMap.MapMode.absolute

    def update_display(self):
        #Call the pyro request handler so that messages will always be accepted
        self.requestLoop()
        ControlSurface.update_display(self)

    def requestLoop(self):
        self.subscriber.handle_requests()

    def build_wrappers(self):
        debug_log(self, "Creating Live/Pyro wrappers")

        song = PyroSong(self.publisher)
        # self.log_message(song.dump_song_xml())
        self.subscriber.set_song(song)

        self.clock = PyroEncoderElement( 0, 1, None, (0, 0, 1))
        parameters = {}
        for trackindex in range(len(getTracks())):
            trackWrapper = PyroTrack(trackindex, self.publisher)
            self.tracks.append(trackWrapper)

            for deviceindex in range(len(getTrack(trackindex).devices)):
                deviceWrapper = PyroDevice(trackindex, deviceindex, self.publisher)
                trackWrapper.devices.append(deviceWrapper)

                for parameterindex in range(len(getTrack(trackindex).devices[deviceindex].parameters)):                    
                    parameterWrapper = PyroDeviceParameter(trackindex, deviceindex, parameterindex, self.publisher)
                    parameters[(trackindex, deviceindex, parameterindex)] = parameterWrapper

        self.subscriber.set_parameter_list(parameters)
        self.refresh_state()