我试图编写一些代码来使用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,我会得到一个漂亮的,均匀的音阶,所以问题不仅在于声音文件的编辑不均匀。
如何改善这个时间?在我看来,准确的计时在游戏库中应该非常重要,特别是当负载非常轻时(如本例所示)。
答案 0 :(得分:0)
将pygame.mixer.pre_init(44100, -16, 1, 512)
放在mx.init()
之前。