所以我正在使用此功能来检测MIDI键盘上的事件,然后将其作为乐谱打印出来:
for e in events:
if
if e.type in [pygame.midi.MIDIIN]:
这会返回2个事件,一个是按下键时的一个事件,另一个是按下它时的事件。这对于单个音符很有效,因为我只创建一个函数,只在每次出现事件时使if语句触发但是对和弦很难,因为事件可能会出现各种顺序音符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
答案 0 :(得分:0)
read()
函数只返回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)
因此,您必须自己解析消息:0x90
和0x9F
之间的任何状态字节都是注释,而0x80
和0x8F
之间的状态字节请注意。