在pygame中设置MIDI文件的播放位置

时间:2016-02-20 22:47:30

标签: python audio pygame midi

我真的希望能够使用pygame.mixer.music模块从MIDI文件中的某个位置开始播放,但是我收到以下错误:

error: Position not implemented for music type

(这是pygame 1.9.1。)

我看不到任何其他可以使用这种MIDI到音频合成的库。有什么建议吗?

2 个答案:

答案 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如果特定格式不支持定位。"