为什么 pygame.midi 在 macOS 上不起作用而 pygame.mixer 可以
Why pygame.midi doesn't work on macos whereas pygame.mixer does
想用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文件,然后将它放入混音器中,但它很笨拙,必须有更好的方法)
提前致谢。
编辑1:
我尝试启用 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,则无错结束,但没有声音播放(听到)。
你的问题是你没有任何 MIDI 设备。因此,首先您需要前往:MIDI audio configuration
,尝试在您的 mac 或 Launchpad>Others>Midi Audio configuration
的 Spotlight 中搜索它。
到达那里后,在顶部菜单的 Window>MIDI studio
部分中,您会找到名为 IAC Driver
的内容,双击该矩形并启用显示 Connected Device
的复选框。然后单击应用,您将拥有一个虚拟 MIDI 总线。
想用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文件,然后将它放入混音器中,但它很笨拙,必须有更好的方法)
提前致谢。
编辑1: 我尝试启用 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,则无错结束,但没有声音播放(听到)。
你的问题是你没有任何 MIDI 设备。因此,首先您需要前往:MIDI audio configuration
,尝试在您的 mac 或 Launchpad>Others>Midi Audio configuration
的 Spotlight 中搜索它。
到达那里后,在顶部菜单的 Window>MIDI studio
部分中,您会找到名为 IAC Driver
的内容,双击该矩形并启用显示 Connected Device
的复选框。然后单击应用,您将拥有一个虚拟 MIDI 总线。