# Version History

0.5.5 (2026-01-23):

  - Fix bug from previous release

0.5.4 (2026-01-21):

  - provide wheels for ARM64/Windows (WoA)

0.5.3 (2025-10-19):

  - add `explicit_sample_format` parameter to `WasapiSettings`

0.5.2 (2025-05-16):

  - Better error if frames/channels are non-integers

0.5.1 (2024-10-12):

  - Windows wheel: bundle both non-ASIO and ASIO DLLs, the latter can be chosen by defining the `SD_ENABLE_ASIO` environment variable

0.5.0 (2024-08-11):

  - Remove ASIO support from bundled DLLs (DLLs with ASIO can be manually selected)

0.4.7 (2024-05-27):

  - support `paWinWasapiAutoConvert` with `auto_convert` flag in `WasapiSettings`

  - Avoid exception in `PortAudioError``.__str__()`

0.4.6 (2023-02-19):

  - Redirect stderr with `os.dup2()` instead of CFFI calls

0.4.5 (2022-08-21):

  - Add `index` field to device dict

  - Require Python >= 3.7

  - Add PaWasapi_IsLoopback() to cdef (high-level interface not yet available)

0.4.4 (2021-12-31):

  - Exact device string matches can now include the host API name

0.4.3 (2021-10-20):

  - Fix dimension check in `Stream.write()`

  - Provide “universal” (x86_64 and arm64) `.dylib` for macOS

0.4.2 (2021-07-18):

  - Update PortAudio binaries to version 19.7.0

  - Wheel names are now shorter

0.4.1 (2020-09-26):

  - `CallbackFlags` attributes are now writable

0.4.0 (2020-07-18):

  - Drop support for Python 2.x

  - Fix memory issues in `play()`, `rec()` and `playrec()`

  - Example application `play_stream.py`

0.3.15 (2020-03-18):

  - This will be the last release supporting Python 2.x!

0.3.14 (2019-09-25):

  - Examples `play_sine.py` and `rec_gui.py`

  - Redirect `stderr` only during initialization

0.3.13 (2019-02-27):

  - Examples `asyncio_coroutines.py` and `asyncio_generators.py`

0.3.12 (2018-09-02):

  - Support for the dylib from Anaconda

0.3.11 (2018-05-07):

  - Support for the DLL from `conda-forge`

0.3.10 (2017-12-22):

  - Change the way how the PortAudio library is located

0.3.9 (2017-10-25):

  - Add `Stream.closed`

  - Switch CFFI usage to “out-of-line ABI” mode

0.3.8 (2017-07-11):

  - Add more `ignore_errors` arguments

  - Add `PortAudioError.args`

  - Add `CoreAudioSettings`

0.3.7 (2017-02-16):

  - Add `get_stream()`

  - Support for CData function pointers as callbacks

0.3.6 (2016-12-19):

  - Example application `play_long_file.py`

0.3.5 (2016-09-12):

  - Add `extra_settings` option for host-API-specific stream settings

  - Add `AsioSettings` and `WasapiSettings`

0.3.4 (2016-08-05):

  - Example application `rec_unlimited.py`

0.3.3 (2016-04-11):

  - Add `loop` argument to `play()`

0.3.2 (2016-03-16):

  - `mapping=[1]` works now on all host APIs

  - Example application `plot_input.py` showing the live microphone signal(s)

  - Device substrings are now allowed in `query_devices()`

0.3.1 (2016-01-04):

  - Add `check_input_settings()` and `check_output_settings()`

  - Send PortAudio output to `/dev/null` (on Linux and OSX)

0.3.0 (2015-10-28):

  - Remove `print_devices()`, `query_devices()` can be used instead, since it now returns a `DeviceList` object.

0.2.2 (2015-10-21):

  - Devices can now be selected by substrings of device name and host API name

0.2.1 (2015-10-08):

  - Example applications `wire.py` (based on PortAudio’s `patest_wire.c`) and `spectrogram.py` (based on code by Mauris Van Hauwe)

0.2.0 (2015-07-03):

  - Support for wheels including a dylib for Mac OS X and DLLs for Windows. The code for creating the wheels is largely taken from the soundfile module.

  - Remove logging (this seemed too intrusive)

  - Return callback status from `wait()` and add the new function `get_status()`

  - `playrec()`: Rename the arguments input_channels and input_dtype to channels and dtype, respectively

0.1.0 (2015-06-20):

  Initial release. Some ideas are taken from PySoundCard. Thanks to Bastian Bechtold for many fruitful discussions during the development of several features which python-sounddevice inherited from there.