Python和准确的计时

时间:2015-01-26 10:27:00

标签: python audio timer pygame

我试图编写一些代码来使用python播放声音。具体来说,我有一些教堂钟声的录音,我试图以特定的顺序播放它们,以重现教堂钟声响起的声音。目前我正在使用pygame来处理时间和播放,如下所示:

import pygame.mixer as mx
import pygame.time as tm

mx.init()

sounds = [mx.Sound('./data/bell-{0}.wav'.format(i)) for i in range(1,9)]

def round():
    for i in range(8):
        sounds[i].play()
        tm.delay(250)            

for i in range(3):
    round()
    round()
    tm.wait(250)

mx.quit()

这应该发出类似“轮回”的声音,这是一个经常播放的音阶,每个铃声相隔250毫秒,每个音阶后的间隔为250毫秒。

但即使我将python作为nice -n -19 python rounds.py运行,我得到的也是非常不平衡的。时间的变化有点难以估计,但我猜它经常超过100毫秒,有时超过200毫秒。

如果我将声音文件导入Audacity并将它们间隔250ms,我会得到一个漂亮的,均匀的音阶,所以问题不仅在于声音文件的编辑不均匀。

如何改善这个时间?在我看来,准确的计时在游戏库中应该非常重要,特别是当负载非常轻时(如本例所示)。

1 个答案:

答案 0 :(得分:0)

pygame.mixer.pre_init(44100, -16, 1, 512)放在mx.init()之前。