'Handles a single incoming MIDI message during capture.
Args:
msg: The mido.Message MIDI message to handle.'

@concurrency.serialized
def _capture_message(self, msg):

    if ((msg.type == 'note_off') or ((msg.type == 'note_on') and (msg.velocity == 0))):
        if (msg.note not in self._open_notes):
            return
        self._open_notes[msg.note].end_time = msg.time
        del self._open_notes[msg.note]
    elif (msg.type == 'note_on'):
        if (msg.note in self._open_notes):
            return
        new_note = self._add_note(msg)
        self._open_notes[new_note.pitch] = new_note
