def get_sample_size(self, format): """ Returns the size (in bytes) for the specified sample `format` (a |PaSampleFormat| constant). :param format: A |PaSampleFormat| constant. :raises ValueError: Invalid specified `format`. :rtype: integer """ return pa.get_sample_size(format)
def get_sample_size(format): """ Returns the size (in bytes) for the specified sample `format` (a `PaSampleFormat` constant). :param `format`: PortAudio sample format constant `PaSampleFormat`. :raises ValueError: Invalid specified `format`. :rtype: int """ return pa.get_sample_size(format)
def __init__(self, channels: int = 1, sample_format: int = PA_INT16, sample_rate: int = 0): msg = 'Param "channels" ({}) must be a positive integer greater than 1'.format(channels) assert channels is not None and isinstance(channels, int) and channels > 0, msg if sample_format not in PA_FORMATS: formats = ', '.join([str(it) for it in PA_FORMATS]) msg = 'Param "sample_format" ({}) must be one of: [{}]'.format(sample_format, formats) assert sample_format in PA_FORMATS, msg msg = 'Param "sample_rate" ({}) must be a positive integer'.format(sample_rate) assert (sample_rate is not None and isinstance(sample_rate, (float, int)) and sample_rate > 0), msg sample_width = pa.get_sample_size(sample_format) msg = 'Value "sample_width" ({}) must be integer between 1 and 4 inclusive' assert isinstance(sample_width, int) and 1 <= sample_width <= 4, msg.format(sample_width) self._channels = channels self._sample_format = sample_format self._sample_rate = int(sample_rate) self._sample_width = sample_width
print "* starting stream" _portaudio.start_stream(stream) print "* recording" all = [] for i in range(0, 44100 / chunk * RECORD_SECONDS): data = _portaudio.read_stream(stream, chunk) all.append(data) print "* stopping stream" _portaudio.stop_stream(stream) print "* closing stream" _portaudio.close(stream) # match all initialize() with terminate() calls _portaudio.terminate() # write data to WAVE file data = ''.join(all) wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(_portaudio.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(data) wf.close()