Пример #1
0
 def _on_state_set(self, **kwargs):
     if kwargs.get('value'):
         self.scheduler = Scheduler(
             callback=self.on_scheduler_process_msg)  #, spawn_threads=True)
         self.scheduler.start()
     elif self.scheduler is not None:
         self.scheduler.stop(blocking=self._block_on_state_change)
         self.scheduler = None
Пример #2
0
class MidiIn(BaseObject):
    _Properties = {'state': dict(default=False)}

    def __init__(self, **kwargs):
        super(MidiIn, self).__init__(**kwargs)
        self.register_signal('data_received', 'msg_received')
        self.dev_info = kwargs.get('dev_info')
        self.midi_io = kwargs.get('midi_io')
        self._block_on_state_change = False
        self.id = self.dev_info.id
        self.device = self.build_device(**kwargs)
        self.scheduler = None
        self.bind(state=self._on_state_set)

    def parse_midi_message(self, **kwargs):
        data = kwargs.get('data')
        timestamp = kwargs.get('timestamp', 0)
        if timestamp == 0:
            timestamp = self.midi_io.get_module_time()
        #now = time.time()
        t = self.midi_io.module_time_to_time(timestamp)
        #nowdiff = now - self.midi_io.start_time['time']
        #tdiff = t - self.midi_io.start_time['time']
        #print 'realtime=%010.8f, modtime=%010.8f, diff=%010.8f' % (nowdiff, tdiff, tdiff - nowdiff)
        msg = messages.parse_midi_message(data, timestamp=t)
        if msg is None:
            return
        self.scheduler.add_item(t, msg)
        return msg

    def on_data_received(self, **kwargs):
        self.emit('data_received', **kwargs)

    def on_msg_received(self, **kwargs):
        self.emit('msg_received', **kwargs)

    def _on_state_set(self, **kwargs):
        if kwargs.get('value'):
            self.scheduler = Scheduler(
                callback=self.on_scheduler_process_msg)  #, spawn_threads=True)
            self.scheduler.start()
        elif self.scheduler is not None:
            self.scheduler.stop(blocking=self._block_on_state_change)
            self.scheduler = None

    def on_scheduler_process_msg(self, msg, t):
        #        msgtype = None
        #        if isinstance(msg, messages.NoteMessage):
        #            msgtype = 'note'
        #        elif isinstance(msg, messages.ControllerMessage):
        #            msgtype = 'controller'
        #        if msgtype:
        #            tkwargs = dict(zip(msg.byte_order, msg.build_data()))
        #            tkwargs['ioType'] = 'in'
        #            tkwargs['type'] = msgtype
        #            self.midi_io.midi_osc.trigger_event(**tkwargs)
        self.emit('msg_received', msg=msg)
Пример #3
0
class MidiIn(BaseObject):
    _Properties = {'state':dict(default=False)}
    def __init__(self, **kwargs):
        super(MidiIn, self).__init__(**kwargs)
        self.register_signal('data_received', 'msg_received')
        self.dev_info = kwargs.get('dev_info')
        self.midi_io = kwargs.get('midi_io')
        self._block_on_state_change = False
        self.id = self.dev_info.id
        self.device = self.build_device(**kwargs)
        self.scheduler = None
        self.bind(state=self._on_state_set)
        
        
    def parse_midi_message(self, **kwargs):
        data = kwargs.get('data')
        timestamp = kwargs.get('timestamp', 0)
        if timestamp == 0:
            timestamp = self.midi_io.get_module_time()
        #now = time.time()
        t = self.midi_io.module_time_to_time(timestamp)
        #nowdiff = now - self.midi_io.start_time['time']
        #tdiff = t - self.midi_io.start_time['time']
        #print 'realtime=%010.8f, modtime=%010.8f, diff=%010.8f' % (nowdiff, tdiff, tdiff - nowdiff)
        msg = messages.parse_midi_message(data, timestamp=t)
        if msg is None:
            return
        self.scheduler.add_item(t, msg)
        return msg
        
    def on_data_received(self, **kwargs):
        self.emit('data_received', **kwargs)
        
    def on_msg_received(self, **kwargs):
        self.emit('msg_received', **kwargs)
        
    def _on_state_set(self, **kwargs):
        if kwargs.get('value'):
            self.scheduler = Scheduler(callback=self.on_scheduler_process_msg)#, spawn_threads=True)
            self.scheduler.start()
        elif self.scheduler is not None:
            self.scheduler.stop(blocking=self._block_on_state_change)
            self.scheduler = None
        
    def on_scheduler_process_msg(self, msg, t):
#        msgtype = None
#        if isinstance(msg, messages.NoteMessage):
#            msgtype = 'note'
#        elif isinstance(msg, messages.ControllerMessage):
#            msgtype = 'controller'
#        if msgtype:
#            tkwargs = dict(zip(msg.byte_order, msg.build_data()))
#            tkwargs['ioType'] = 'in'
#            tkwargs['type'] = msgtype
#            self.midi_io.midi_osc.trigger_event(**tkwargs)
        self.emit('msg_received', msg=msg)
Пример #4
0
 def __init__(self, **kwargs):
     super(MessageHandler, self).__init__(**kwargs)
     self.register_signal('new_message')
     self.queue_parent = kwargs.get('queue_parent')
     mcls = kwargs.get(
         'message_class',
         getattr(self.queue_parent, 'message_class', 'Message'))
     self.message_class = MESSAGE_CLASSES.get(mcls)
     self.queue_time_method = kwargs.get('queue_time_method',
                                         'datetime_utc')
     self.message_queue = Scheduler(time_method=self.queue_time_method,
                                    callback=self.dispatch_message)
     self.message_queue.start()
Пример #5
0
 def _on_state_set(self, **kwargs):
     if kwargs.get('value'):
         self.scheduler = Scheduler(callback=self.on_scheduler_process_msg)#, spawn_threads=True)
         self.scheduler.start()
     elif self.scheduler is not None:
         self.scheduler.stop(blocking=self._block_on_state_change)
         self.scheduler = None
Пример #6
0
class MessageHandler(BaseObject):
    def __init__(self, **kwargs):
        super(MessageHandler, self).__init__(**kwargs)
        self.register_signal('new_message')
        self.queue_parent = kwargs.get('queue_parent')
        mcls = kwargs.get(
            'message_class',
            getattr(self.queue_parent, 'message_class', 'Message'))
        self.message_class = MESSAGE_CLASSES.get(mcls)
        self.queue_time_method = kwargs.get('queue_time_method',
                                            'datetime_utc')
        self.message_queue = Scheduler(time_method=self.queue_time_method,
                                       callback=self.dispatch_message)
        self.message_queue.start()

    def unlink(self):
        self.message_queue.stop(blocking=True)
        q = self.message_queue
        super(MessageHandler, self).unlink()

    def create_message(self, **kwargs):
        cls = self.message_class
        kwargs['message_handler'] = self
        return cls(**kwargs)

    def incoming_data(self, **kwargs):
        data = kwargs.get('data')
        client = kwargs.get('client')
        mq = self.message_queue
        try:
            msg = self.create_message(raw_data=data)
        except:
            self.LOG.warning(
                'message parse error: client = (%s), data = (%s)' %
                (client, data))
            return
        self.LOG.debug('incoming message: %s' % (msg))
        if msg.recipient_address is None:
            msg.recipient_address = client
        ts = msg.timestamp
        if ts is None:
            ts = mq.now()
        mq.add_item(ts, msg)

    def dispatch_message(self, msg, ts):
        self.emit('new_message', message=msg, timestamp=ts)
Пример #7
0
 def __init__(self, **kwargs):
     super(MessageHandler, self).__init__(**kwargs)
     self.register_signal('new_message')
     self.queue_parent = kwargs.get('queue_parent')
     mcls = kwargs.get('message_class', getattr(self.queue_parent, 'message_class', 'Message'))
     self.message_class = MESSAGE_CLASSES.get(mcls)
     self.queue_time_method = kwargs.get('queue_time_method', 'datetime_utc')
     self.message_queue = Scheduler(time_method=self.queue_time_method, 
                                    callback=self.dispatch_message)
     self.message_queue.start()
Пример #8
0
class MessageHandler(BaseObject):
    def __init__(self, **kwargs):
        super(MessageHandler, self).__init__(**kwargs)
        self.register_signal('new_message')
        self.queue_parent = kwargs.get('queue_parent')
        mcls = kwargs.get('message_class', getattr(self.queue_parent, 'message_class', 'Message'))
        self.message_class = MESSAGE_CLASSES.get(mcls)
        self.queue_time_method = kwargs.get('queue_time_method', 'datetime_utc')
        self.message_queue = Scheduler(time_method=self.queue_time_method, 
                                       callback=self.dispatch_message)
        self.message_queue.start()
    def unlink(self):
        self.message_queue.stop(blocking=True)
        q = self.message_queue
        super(MessageHandler, self).unlink()
    def create_message(self, **kwargs):
        cls = self.message_class
        kwargs['message_handler'] = self
        return cls(**kwargs)
    def incoming_data(self, **kwargs):
        data = kwargs.get('data')
        client = kwargs.get('client')
        mq = self.message_queue
        try:
            msg = self.create_message(raw_data=data)
        except:
            self.LOG.warning('message parse error: client = (%s), data = (%s)' % (client, data))
            return
        self.LOG.debug('incoming message: %s' % (msg))
        if msg.recipient_address is None:
            msg.recipient_address = client
        ts = msg.timestamp
        if ts is None:
            ts = mq.now()
        mq.add_item(ts, msg)
    
    def dispatch_message(self, msg, ts):
        self.emit('new_message', message=msg, timestamp=ts)