Pygame MIDI 功能仅用于按下或按下而不是 MIDIIN?

Pygame MIDI function for just key down or key up rather than MIDIIN?

所以我使用这个函数来检测来自我的 MIDI 键盘的事件,然后将其打印为 sheet 音乐:

for e in events:
    if 
    if e.type in [pygame.midi.MIDIIN]:

这 returns 2 个事件,一个是按下键时,另一个是按下键时 up.This 对单个笔记非常有用,因为我只是创建了一个函数来只触发 if 语句每隔一段时间就会有一个事件,但和弦很难,因为事件可能会以各种顺序出现,如 note 40 keydown、note 41 keydown、note 41 key up、note 40 key up。或音符 40 向下,音符 41 向上,音符 40 向下,音符 41 向上。等等等等。除了它没有说 'key up' 或 'key down' 它只是触发 if 语句。所以我的问题是是否有一个功能只会在按下或向上按下键时触发?像 pygame.midi.MIDI_KEYDOWN

read() 函数只是 returns MIDI 消息的原始字节,而不对其进行解析。

midis2events() 函数实际上对这些字节也没有做任何事情:

    ((status,data1,data2,data3),timestamp) = midi

    e = pygame.event.Event(MIDIIN,
                           status=status,
                           data1=data1,
                           data2=data2,
                           data3=data3,
                           timestamp=timestamp,
                           vice_id = device_id)

因此您必须自己解析消息:0x900x9F 之间的任何状态字节都是音符打开,0x800x8F 之间的音符关闭。