使用 pygame.midi 播放 midi 音符时出现分段错误

Posted

技术标签:

【中文标题】使用 pygame.midi 播放 midi 音符时出现分段错误【英文标题】:Segementation fault when playing midi notes with pygame.midi 【发布时间】:2020-04-29 10:41:48 【问题描述】:

我一直在尝试在 PyCharm 中编写一个简单的 python 程序,它可以使用 pygame.midi 播放 midi 音符。看来我可以初始化并退出 pygame.midi 就好了,就像这样:

import pygame
import pygame.midi
import time

pygame.midi.init()

pygame.midi.quit()

上面的代码没有返回错误,但是,当我尝试使用 pygame.midi 播放音符时,我收到一条错误消息。这是给我错误消息的代码:

import pygame
import pygame.midi
import time

pygame.midi.init()

player = pygame.midi.Output(0)
player.set_instrument(42)
player.note_on(60, 127)
time.sleep(3)
player.note_off(60, 127)

pygame.midi.quit()

这是错误信息:

Fatal Python error: (pygame parachute) Segmentation Fault
Python runtime state: initialized

Current thread 0x000040fc (most recent call first):
  File "C:\Users\username\PycharmProjects\Geh\xf8rprogram_V3\venv\lib\site-packages\pygame\midi.py", line 422 in __init__
  File "C:/Users/username/PycharmProjects/Geh\xf8rprogram_V3/krasjtest.py", line 7 in <module>

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

安装最新版本的pygame:

pip install pygame==2.0.0.dev6

为避免出现问题,请以管理员身份运行 cmd 或 powershell。或者确保你在 PyCharm 中指定了这个版本。但我建议你先尝试在 IDLE 中运行它。这应该可以解决问题。

【讨论】:

以上是关于使用 pygame.midi 播放 midi 音符时出现分段错误的主要内容,如果未能解决你的问题,请参考以下文章

如何访问和更改 Pygame.midi?

将 MIDI 事件转换为 pygame 事件

pygame.midi.Input.read 不能是字符串

如何通过 Pygame 从 MIDI 设备获取输入?

Pygame Midi libasound_module_conf_pulse.so 错误 + 无法打开从站

无法使用 NAudio.Midi 播放音符