2015-01-26 3 views
2

Я пытаюсь написать код для воспроизведения звуков с использованием python. В частности, у меня есть записи некоторых церковных колоколов, и я пытаюсь воспроизвести их в определенных последовательностях, чтобы воссоздать звук звона церковного звонка. В настоящее время я использую Pygame для обработки времени и воспроизведения, как это:Python и точное время

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() 

Это должно играть что-то вроде «звона раундов», регулярно играл масштаба, с каждым звонком звучащей 250ms друг от друга и дополнительный зазор 250мс после каждая шкала.

Но то, что я получаю, довольно неравномерно, даже если я запускаю python как nice -n -19 python rounds.py. Изменение времени немного сложно оценить, но я предполагаю, что он часто превышает 100 мс, иногда более 200 мс.

Если я импортирую звуковые файлы в Audacity и размещаю их на расстоянии 250 мс, я получаю хороший, даже масштаб, поэтому проблема заключается не только в том, что звуковые файлы неравномерно отредактированы.

Как я могу улучшить это время? Мне кажется, что точное время должно быть очень важным в игровой библиотеке, особенно когда нагрузка довольно светлая (как в данном случае).

+0

Нужно ли учитывать длину самого звукового файла при расчете задержки для следующего звука? Время Python должно быть достаточно точным для такого рода вещей. – 101

+0

Я так не думаю. Неравномерность несовместима, как я ожидал бы, если бы это было так. – Tom

+0

[Эта ссылка] (http://thepythongamebook.com/en:pygame:step010#initializing_the_mixer) гласит, что лучше «pre_init» микшер * Чтобы избавиться от неприятной задержки между предоставлением команды воспроизведения для звука и слуха Это*. – halex

ответ

0

Путь pygame.mixer.pre_init(44100, -16, 1, 512) до mx.init().

Смежные вопросы