def run(): if len(sys.argv) < 2: print("Usage: %s wavefile" % os.path.basename(sys.argv[0])) print(" Using an example wav file...") dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "hey.wav") else: fname = sys.argv[1] wavefp = wave.open(fname) channels = wavefp.getnchannels() bitrate = wavefp.getsampwidth() * 8 samplerate = wavefp.getframerate() wavbuf = wavefp.readframes(wavefp.getnframes()) formatmap = { (1, 8): al.AL_FORMAT_MONO8, (2, 8): al.AL_FORMAT_STEREO8, (1, 16): al.AL_FORMAT_MONO16, (2, 16): al.AL_FORMAT_STEREO16, } alformat = formatmap[(channels, bitrate)] device = alc.alcOpenDevice(None) context = alc.alcCreateContext(device, None) alc.alcMakeContextCurrent(context) source = al.ALuint(0) al.alGenSources(1, source) al.alSourcef(source, al.AL_PITCH, 1) al.alSourcef(source, al.AL_GAIN, 1) al.alSource3f(source, al.AL_POSITION, 0, 10, 0) al.alSource3f(source, al.AL_VELOCITY, 0, 0, 0) al.alSourcei(source, al.AL_LOOPING, 1) buf = al.ALuint(0) al.alGenBuffers(1, buf) al.alBufferData(buf, alformat, wavbuf, len(wavbuf), samplerate) al.alSourceQueueBuffers(source, 1, buf) al.alSourcePlay(source) state = al.ALint(0) al.alGetSourcei(source, al.AL_SOURCE_STATE, state) z = 10 while z > -10: time.sleep(1) al.alSource3f(source, al.AL_POSITION, 0, 0, z) print("playing at %r" % ([z, 0, 0])) z -= 1 print("done") al.alDeleteSources(1, source) al.alDeleteBuffers(1, buf) alc.alcDestroyContext(context) alc.alcCloseDevice(device)
def run(): if len (sys.argv) < 2: print ("Usage: %s wavefile" % os.path.basename(sys.argv[0])) print (" Using an example wav file...") dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "hey.wav") else: fname = sys.argv[1] wavefp = wave.open(fname) channels = wavefp.getnchannels() bitrate = wavefp.getsampwidth() * 8 samplerate = wavefp.getframerate() wavbuf = wavefp.readframes(wavefp.getnframes()) formatmap = { (1, 8) : al.AL_FORMAT_MONO8, (2, 8) : al.AL_FORMAT_STEREO8, (1, 16): al.AL_FORMAT_MONO16, (2, 16) : al.AL_FORMAT_STEREO16, } alformat = formatmap[(channels, bitrate)] device = alc.alcOpenDevice(None) context = alc.alcCreateContext(device, None) alc.alcMakeContextCurrent(context) source = al.ALuint(0) al.alGenSources(1, source) al.alSourcef(source, al.AL_PITCH, 1) al.alSourcef(source, al.AL_GAIN, 1) al.alSource3f(source, al.AL_POSITION, 10, 0, 0) al.alSource3f(source, al.AL_VELOCITY, 0, 0, 0) al.alSourcei(source, al.AL_LOOPING, 1) buf = al.ALuint(0) al.alGenBuffers(1, buf) al.alBufferData(buf, alformat, wavbuf, len(wavbuf), samplerate) al.alSourceQueueBuffers(source, 1, buf) al.alSourcePlay(source) state = al.ALint(0) al.alGetSourcei(source, al.AL_SOURCE_STATE, state) z = 10 while z > -10: time.sleep(1) al.alSource3f(source, al.AL_POSITION, z, 0, 0) print("playing at %r" % ([z, 0, 0])) z -= 1 print("done") al.alDeleteSources(1, source) al.alDeleteBuffers(1, buf) alc.alcDestroyContext(context) alc.alcCloseDevice(device)
def __init__(self): #load source player self.source = al.ALuint(0) al.alGenSources(1, self.source) #disable rolloff factor by default al.alSourcef(self.source, al.AL_ROLLOFF_FACTOR, 0) #disable source relative by default al.alSourcei(self.source, al.AL_SOURCE_RELATIVE,0) #capture player state buffer self.state = al.ALint(0) #set internal variable tracking self._volume = 1.0 self._pitch = 1.0 self._position = [0,0,0] self._rolloff = 1.0 self._loop = False self.queue = []
def main(): source = al.ALuint() device = alc.alcOpenDevice(None) if not device: error = alc.alcGetError() # do something with the error, which is a ctypes value return -1 # Omit error checking context = alc.alcCreateContext(device, None) alc.alcMakeContextCurrent(context) # Do more things al.alGenSources(1, source) al.alSourcef(source, al.AL_PITCH, 1) al.alSourcef(source, al.AL_GAIN, 1) al.alSource3f(source, al.AL_POSITION, 10, 0, 0) al.alSource3f(source, al.AL_VELOCITY, 0, 0, 0) al.alSourcei(source, al.AL_LOOPING, 1) al.alDeleteSources(1, source) alc.alcDestroyContext(context) alc.alcCloseDevice(device) return 0
def get_sources(): """ Instantiates and returns a left, center and right audio source. Returns: A tuple of (LEFT, RIGHT, CENTER) localized sources. """ POS_LEFT, POS_CENTER, POS_RIGHT = [(i, 0, 0) for i in range(-1, 2)] # Instantiate the sources sources = left, right, center = tuple(al.ALuint(i) for i in range(0, 3)) for src in sources: al.alGenSources(1, src) al.alSourcef(src, al.AL_PITCH, 1) # plays at default pitch. al.alSourcef(src, al.AL_GAIN, 1) al.alSource3f(src, al.AL_VELOCITY, 0, 0, 0) al.alSourcei(src, al.AL_LOOPING, al.AL_FALSE) # Assign a position to each source. al.alSource3f(left, al.AL_POSITION, *POS_LEFT) al.alSource3f(right, al.AL_POSITION, *POS_RIGHT) al.alSource3f(center, al.AL_POSITION, *POS_CENTER) return left, right, center
def _set_seek(self,offset):#float 0.0-1.0 al.alSourcei(self.source,al.AL_BYTE_OFFSET,int(self.queue[0].length * offset))
def remove(self): if len(self.queue) > 0: al.alSourceUnqueueBuffers(self.source, 1, self.queue[0].buf) #self.buf al.alSourcei(self.source, al.AL_BUFFER, 0) self.queue.pop(0)
def _set_loop(self,lo): self._loop = lo al.alSourcei(self.source, al.AL_LOOPING, lo)