Как использовать Pyglet для воспроизведения звука в анимации Mayavi? - PullRequest
1 голос
/ 05 июля 2019

Я хочу воспроизвести звук, используя pyglet в цикле анимации Mayavi, но я обнаружил, что pyglet не очень хорошо работает с «yield», который должен использоваться в анимации Mayavi. Ситуация такова, что он просто не может начать новый цикл, когда воспроизводится звук и анимация однажды, вот некоторые из моих кодов, есть идеи?

pyglet может воспроизводить звук в цикле for, но не может использовать yield.

@mlab.animate(delay=delays)
def animate():
    f = mlab.gcf()
    while True:
        for i in range(frames_num): 
            # update sound
            sound = 'shiping/shiping_%d.wav'%i
            sound_adjust = pyglet.resource.media(sound, streaming=False)
            sound_adjust.play()

            # update scene
            print('Update scene >>', time.time())
            function_to_update_scene()
            # with out 'yield' it works well
            yield
animate()

Любые другие предложенные модули также могут быть приняты. Дело в том, что мне нужно быстро обновить звук в течение 20 мс.

1 Ответ

1 голос
/ 24 июля 2019

Я наконец решил это с помощью модуля winsound. Использование

winsound.PlaySound(sound, winsound.SND_FILENAME | winsound.SND_ASYNC)

заменить

sound_adjust = pyglet.resource.media(sound, streaming=False) 
sound_adjust.play()

для воспроизведения определенного звука асинхронно. Конечно же, вы должны import winsound в самом начале.

...