Я пытаюсь написать код для воспроизведения звуков с использованием 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 мс, я получаю хороший, даже масштаб, поэтому проблема заключается не только в том, что звуковые файлы неравномерно отредактированы.
Как я могу улучшить это время? Мне кажется, что точное время должно быть очень важным в игровой библиотеке, особенно когда нагрузка довольно светлая (как в данном случае).
Нужно ли учитывать длину самого звукового файла при расчете задержки для следующего звука? Время Python должно быть достаточно точным для такого рода вещей. – 101
Я так не думаю. Неравномерность несовместима, как я ожидал бы, если бы это было так. – Tom
[Эта ссылка] (http://thepythongamebook.com/en:pygame:step010#initializing_the_mixer) гласит, что лучше «pre_init» микшер * Чтобы избавиться от неприятной задержки между предоставлением команды воспроизведения для звука и слуха Это*. – halex