예제 #1
0
파일: OpenAL_HRTF.py 프로젝트: shaix/PyAL
    def __init__(self, filename):
        self.name = filename
        #load/set wav file
        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(os.path.realpath(__file__))
            fname = os.path.join(dirname, filename)
        else:
            fname = sys.argv[1]

        wavefp = wave.open(fname)
        channels = wavefp.getnchannels()
        bitrate = wavefp.getsampwidth() * 8
        samplerate = wavefp.getframerate()
        wavbuf = wavefp.readframes(wavefp.getnframes())
        self.duration = (len(wavbuf) / float(samplerate)) / 2
        self.length = len(wavbuf)
        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)]

        self.buf = al.ALuint(0)
        al.alGenBuffers(1, self.buf)
        #allocate buffer space to: buffer, format, data, len(data), and samplerate
        al.alBufferData(self.buf, alformat, wavbuf, len(wavbuf), samplerate)
예제 #2
0
파일: sound.py 프로젝트: vktrbhm/HRTF_Micro
    def __init__(self, filename):
        self.name = filename
        # load/set wav file
        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(os.path.realpath(__file__))
            fname = os.path.join(dirname, filename)
        else:
            fname = sys.argv[1]

        wavefp = wave.open(fname)
        channels = wavefp.getnchannels()
        bitrate = wavefp.getsampwidth() * 8
        samplerate = wavefp.getframerate()
        wavbuf = wavefp.readframes(wavefp.getnframes())
        self.duration = (len(wavbuf) / float(samplerate)) / 2
        self.length = len(wavbuf)
        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)]

        self.buf = al.ALuint(0)
        al.alGenBuffers(1, self.buf)
        # allocate buffer space to: buffer, format, data, len(data), and samplerate
        al.alBufferData(self.buf, alformat, wavbuf, len(wavbuf), samplerate)
예제 #3
0
    def write(self, audio_data):
        buffer = al.ALuint()
        al.alGenBuffers(1, buffer)
        al.alBufferData(buffer, self._al_format, audio_data.data, audio_data.length, self.audio_format.sample_rate)
        al.alSourceQueueBuffers(self._al_source, 1, ctypes.byref(buffer))

        self._buffered_time += audio_data.duration
        self._timestamps.append((audio_data.timestamp, audio_data.duration))
        audio_data.consume(audio_data.length, self.audio_format)
예제 #4
0
    def write(self, audio_data):
        buffer = al.ALuint()
        al.alGenBuffers(1, buffer)
        al.alBufferData(buffer, self._al_format, audio_data.data,
                        audio_data.length, self.audio_format.sample_rate)
        al.alSourceQueueBuffers(self._al_source, 1, ctypes.byref(buffer))

        self._buffered_time += audio_data.duration
        self._timestamps.append((audio_data.timestamp, audio_data.duration))
        audio_data.consume(audio_data.length, self.audio_format)
예제 #5
0
 def get(self, timestamp, length, owner, is_eos=False):
     if not self:
         buffer = al.ALuint()
         al.alGenBuffers(1, buffer)
         info = BufferInformation()
         self.info[buffer.value] = info
     else:
         buffer = al.ALuint(self.pop(0))
         info = self.info[buffer.value]
     info.timestamp = timestamp  # for video sync
     info.length = length        # in seconds
     info.owner = owner          # Source that owns it, or buffer_pool
     info.is_eos = is_eos        # True if last buffer for this source
     return buffer
예제 #6
0
    def __init__(self):
        self.channels = 1
        self.bitrate = 16
        self.samplerate = 8000
        self.wavbuf = None
        self.alformat = al.AL_FORMAT_MONO16
        self.length = None
        ##        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)]

        self.buf = al.ALuint(0)
        al.alGenBuffers(1, self.buf)
예제 #7
0
파일: OpenAL.py 프로젝트: anden3/Python
    def __init__(self, file):
        self.name = file

        wavefp = wave.open(file)
        channels = wavefp.getnchannels()
        bitrate = wavefp.getsampwidth() * 8
        samplerate = wavefp.getframerate()
        wavbuffer = wavefp.readframes(wavefp.getnframes())

        self.duration = (len(wavbuffer) / float(samplerate)) / 2
        self.length = len(wavbuffer)

        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)]

        self.buffer = al.ALuint(0)
        al.alGenBuffers(1, self.buffer)
        al.alBufferData(self.buffer, alformat, wavbuffer, self.length, samplerate)
예제 #8
0
파일: OpenAL.py 프로젝트: anden3/Python
    def __init__(self, file):
        self.name = file

        wavefp = wave.open(file)
        channels = wavefp.getnchannels()
        bitrate = wavefp.getsampwidth() * 8
        samplerate = wavefp.getframerate()
        wavbuffer = wavefp.readframes(wavefp.getnframes())

        self.duration = (len(wavbuffer) / float(samplerate)) / 2
        self.length = len(wavbuffer)

        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)]

        self.buffer = al.ALuint(0)
        al.alGenBuffers(1, self.buffer)
        al.alBufferData(self.buffer, alformat, wavbuffer, self.length,
                        samplerate)