0.2.0:
- (9223b) Fixed bug with loop mode which caused frame droppage
- (5cd35) Added --channel-select for ASIO backend
- (110b6-b56ee) Add channel mapping settable through tx/rxmapping properties. Also adds --map option to cli
0.1.2:
- (ba45a) improve file read/write efficiency
- (b7b7d) added --fatal-xruns option to automatically abort on detected xruns
- (5d7dc) fixed encoding errors with non-ascii device names
0.1.1:
- minor fixes to docs and cli
- (c533a) add 'mode' argument to to_file
- (c533a) defer numpy import to improve total import time (as well as the launch time of the pastream cli app)
- (df4bc3) add tone generator example to README
- (df4bc3) bump sounddevice req up to 0.3.9 to get improved import times
- 0.1.0:
- (c70bda) Dropped SoundFileStream classes. This functionality is now integrated into the regular stream classes.
- (c70bda) Added play/record/playrec methods
- (dbe076) Added seamless support for SoundFiles
- (dbe076) Added built-in support for looping both files and buffers
- (a65cc5) Added set_source/set_sink methods as alternatives to play/record and as a mechanism to set reader/writer threads.
- (a65cc5) Added to_file/from_file convenience methods
- (7676eb+58472e) offset/pad/duration are all now specified in hours:minutes:seconds by default. samples can still be specified by appending an 's' suffix (just like with SoX).
- 0.0.8:
- BUG: fixed possible bad behavior when pad >= 0 frames < 0 (06881)
- BUG: pad > 0 can cause too many frame reads (fixed in e917e)
- Receive buffer is no longer automatically flushed when calling start() (cd65b)
- BUG: AttributeError was not correctly being caught and reraised in stream threads (3bc5e)
- Added sphinx documentation (11c13)
frames
attribute changed fromlong
tolong long
(ee4ebb)- chunks: eliminated an unnecessary copy when using
overlap
(b0304)
- 0.0.7:
- add --loop option to the CLI to allow looping playback.
- allow empty string as an alternative to null
- Raise exception when attempting to open stream with RAW playback file if any of samplerate/channels/subtype are not specified.
- change prebuffering behavior slightly: only wait until the first write, not until the buffer fills up. This should avoid potential long pre-buffer times
- fix formatting errors in __repr__ when using multiple dtypes and/or devices
- no need to vendor pa_ringbuffer anymore, it's available on pip! (Thanks @mgeier !)
- if a SoundFile inpf is passed to a SoundFileInputStream class, it will be used to set the stream samplerate/channels.
- addresses a bug when BUFFERSIZE < 8192
- Stream and SoundFileStream classes renamed to *DuplexStream
- Swapped assignments of input/output in SoundFileStreams to make it align with the usage in the rest of the library. The order of input/output arguments from the CLI still stays the same though.
- remove allow_drops parameters. It can be added back at a later point if it proves to be a more useful feature
- 0.0.6:
- fix 'null' not properly matching on cmdline
- chunks: check that portaudio has not been terminated before trying to close/stop a stream
- drop allow_xruns/XRunError
- Buffered*Stream -> *Stream
- *Buffer{Empty,Full} -> Buffer{Empty,Full}
- fix remaining issues with wheel building
- Dropped unused exception classes (PaStreamError, AudioBufferError)
- Added prebuffer argument to start() to bypass filling output buffer before stream starts
- 0.0.5:
- Redirect sys.stdout to devnull when '-' is used as the output file stream
- Specifying multiple
--file-type
s at command line fixed --format
now only accepts a single argumentringbuffersize_t
is of a different type for mac platforms; fixed- ps.chunks() README example fixed
frames
is now a signed value. The behavior previously reserved for- frames == 0 now is active whenever frames < 0
- Comma separated arguments are no longer allowed; multiple argument options can only be specified by passing them multiple times
- dropped support for passing a bool for
pad
parameter -q
flag for specifying buffersize has been dropped. This is now reserved for the new--quiet
option.
- add a loopback test for the pastream app using stdin > stdout
- improvement:
chunks
function: make sure that stream is closed properly without the performance hit of having an extra yield - new feature: If both
padding
andframes
are < 0, padding will be added indefinitely - new feature:
-q/--quiet
option; this drops the deprecated -q option for specifying buffersize
- 0.0.4:
- bugfix: chunks: overlap was (accidentally) not allowed if chunksize was not non-zero. This should be allowed as long as stream.blocksize > 0.
- chunks now supports passing a generic ndarray to
out
parameter (without having to cast it to a bytes object) nframes
renamed toframes
padding
renamed topad
- added
allow_drops
option to give user the option to ignoreReceiveBufferEmpty
error in more atypical use cases raise_on_xruns
changed toallow_xruns
; inverted behavior- got rid of undocumented
keep_alive
option; the combination ofallow_drops
andpad
can give the same functionality --pad
now can be specified without an argument which just sets pad to True- added autopadding feature: Now if
frames
> 0 andpad
== True or pad < 0, playback will be zero padded out toframes
. This is a nice feature for the pastream application and SoundFileStream since sometimes you want to add extra padding after the file playback.
- 0.0.3:
- command line options for size parameters now accept k/K/m/M suffix
- Backwards compatibility break: multiple argument command line options now accept a comma delimited list
- improved SoundFileStream reader writers; nearly zero read/write misses
- bugfix: __repr__ had a bug for certain cases
- 0.0.2:
- Improved SoundFileStream interface: remove sfkwargs; instead format, endian, and subtype can be passed directly since they don't collide with any of the sounddevice parameters
- Updated examples to allow half or full duplex operation. Also accepts subtype for RAW files
- chunks() updates * better polling behavior greatly decreases read misses * now supports generic buffers so numpy is not required * added out option to allow user to pass a preallocated buffer * bugfix: overlap was not overlapping correctly
- MAJOR bugfix: samplerate was not being properly passed up the class chain
- MAJOR bugfix: lastTime was not being properly copied in py_pastream.c so the value returned was garbage
- bugfix: assert_chunks_equal: the 'inframes' buffer was not being allocated enough space for when chunksize > blocksize which was causing mismatch hysteria
- 0.0.1:
- First tenable release