将 MIDI 事件转换为 pygame 事件
Posted
技术标签:
【中文标题】将 MIDI 事件转换为 pygame 事件【英文标题】:Converting MIDI events to pygame events 【发布时间】:2017-08-09 00:24:46 【问题描述】:我正在尝试从我的 MIDI 设备(键盘)获取输入以用于 pygame 代码。看起来pygame.midi.midis2events()
会很完美,但他们没有告诉你midis
是什么意思,这是函数的必要参数。
pygame.midi.midis2events()
将 midi 事件转换为 pygame 事件midis2events(midis, device_id) -> [Event, ...]
我的问题是midis
是什么意思?我在网上找不到任何指定的地方。
【问题讨论】:
midis
必须是从输入缓冲区读取时获得的 midi 事件(通过在 pygame.midi.Input
对象上使用 read()
方法)
好的。我也无法弄清楚如何使用 read() 因为他们没有指定 num_events 的含义。他们是否在某个地方指定了所有这些内容,因为该网页上的信息似乎不完整。 pygame.org/docs/ref/midi.html#pygame.midi.get_count虽然我不知道自己在做什么,但也许不是。
【参考方案1】:
midis
是read()
返回的 MIDI 事件列表。
一个example使用如下:
while not quit:
# Blit the picture ...
...
# Check for keypresses
for event in pygame.event.get():
...
for event in midis2events.midis2events(midi_in.read(40), midi_in_id):
if event.command == midis2events.NOTE_ON:
play_note(Note().from_int(event.data1))
...
# Update the screen
pygame.display.update()
【讨论】:
'.read()' 函数的 'midi_in' 是什么?设备 ID 不起作用。我也收到“read()”函数的这个错误。类型错误:read() 缺少 1 个必需的位置参数:'num_events' 我链接到了示例程序。 哦!谢谢,我完全错过了。以上是关于将 MIDI 事件转换为 pygame 事件的主要内容,如果未能解决你的问题,请参考以下文章