我真的希望能够使用pygame.mixer.music模块从MIDI文件中的某个位置开始播放,但是我收到以下错误:
error: Position not implemented for music type
(这是pygame 1.9.1。)
我看不到任何其他可以使用这种MIDI到音频合成的库。有什么建议吗?
答案 0 :(得分:0)
我在python 2.7.x上的pygame 1.9.1。我能够模拟AttributeError: 'module' object has no attribute 'set_pos'
错误
根据安装版本附带的文档C:\Python27\Lib\site-packages\pygame\docs
1)首选:
pygame 1.9.2版以上版本具有pygame.mixer.music.set_pos
功能。因此,您可能想尝试将pygame升级到1.9.2
pygame网站上的官方文档是1.9.2,我们都指的是
Here is a link到官方1.9.2 pygame文档
2)第二选择:
接下来,使用当前版本,您可以尝试使用
pygame.mixer.music.play(loop= ?, start=? )
个参数,但仅适用于MP3和OGG。
因此,您需要将现有的MIDI文件转换为MP3 / OGG才能使此选项生效。
最好也更简单的选择是将pygame升级到1.9.2
从官方1.9.1文档中复制/粘贴
pygame.mixer.music.play 开始播放音乐流
pygame.mixer.music.play(loops = 0,start = 0.0):return none 这将播放加载的音乐流。如果音乐已播放,则会重新启动。
loops参数控制音乐播放的重复次数。播放(5)将使音乐播放一次,然后重复播放五次,共六次。如果循环为-1,那么音乐将无限重复。
起始位置参数控制歌曲开始播放的音乐位置。起始位置取决于音乐播放的格式。 MP3和OGG使用位置作为时间(以秒为单位)。 MOD音乐是模式订单号。如果无法设置起始位置
,则传递一个startpos会引发NotImplementedError
答案 1 :(得分:0)
midi 文件不支持此功能,它在文档中写道:“不支持其他文件格式(OGG、MP3 和 MOD 除外)。新版本的 SDL_mixer 比早期版本具有更好的定位支持。引发 SDLError如果特定格式不支持定位。"