def on_midi(self, msg): if is_note_on(msg): self.keys[msg.note % 12].pressed = True note = Note().from_int(msg.note) note.channel, note.velocity = PLAYER_CHANNEL, msg.velocity noteThread = KeyboardThread(note) self.events[msg.note] = noteThread.event noteThread.start() elif is_note_off(msg): self.keys[msg.note % 12].pressed = False self.events[msg.note].set() for watcher in self.watchers: watcher.dispatch('on_midi', msg)
def hear(self, msg): if is_note_on(msg): self.pending_notes[msg.note] = Note().from_int(msg.note) elif is_note_off(msg) and msg.note in self.pending_notes: self.received_notes.add_notes(self.pending_notes.pop(msg.note))