我想在Python3x中编写一个软件,它将播放Midi笔记。我在Stack Overflow上有这个示例代码:
import pygame.midi
import time
pygame.midi.init()
player = pygame.midi.Output(0)
player.set_instrument(0)
player.note_on(64, 127)
time.sleep(1)
player.note_off(64, 127)
del player
pygame.midi.quit()
它在Windows上完全正常,但在Mac上没有,我收到此错误:
pygame.midi.MidiException: 'Device id invalid, out of range.'
我知道没有启用Midi设备。 但是当我使用调音台播放一些普通的midi文件时:
...
pygame.mixer.music.load('whatever.mid')
pygame.mixer.music.play()
...
它播放正确,这让我很困惑。使用Midi的其他应用程序,如Musescore,也可以很好地工作。
我的问题是:
为什么混音器工作,而pygame.midi不工作?
如何修复它以便pygame.midi产生声音?
(我发现我可以使用我的应用程序生成midi文件,然后将其放入调音台,但它很笨拙,必须有更好的方法)
提前谢谢。
EDIT1: 我试图启用IAC并添加总线。 当我尝试获取设备信息时:
for n in range(pygame.midi.get_count()):
print (n,pygame.midi.get_device_info(n))
再出现两个设备:
0 (b'CoreMIDI', b'IAC Driver IAC Bus 1', 1, 0, 0)
1 (b'CoreMIDI', b'IAC Driver IAC Bus 1', 0, 1, 0)
原始示例在第五行失败,因为0是输入总线。如果更改为1,则结束时没有错误,但没有播放(听到)声音。
答案 0 :(得分:0)
您的问题是您没有任何MIDI设备。首先,您需要转到:MIDI audio configuration
,尝试在Mac上的聚光灯下或Launchpad>Others>Midi Audio configuration
中搜索它。
一旦你到达那里,在Window>MIDI studio
部分的顶部菜单中,你会找到一个名为IAC Driver
的内容,双击该矩形并启用Connected Device
复选框。然后单击“应用”,您将拥有一个虚拟MIDI总线。