Python openAL 3D звук

Я только начал с python и делаю программу для обработки звука. Я пытаюсь реализовать 3D-звук с помощью openAL в своем приложении Python, но я просто могу заставить его работать

это мой код для 3D-звука:

from openal.loaders import load_wav_file
from openal.audio import *

sink = SoundSink()   
listener = SoundListener()
SoundSink.activate(sink)
listener.position = (0, 0, 0)
listener.velocity = (0, 0, 0)
listener.orientation = (0, 0, -1, 0, 1, 0)
source = SoundSource()
wavsound = load_wav_file("test.wav")
source.queue(wavsound)
#SoundSink.play(source)
sink.play(source)

Код выполняется, но звук не воспроизводится


person Danial    schedule 11.04.2016    source источник
comment
Просто мысль; Вы пытались поставить задержку в конце программы, прежде чем она выйдет? OpenAL по своей сути работает в фоновом режиме, но если программа закрывается, AL обычно закрывается вместе с ней.   -  person Michael Macha    schedule 16.08.2016


Ответы (1)


Оказывается, есть несколько примеров использования PyAL на странице репозитория Bitbucket здесь. На основе примера audioplayer.py я сделал этот раздражающий пример со звуковой альтернативой между левым и правым динамиком наушников в соответствии с синусоидой:

import time
import math
from openal.audio import SoundSink, SoundSource
from openal.loaders import load_wav_file

if __name__ == "__main__":
    sink = SoundSink()
    sink.activate()
    source = SoundSource(position=[0, 0, 0])
    source.looping = True
    data = load_wav_file("./sounds/Blip_Select.wav")
    source.queue(data)
    sink.play(source)
    t = 0
    while True:
        x_pos = 5*math.sin(math.radians(t))
        source.position = [x_pos, source.position[1], source.position[2]]
        sink.update()
        print("playing at %r" % source.position)
        time.sleep(0.1)
        t += 5
person CodeSurgeon    schedule 03.12.2016
comment
Что касается вашего импорта from, openal.audio вызывает у меня ошибку, например, модуль не существует? Я установил PyOpenAL с помощью pip, это правильно? Этот ответ устарел для текущей версии или я что-то не так? - person ch4rl1e97; 14.07.2019
comment
@ ch4rl1e97 Да, код здесь выглядит устаревшим. Он опирается на PyAL, а не на оболочку PyOpenAL. Первый не обновлялся с 2013 года, похоже. На странице PyPi для PyOpenAL есть справочный раздел, хотя это должно сделать этот код тривиальным для переноса. - person CodeSurgeon; 14.07.2019