Pygame的MIDI功能只需按下或键入而不是MIDIIN?
问题描述:
所以我用这个功能来检测从我的MIDI键盘事件,然后获得打印出乐谱:Pygame的MIDI功能只需按下或键入而不是MIDIIN?
for e in events:
if
if e.type in [pygame.midi.MIDIIN]:
这将返回两个事件,一个当按键被按下时,一个当按下它up.This适用于个人笔记,因为我只是创建一个函数,只让if语句每隔一次触发一个事件就触发,但对于和弦很困难,因为这些事件可能以各种顺序发出。注释41 keydown,note 41 keydown,注意41键,注意40键。或注释40下来,注释41注释,注释40注释,注释41注释。等等。除了没有说'钥匙'或'钥匙',它只是触发if语句。所以我的问题是,是否有一个函数只能在被按下的键上触发?像pygame.midi.MIDI_KEYDOWN
答
的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
之间,注意。
+0
你只需要使用状态属性thx –
什么属性确实MIDI事件有哪些? '打印(DIR(E))' – skrx
我只是用e.data1还告诉我,这说明是播放,但有4或5,我认为 –
执行MIDI事件有'keydown'和'keyup'属性类似于'pygame的.KEYDOWN'和'KEYUP'事件类型? – skrx