Mido - 如何从不同端口实时获取midi数据
Mido - How to get midi data in realtime from different ports
我创建了 2 个端口作为输入,用于从键盘和 MIDI 表面控制器(它有一堆滑块和旋钮)捕获数据。虽然我不确定如何从两者获取数据
for msg1 in input_hw:
if not msg1.type == "clock":
print(msg1)
# Play the note if the note has been triggered
if msg1.type == 'note_on' or msg1.type == 'note_off' and msg1.velocity > 0:
out.send(msg1)
for msg in input_hw2:
#avoid to print the clock message
if not msg.type == "clock":
print(msg)
第一个 For 循环有效,我在弹奏键盘时打开和关闭 midi 音符,它与 input_hw
端口相关联,但第二个循环从未通过。
找到解决方案;您需要将 for 循环包装在 while 循环中,然后使用 iter_pending()
函数,这确实允许 mido 继续并且不会卡在等待第一个循环。
可能有更优雅的解决方案,但这是我能够找到的
while True:
for msg1 in input_hw.iter_pending():
if not msg1.type == "clock":
print(msg1)
# Play the note if the note has been triggered
if msg1.type == 'note_on' or msg1.type == 'note_off' and msg1.velocity > 0:
out.send(msg1)
for msg in input_hw2.iter_pending():
#avoid to print the clock message
if not msg.type == "clock":
print(msg)
我创建了 2 个端口作为输入,用于从键盘和 MIDI 表面控制器(它有一堆滑块和旋钮)捕获数据。虽然我不确定如何从两者获取数据
for msg1 in input_hw:
if not msg1.type == "clock":
print(msg1)
# Play the note if the note has been triggered
if msg1.type == 'note_on' or msg1.type == 'note_off' and msg1.velocity > 0:
out.send(msg1)
for msg in input_hw2:
#avoid to print the clock message
if not msg.type == "clock":
print(msg)
第一个 For 循环有效,我在弹奏键盘时打开和关闭 midi 音符,它与 input_hw
端口相关联,但第二个循环从未通过。
找到解决方案;您需要将 for 循环包装在 while 循环中,然后使用 iter_pending()
函数,这确实允许 mido 继续并且不会卡在等待第一个循环。
可能有更优雅的解决方案,但这是我能够找到的
while True:
for msg1 in input_hw.iter_pending():
if not msg1.type == "clock":
print(msg1)
# Play the note if the note has been triggered
if msg1.type == 'note_on' or msg1.type == 'note_off' and msg1.velocity > 0:
out.send(msg1)
for msg in input_hw2.iter_pending():
#avoid to print the clock message
if not msg.type == "clock":
print(msg)