Example #1
0
    def write(self, buff, frames_per_buffer):
        if frames_per_buffer is None:
            frames_per_buffer = len(frames_per_buffer)
        value = _portaudio.Pa_GetStreamWriteAvailable(self.stream)
        if value < 0:
            # if value is negative, its a PaError code
            try:
                raise get_exception(value)
            except NoError:
                pass

        err = _portaudio.Pa_WriteStream(self.stream, byref(buff), c_ulong(frames_per_buffer))
        try:
            raise get_exception(err)
        except NoError:
            pass
Example #2
0
    def open(self, mode='rw', input_parameters=None, output_parameters=None, callback=None, user_data=None):
        if 'w' in mode:
            output_parameters = output_parameters or self.build_output_parameters()

        if 'r' in mode:
            input_parameters = input_parameters or self.build_input_parameters()

        if callback:
            # we need to save a reference to the callback so it is not garbage collected
            pa_stream_callback = PaStreamCallback(callback)
            self._callbacks.append(pa_stream_callback)

        if user_data is not None:
            py_object_user_data = py_object(user_data)
            self._user_datum.append(py_object_user_data)

        err = _portaudio.Pa_OpenStream(byref(self.stream),
                                       byref(input_parameters) if input_parameters else None,
                                       byref(output_parameters) if output_parameters else None,
                                       self.sample_rate,
                                       self.frames_per_buffer,
                                       self.flags,
                                       pa_stream_callback if callback else None,
                                       py_object_user_data if user_data else None)
        try:
            raise get_exception(err)
        except NoError:
            pass
Example #3
0
 def __enter__(self):
     try:
         err = _portaudio.Pa_Initialize()
         raise get_exception(err)
     except NoError:
         pass
     return self
Example #4
0
    def read(self, size=None):
        if size is None:
            size = self.frames_per_buffer

        value = _portaudio.Pa_GetStreamReadAvailable(self.stream)
        if value < 0:
            # if value is negative, its a PaError code
            try:
                raise get_exception(value)
            except NoError:
                pass

        buff = c_void_p()
        err = _portaudio.Pa_ReadStream(self.stream, byref(buff), c_ulong(size))
        try:
            raise get_exception(err)
        except NoError:
            pass

        return buff
Example #5
0
 def stop(self):
     err = _portaudio.Pa_StopStream(self.stream)
     try:
         raise get_exception(err)
     except NoError:
         pass
Example #6
0
 def close(self):
     err = _portaudio.Pa_CloseStream(self.stream)
     try:
         raise get_exception(err)
     except NoError:
         pass
Example #7
0
 def __exit__(self, type, value, traceback):
     err = _portaudio.Pa_Terminate()
     try:
         raise get_exception(err)
     except NoError:
         pass