2016-04-11 7 views
3

Ich habe gerade mit Python begonnen und ich mache ein Programm für Audio-Manipulation. Ich versuche, 3D-Sound mit openAL in meiner Python-Anwendung zu implementieren, aber ich kann nur bekommen esPython openAL 3D Sound

dies ist mein Code für 3D-Sound zu arbeiten:

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) 

Der Code ausgeführt wird, aber es doesn‘ t spielen den Sound

+1

Nur ein Gedanken; Haben Sie versucht, eine Verzögerung am Ende des Programms zu setzen, bevor es beendet wird? OpenAL läuft eigentlich im Hintergrund, aber wenn das Programm schließt, wird AL normalerweise damit heruntergefahren. –

Antwort

0

Es stellt sich heraus, dass es einige Beispiele dafür, wie here PyAL am Bitbucket Repository Seite nutzen zu können. Basierend aus dem audioplayer.py Beispiel habe ich dieses lästige klingendes Beispiel mit der Klang Alternative zwischen den linken und rechten Kopfhörer Lautsprechern nach einer Sinuswelle:

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