All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
ErrorKind::DeviceBusyfor retryable device access errors (e.g. EBUSY, EAGAIN).ErrorKind::PermissionDeniedfor OS-level access denials.StreamConfignow implementsCopy.StreamTrait::buffer_size()to query the stream's current buffer size in frames per callback.HostTrait::device_by_id()is now dispatched to each backend's implementation, allowing backends to override it.StreamTrait::now()to query the current instant on the stream's clock.- ALSA:
device_by_id()now accepts PCM shorthand names such ashw:0,0andplughw:foo. - CoreAudio: tvOS target support (Tier 3, requires nightly).
- PipeWire: New host for Linux and some BSDs using the PipeWire API.
- PulseAudio: New host for Linux and some BSDs using the PulseAudio API.
- Changed per-operation error types (
DevicesError,SupportedStreamConfigsError, etc.) andHostUnavailableinto a unfiedError/ErrorKind. See UPGRADING.md. DeviceTrait::build_*_stream()now takesStreamConfigby value instead of&StreamConfigHostId::name()now returns a more human-friendly name instead of the raw backend identifier.StreamInstantAPI changed and extended to mirrorstd::time::Instant/Duration. See UPGRADING.md for migration details.- AAudio: Device names now include the device type suffix (e.g. "Speaker (Builtin Speaker)") for easier identification when enumerating devices.
- AAudio:
supported_input_configs()andsupported_output_configs()now return an error for direction-mismatched devices (e.g. querying input configs on an output-only device) instead of silently returning an empty list. - AAudio: Bump MSRV to 1.85.
- AAudio: Buffers with default sizes are now dynamically tuned.
- AAudio:
SupportedBufferSizenow reportsmin: 1. - ALSA: Device disconnection now stops the stream with
ErrorKind::DeviceNotAvailable. - ALSA: Polling errors trigger underrun recovery instead of looping.
- ALSA: Try to resume from hardware after a system suspend.
- ALSA: Loop partial reads and writes to completion.
- ALSA: Prevent reentrancy issues with non-reentrant plugins and devices.
- ASIO:
Device::driver,asio_streams, andcurrent_callback_flagare no longerpub. - ASIO: Timestamps now include driver-reported hardware latency.
- ASIO: Hardware latency is now re-queried when the driver reports
kAsioLatenciesChanged. - ASIO: Stream error callback now receives
ErrorKind::XrunonkAsioResyncRequest. - ASIO: Stream error callback now receives
ErrorKind::StreamInvalidatedwhen the driver reports a sample rate change (sampleRateDidChange) of 1 Hz or more from the configured rate. - AudioWorklet:
BufferSize::Fixednow setsrenderSizeHinton theAudioContext. - CoreAudio: Bump MSRV to 1.85.
- CoreAudio: Bump
mach2to 0.6 (usescore::ffiinstead oflibc, enables tvOS builds). - CoreAudio: Timestamps now include device latency and safety offset.
- CoreAudio: Physical stream format is now set directly on the hardware device.
- CoreAudio: Stream error callback now receives
ErrorKind::StreamInvalidatedon any sample rate change on macOS, and on iOS on route changes that require a stream rebuild. - CoreAudio: Stream error callback now receives
ErrorKind::DeviceNotAvailableon iOS when media services are lost. - CoreAudio: User timeouts are now respected when building a stream.
- JACK: Timestamps now use the precise hardware deadline.
- JACK: Buffer size change no longer fires an error callback; internal buffers are resized without error.
- JACK: Server shutdown now fires
ErrorKind::DeviceNotAvailable. - JACK: Default client name now includes the process PID.
- JACK: User timeouts are now respected when building a stream.
- Linux/BSD: Default host in order from first to last available now is: PipeWire, PulseAudio, ALSA.
- WASAPI: Timestamps now include hardware pipeline latency.
- WASAPI:
FriendlyNameis now preferred as device name overDeviceDesc. - WebAudio: Bump MSRV to 1.85.
- WebAudio: Timestamps now include base and output latency.
- WebAudio: Initial buffer scheduling offset now scales with buffer duration.
- Replaced
StreamInstant::add()andsub()bychecked_add()/+andchecked_sub()/-. - Emscripten: Removed broken host; use the WebAudio host instead.
- Reintroduce
audio_thread_priorityfeature. - Fix numeric overflows in calls to create
StreamInstantin ASIO, CoreAudio and JACK. - AAudio: Fix thread lock when a stream is dropped before it fully starts.
- AAudio: Fix capture and playback timestamps falling back to time-zero on error.
- AAudio: Fix capture and playback timestamp not accounting for audio pipeline buffer depth.
- AAudio: Fix overflow in
buffer_capacity_in_framesfor large fixed buffer sizes. - AAudio: Poisoned stream locks now return
ErrorKind::StreamInvalidatedinstead of panicking. - ALSA: Fix capture stream hanging or spinning on overruns.
- ALSA: Fix non-monotonic
StreamInstantduring stream startup. - ALSA: Fix spurious timestamp errors during stream startup.
- ALSA: Fix spurious timeout errors during polling.
- ALSA: Fix rare panics when dropping the stream is interrupted.
- ALSA: Fix timestamp overflows on 32-bit platforms.
- ALSA: Fix overflow in
buffer_capacity_in_framesfor large fixed buffer sizes. - ASIO: Fix enumeration returning only the first device when using
collect(). - ASIO: Fix device enumeration and stream creation failing when called from spawned threads.
- ASIO: Fix buffer size not resizing when the driver reports
kAsioBufferSizeChange. - ASIO: Fix latency not updating when the driver reports
kAsioLatenciesChanged. - ASIO: Fix distortion when buggy drivers fire the buffer callback multiple times per cycle.
- ASIO: Poisoned error callback mutex no longer silently drops subsequent error notifications.
- ASIO: Poisoned stream mutex in the buffer-size change handler no longer silently skips the update.
- ASIO: Poisoned stream locks now return
ErrorKind::StreamInvalidatedinstead of panicking. - CoreAudio: Fix undefined behaviour and silent failure in loopback device creation.
- CoreAudio: Poisoned stream locks now return
ErrorKind::StreamInvalidatedinstead of panicking. - JACK: Fix input capture timestamp using callback execution time instead of cycle start.
- JACK: Poisoned error callback mutex no longer silently drops subsequent error notifications.
- PulseAudio: Poisoned locks now exit the thread gracefully instead of panicking.
- JACK: Port registration failure now fails stream creation instead of silently failing.
- JACK:
activate_async()failure now returns an error instead of panicking. - JACK: Sample rate is now validated against the live JACK server at stream creation time.
- JACK: Underrun notification no longer blocks the notification thread.
- WASAPI: Poisoned locks now returns an error instead of panicking.
- WebAudio: Fix duplicated callbacks on repeated
play()calls. - WebAudio: Report errors through the callback instead of panicking.
0.17.3 - 2026-02-18
- Reverted SemVer-breaking
DeviceBusyerror variant addition.
- ASIO: Fix linker errors.
0.17.2 - 2026-02-08 [YANKED]
DeviceBusyerror variant for retriable device access errors (EBUSY, EAGAIN).- ALSA:
Debugimplementations forHost,Device,Stream, and internal types. - ALSA: Example demonstrating ALSA error suppression during enumeration.
- ALSA: Support for native DSD playback.
- WASAPI: Enable as-necessary resampling in the WASAPI server process.
- Bump overall MSRV to 1.78.
- ALSA: Update
alsadependency to 0.11. - ALSA: Bump MSRV to 1.82.
- CoreAudio: Update
core-audio-rsdependency to 0.14.
- ALSA: Enumerating input and output devices no longer interferes with each other.
- ALSA: Device handles are no longer exclusively held between operations.
- ALSA: Reduce Valgrind memory leak reports from ALSA global configuration cache.
- ALSA: Fix possible race condition on drop.
- ALSA: Fix audio callback stalling when start threshold is not met.
0.17.1 - 2026-01-04
- ALSA:
Defaultimplementation forDevice(returns the ALSA "default" device). - CI: Checks default/no-default/all feature sets with platform-dependent MSRV for JACK.
- ALSA: Devices now report direction from hint metadata and physical hardware probing.
- ALSA: Device enumeration now includes both hints and physical cards.
- JACK: No longer builds on iOS.
- WASM: WasmBindgen no longer crashes (regression from 0.17.0).
0.17.0 - 2025-12-20
DeviceTrait::idmethod that returns a stable audio device ID.HostTrait::device_by_idto select a device by its stable ID.DisplayandFromStrimplementations forHostId.- Support for custom
Hosts,Devices, andStreams. Sample::bits_per_samplemethod.Copyimplementation toInputCallbackInfoandOutputCallbackInfo.StreamError::StreamInvalidatedvariant for when stream must be rebuilt.StreamError::BufferUnderrunvariant for buffer underrun/overrun notifications.Hashimplementation toDevicefor all backends.- AAudio:
SendandSyncimplementations toStream. - AAudio: Support for 12 and 24 kHz sample rates.
- ALSA:
I24andU24sample format support (24-bit samples stored in 4 bytes). - ALSA: Support for 12, 24, 352.8, 384, 705.6, and 768 kHz sample rates.
- ALSA:
EqandPartialEqimplementations toDevice. - CI: Native ARM64 Linux support in GitHub Actions.
- CoreAudio:
i8,i32andI24sample format support (24-bit samples stored in 4 bytes). - CoreAudio: Support for loopback recording (recording system audio output) on macOS > 14.6.
- CoreAudio:
Sendimplementation toStream. - Emscripten:
BufferSize::Fixedvalidation against supported range. - iOS: Complete AVAudioSession integration for device enumeration and buffer size control.
- JACK: Support for macOS and Windows platforms.
- JACK:
BufferSize::Fixedvalidation to reject requests that don't match server buffer size. - WASAPI: Expose
IMMDevicefrom WASAPI host Device. - WASAPI:
I24andU24sample format support (24-bit samples stored in 4 bytes). - WASAPI:
SendandSyncimplementations toStream. - WebAudio:
SendandSyncimplementations toStream. - WebAudio:
BufferSize::Fixedvalidation against supported range.
- MSRV depends on the platform and at minimum 1.77.
- Set examples to Rust 2021.
SampleRatefrom struct tou32type alias.- Update
audio_thread_priorityto 0.34. - Migrate CHANGELOG to Keep a Changelog format.
- AAudio: Configure buffer to ensure consistent callback buffer sizes.
- AAudio: Buffer size range detection to query the AudioService property correctly.
- ALSA: Improve
BufferSize::Fixedprecision and audio callback performance. - ALSA:
BufferSize::Defaultto use the device defaults. - ALSA: Card enumeration to work like
aplay -Ldoes. - ALSA: Update
alsato 0.10. - ALSA: Pass
silent=truetoPCM.try_recover, so it doesn't write to stderr. - ALSA: Report buffer underruns/overruns via
StreamError::BufferUnderrun. - ASIO: Share
sys::Asioinstance across allHostinstances. - CI: Fix cargo publish to trigger on GitHub releases instead of every master commit.
- CI: Replace cargo install commands with cached tool installation for faster builds.
- CI: Update actions to latest versions (checkout@v5, rust-cache@v2).
- CI: Verify compatibility with windows crates since v0.59.
- CI: Test platforms on appropriate MSRV per backend.
- CI: Fix
cargo updatesyntax for compatibility with Cargo 1.70 (use-pflag instead of positional argument). - CoreAudio:
Device::supported_configsto return a single element containing the available sample rate range when all elements have the samemMinimumandmMaximumvalues. - CoreAudio: Default audio device detection to be lazy when building a stream, instead of during device enumeration.
- CoreAudio: Configure device buffer to ensure predictable callback buffer sizes.
- CoreAudio: Remove
Cloneimplementation fromStream. - JACK: Use
StreamError::StreamInvalidatedfor JACK server sample rate changes. - JACK: Report buffer underruns/overruns via
StreamError::BufferUnderrun. - WASAPI: Update
windowsto >= 0.59, <= 0.62.
- ALSA: Format selection to probe hardware endianness instead of assuming native byte order.
- ALSA: Data race in stream shutdown.
- ASIO: Handling for
kAsioResetRequestmessage to prevent driver UI becoming unresponsive. - ASIO: Buffer silencing logic to work with non-conformant drivers (e.g., FL Studio ASIO).
- CoreAudio: Timestamp accuracy.
- CoreAudio: Segfaults when enumerating devices.
- CoreAudio: Undefined behavior related to null pointers and aligned reads.
- CoreAudio: Unnecessary microphone permission requests when using output devices only.
- iOS: Example by properly activating audio session.
- WebAudio: Optional
wee-allocfeature for security reasons.
0.16.0 - 2025-06-07
- Optional
supports_input/outputmethods toDeviceTrait. - 384000Hz to
COMMON_SAMPLE_RATES. - Constructors for
InputCallbackInfo,OutputCallbackInfoandStreamInstant. Defaultimpl forHost.PartialOrd,OrdandHashimplementations forSampleFormat.Clone,PartialEq,EqandHashimplementations for all error enums.- ASIO: Support for int24.
- AAudio: Migrate from
oboetondk::audio. NOTE: This raises the minimum Android API version to 26 (Android 8/Oreo). - AAudio: Improve device names.
- ALSA: Set realtime priority for stream threads.
- ALSA: Improved card enumeration.
- CoreAudio: Update
coreaudio-rsdependency to 0.13. - JACK: Update
jackdependency to 0.13. - WASAPI: Set realtime priority for stream threads.
- ALSA: Don't panic when handling invalid stream timestamps.
- ALSA: Fix infinite loop on broken pipes.
- ASIO: Fix build failure on Windows.
- CoreAudio: Fix callback being called after dropping the stream.
- CoreAudio: Fix non-default audio output.
- CoreAudio: Fix handling of integer input formats.
- WASAPI: Fixed memory leak.
- WASAPI: Remove usage of
eval.
0.15.3 - 2024-03-04
try_with_sample_rate, a non-panicking variant ofwith_sample_rate.#[must_use]attribute to structplatform::Stream.Copyimplementation to enumSupportedBufferSizeand structSupportedStreamConfigRange.Cloneimplementation toplatform::Device.
- AAudio: Update
jnidependency to 0.21. - AAudio: Update
oboedependency to 0.6. - AAudio: Update
ndkdependency to 0.8 and disabledefault-features. - ALSA: Update
alsadependency to 0.9. - CI: Update actions, use Android 30 API level in CI, remove
asmjs-unknown-emscriptentarget. - Examples: Migrate wasm example to
trunk, improve syth-thones example. - WASAPI: Update
windowsdependency to v0.54. - WebAudio: Update
wasm-bindgento 0.2.89.
- WebAudio: Crash on web/wasm when
atomicsflag is enabled.
parking_lotdependency in favor of the std library.
0.15.2 - 2023-03-30
- WebAudio: Support for multichannel output streams.
- WASAPI: Update
windowsdependency.
- WASAPI: Fix some thread panics.
0.15.1 - 2023-03-14
- AAudio: Feature
oboe-shared-stdcxxto enableshared-stdcxxonoboefor Android support.
- CoreAudio: Switch
machdependency tomach2.
thiserrordependency.
0.15.0 - 2023-01-29
- CoreAudio: Disconnection detection on Mac OS.
- Switch to the
dasp_samplecrate for the sample trait. - Adopt edition 2021.
- AAudio: Update
oboedependency. - AAudio: Update
alsadependency. - CoreAudio: Update
coreaudio-sysdependency. - Emscripten: Switch to
web-syson the emscripten target. - JACK: Update
jackdependency. - WASAPI: Update
windows-rsdependency.
0.14.2 - 2022-12-02
nixdependency.
0.14.1 - 2022-10-23
- ALSA: Support for the 0.6.1 release of
alsa-rs. - NetBSD: Platform support.
- CI: Various improvements.
- ASIO: Feature broken in 0.14.0.
0.14.0 - 2022-08-22
- Update
parking_lotandonce_celldependencies. - AAudio: Turn
ndk-glueinto a dev-dependency and usendk-contextinstead. - AAudio: Update
ndkandndk-gluedependencies. - JACK: Update
jackdependency. - WASAPI: Switch to
windows-rscrate.
0.13.5 - 2022-01-28
- Faster sample format conversion.
- AAudio: Update
ndk,oboe, andndk-gluedependencies. - ALSA: Update
alsaandnixdependencies. - JACK: Update
jackdependency.
0.13.4 - 2021-08-08
- AAudio: Update
jnidependency. - ALSA: Improve stream setup parameters.
- CoreAudio: Update
core-foundation-sysdependency. - JACK: Update
rust-jackdependency. - WASAPI: Allow both threading models and switch the default to STA.
0.13.3 - 2021-03-29
- Give each thread a unique name.
- ALSA: Fix distortion regression on some configs.
0.13.2 - 2021-03-16
- AAudio: Update
ndk,nix,oboe, andjnidependencies.
0.13.1 - 2020-11-08
- Update
parking_lotdependency.
- WASAPI: Don't panic when device is plugged out on Windows.
0.13.0 - 2020-10-28
- AAudio: Android support via
oboe-rs. - CI: Android APK build and CI job.
0.12.1 - 2020-07-23
- ASIO: Bugfix release to get the asio feature working again.
0.12.0 - 2020-07-09
build_input/output_stream_rawmethods allowing for dynamically handling sample format type.InputCallbackInfoandOutputCallbackInfotypes and update expected user data callback function signature to provide these.- DragonFly BSD: Platform support.
- Large refactor removing the blocking EventLoop API.
- Rename many
Formattypes toStreamConfig:Formattype'sdata_typefield renamed tosample_format.Shape->StreamConfig- The configuration input required to build a stream.Format->SupportedStreamConfig- Describes a single supported stream configuration.SupportedFormat->SupportedStreamConfigRange- Describes a range of supported configurations.Device::default_input/output_format->Device::default_input/output_config.Device::supported_input/output_formats->Device::supported_input/output_configs.Device::SupportedInput/OutputFormats->Device::SupportedInput/OutputConfigs.SupportedFormatsError->SupportedStreamConfigsError.DefaultFormatError->DefaultStreamConfigError.BuildStreamError::FormatNotSupported->BuildStreamError::StreamConfigNotSupported.
- WASAPI: Address deprecated use of
mem::uninitialized.
UnknownTypeBufferin favour of specifying sample type.
0.11.0 - 2019-12-11
- Name to
HostId. - WASAPI:
winbasewinapi feature to solve windows compile error issues.
- Remove many uses of
std::mem::uninitialized. - Panic on stream ID overflow rather than returning an error.
- Move errors into a separate module.
- Switch from
failuretothiserrorfor error handling. - ALSA: Use
snd_pcm_hw_params_set_buffer_time_nearrather thanset_buffer_time_max. - CI: Lots of improvements.
- Examples: Use
ringbuffercrate in feedback example.
- ALSA: Fix some underruns that could occur.
- WASAPI: Fix capture logic.
0.10.0 - 2019-07-05
- New Host API, adding support for alternative audio APIs.
StreamEventtype to allow users to handle stream callback errors.- ASIO: ASIO host, available under Windows.
- Remove sleep loop on macOS in favour of using a
Condvar. - Overhaul error handling throughout the crate.
- Remove
panic!from OutputBuffer Deref impl as it is no longer necessary. - ALSA: Remove unnecessary Mutex in favour of channels.
- CoreAudio: Update
core-foundation-sysandcoreaudio-rsdependencies. - WASAPI: Remove unnecessary Mutex in favour of channels.
0.9.0 - 2019-06-06
- ALSA: Error handling for unknown device errors.
- Emscripten:
default_output_formatimplementation.
- Better buffer handling.
- Logic error in frame/sample size.
- WASAPI: Fix resuming a paused stream.
0.8.2 - 2018-07-03
DisplayandErrorimplementations forDefaultFormatError.
- Upgrade
lazy_staticdependency.
0.8.1 - 2018-04-01
- CoreAudio: Handling of non-default sample rates for input streams.
0.8.0 - 2018-02-15
Device::supported_{input/output}_formatsmethods.Device::default_{input/output}_formatmethods.default_{input/output}_devicefunctions.StreamDatatype for handling either input or output streams inEventLoop::runcallback.- ALSA: Input stream support.
- CoreAudio: Input stream support.
- Examples:
record_wav.rsexample that records 3 seconds to$CARGO_MANIFEST_DIR/recorded.wavusing default input device. - WASAPI: Input stream support.
- Replace usage of
VoicewithStreamthroughout the crate. - Examples: Update
enumerate.rsexample to display default input/output devices and formats.
Endpointin favour ofDevicefor supporting both input and output streams.
0.7.0 - 2018-02-04
- CoreAudio:
EndpointandFormatenumeration for macOS. - CoreAudio: Format handling for
build_voicemethod.
- Rename
ChannelsCounttoChannelCount. - Rename
SamplesRatetoSampleRate. - Rename the
min_samples_ratefield ofSupportedFormattomin_sample_rate. - Rename the
with_max_samples_rate()method ofSupportedFormattowith_max_sample_rate(). - Rename the
samples_ratefield ofFormattosample_rate. - Changed the type of the
channelsfield of theSupportedFormatstruct fromVec<ChannelPosition>toChannelCount(an alias tou16).
- Unused ChannelPosition API.
0.6.0 - 2017-12-11
- Improvements to the crate documentation.
- ALSA:
pauseandplaysupport.
- CoreAudio: Reduced the number of allocations.
- Emscripten: Backend to consume less CPU.
- CoreAudio: Fixes for macOS build (#186, #189).
0.5.1 - 2017-10-21
Sample::to_i16(),Sample::to_u16()andSample::frommethods.
0.5.0 - 2017-10-21
EventLoop::build_voice,EventLoop::destroy_voice,EventLoop::play, andEventLoop::pausemethods.VoiceIdstruct that is now used to identify a voice owned by anEventLoop.
EventLoop::run()to take a callback that is called whenever a voice requires sound data.supported_formats()to produce a list ofSupportedFormatinstead ofFormat. ASupportedFormatmust then be turned into aFormatin order to build a voice.
- Dependency on the
futureslibrary. VoiceandSamplesStreamtypes.
0.4.6 - 2017-10-11
- iOS: Minimal support.
- Run rustfmt on the code.
- BSD: Fixes for *BSDs.
get_prefix of methods.
0.4.5 - 2017-04-29
- Simplify the Cargo.toml.
- ALSA: Bump alsa-sys version number.
- ALSA: Mark alsa-sys as linking to alsa.
- CoreAudio: SampleStream also holds on to the AudioUnit so it is not dropped.
- CoreAudio: Fix for loop in EventLoop::run being optimised out in a release build on macOS.
- Stop publishing on gh-pages.
0.4.4 - 2017-02-04
- ALSA: Pass period instead of buffer to snd_pcm_sw_params_set_avail_min.
0.4.3 - 2017-02-01
- ALSA: Set sw_params_set_avail_min based on get_params buffer size.
0.4.2 - 2017-01-19
- CoreAudio: coreaudio-rs dependency for i686-apple-darwin.
- Mark deprecated functions as deprecated.
0.4.1 - 2016-11-16
- ALSA: Implement play and pause.
- CoreAudio: Implement play/pause.
- WASAPI: Fix compilation on windows.
0.4.0 - 2016-10-01
- ALSA: Update to futures 0.1.1.
- WASAPI: Update to futures 0.1.1.
- CoreAudio: Do not lock inner twice. Fixes bug in osx futures 0.1.1 update.
- CoreAudio: Try fix the OSX code with futures.
0.3.1 - 2016-08-20
- WASAPI: Some documentation to the winapi implementation.
- ALSA: Bump alsa-sys to 0.1.
- Fix #126.
- Fix most warnings.
0.3.0 - 2016-08-12
- CoreAudio: Update backend to new futures-rs oriented design.
- Update documentation.
- Use a max buffer size in order to avoid problems.
- Update deps.
- ALSA: Make it work on Linux.
- Null: Update the null implementation.
0.2.12 - 2016-07-10
- CoreAudio: Add get_period to Voice.
- CoreAudio: Update to coreaudio-rs 0.5.0.
- CoreAudio: Correct implementation of get_pending_samples.
- CoreAudio: Return correct Voice period.
0.2.11 - 2016-04-25
- Be more relaxed with c_void.
0.2.10 - 2016-04-22
- ALSA: Add pollfd.
- ALSA: Fix underflow detection.
- Android: Fix the android build.
- Android: Add ARM target.
0.2.9 - 2016-01-28
- CoreAudio: Add support for U16/I16 PCM formats.
- CoreAudio: Implement some missing functions.
- Handle channels positionning.
- Update Cargo.toml after the previous changes.
- Allow for building for mipsel targets.
- ALSA: Use correct ALSA channels.
- CoreAudio: Implementation cleanup.
- CoreAudio: Make Voice Send/Sync.
- CoreAudio: Set sample rate to 44100.
- Examples: Update the beep example.
- ALSA: Fix underflow bug on linux.
- CI: Fix for travis build.
- CoreAudio: Fix compilation on OSX with the new API for coreaudio-rs.
- CoreAudio: Return correct length of buffer, stub unimpl funcs.
- CoreAudio: Restore CoreAudio support after API overhaul.
- Examples: Add some sane error messages.
- Examples: Improve error reporting in beep example.
- Do not use a wildcard version number.
- CoreAudio: Revert "Add support for U16/I16 PCM formats" (was causing issues).
0.2.8 - 2015-11-10
- Libc 0.2.
- WASAPI: Update winapi.
- WASAPI: Catch another 'device not found' error code.
0.2.7 - 2015-09-27
Voice::get_period()method.
0.2.6 - 2015-09-22
- ALSA: Make sure that all writes succeed.
- ALSA: Make the implementation more robust by recovering from underruns.
0.2.5 - 2015-09-22
Voice::get_pending_samplesmethod.
0.2.4 - 2015-09-22
endpoint::get_name()method.- Examples: An enumerate example.
- WASAPI: Device name support.
- ALSA: Correctly enumerate supported formats.
- ALSA: Various fixes.
- ALSA: Use the correct format.
- ALSA: Use the correct device name when enumerating formats.
- WASAPI: Fix bug and filter out devices that are not "Output".
0.2.3 - 2015-09-22
#[inline]attributes.underflow()method to Voice.
- Store the format in the public
Voicestruct. - WASAPI: General cleanup.
- WASAPI: Update winapi dependency.
- WASAPI: Fix the hack in the implementation.
- Unused extern crate libc.
0.2.2 - 2015-09-11
UnknownBufferType::len()method.
- Null: Restore the null implementation and compile it every time.
0.2.1 - 2015-09-10
- Handle channels positionning.
- Update Cargo.toml after the previous changes.
- Examples: Update the beep example.
- ALSA: Fix compilation.
0.2.0 - 2015-09-01
- Proper error handling.
- Supported formats enumeration.
endpoint::get_name()method.
- ALSA: Make it compile again.
- WASAPI: Enable 32bits samples.
- WASAPI: Better error handling in format detection.
- WASAPI: Now decoding the format from the WAVEFORMAT returned by the winapi.
- WASAPI: Handle F32 formats in Voice::new.
- WASAPI: Use the format passed as parameter in Voice::new.
- WASAPI: Correctly enumerate audio devices (core + wasapi).
- Fix doctests.
- Add more detailed message to panic.
- Conversion system.
- Use of box syntax.
0.1.2 - 2015-07-22
- ALSA: Correct reported sample format.
- WASAPI: Fix samples signs on win32.
0.1.1 - 2015-07-20
- Fix the version in the README.
- WASAPI: Fix the win32 build.
0.1.0 - 2015-07-11
- Bump to 0.1.0.
0.0.23 - 2015-07-04
- WASAPI: Fix platform-specific dependencies with MSVC.
0.0.22 - 2015-06-24
- ALSA: Calls to a single ALSA channel are not thread safe.
0.0.21 - 2015-06-05
- Examples: Simplify beep example.
- WASAPI: Use shiny new COM.
0.0.20 - 2015-04-20
- Rustup and version bumps.
- ALSA: Remove integer suffixes in alsa-sys.
0.0.19 - 2015-04-04
- Update for Rustc 1.0.0 beta.
0.0.18 - 2015-03-30
- Update for change in rustc and winapi.
0.0.17 - 2015-03-26
- Rustup.
- ALSA: Publish alsa-sys before cpal.
0.0.16 - 2015-03-25
- CoreAudio: OSX support via the Apple Core Audio, Audio Unit C API. Only supports f32 so far.
- CoreAudio: Coreaudio bindings.
- Rustup.
- CI: Fix travis build.
- CoreAudio: Fixed callback to send proper buffersize, removed code in lib where sampleformat affected buffersize.
- CoreAudio: Properly shutdown the AudioUnit on drop.
- CoreAudio: Removed core_audio-sys local bindings in favour of new coreaudio-rs crate.
0.0.15 - 2015-02-22
- Bump version.
- Update for rustc.
0.0.14 - 2015-02-19
- Update for rustc.
- ALSA: Bump alsa-sys version.
- ALSA: Clean up alsa-sys.
- CI: Automatically publish on crates.io on successful builds.
- CI: Publish alsa-sys too.
0.0.13 - 2015-02-12
- Update with libc version.
0.0.12 - 2015-01-29
- Bump version number.
0.0.11 - 2015-01-29
- Update for rustc.
0.0.10 - 2015-01-20
- Null: "null" implementation for platforms that aren't supported.
- Changed integer suffix from 'u' to 'us'.
- Bump version number (multiple times).
- Update for rust-1.0 alpha.
- WASAPI: Update for winapi.
0.0.8 - 2015-01-08
- Bump version number.
- Update for Rustc.
0.0.7 - 2015-01-05
- Update for rustc.
0.0.6 - 2014-12-30
#[must_use]marker for Buffer.
- Bump version number.
- Update for changes in rustc.
0.0.5 - 2014-12-23
play()andpause()functions.- Implement f32 to i16 and f32 to u16 conversions.
- Tests for convert_samples_rate.
- Tests for convert_channels.
- Cleanup convert_samples_rate.
- Cleanup convert_channels.
- CI: Fix the appveyor build.
0.0.4 - 2014-12-20
- Update for rustc.
0.0.3 - 2014-12-17
- Link to documentation.
- Some documentation.
- Fixes and tests for samples conversions.
- All samples formats.
- Samples formats conversions.
- CI: Automatic gh-pages deployment in travis.
- Bump version number.
- Improve documentation.
- Use Cow for formats conversions to avoid an allocation and copy.
- Minor README update.
- CI: Remove old section from travis.yml.
- CI: Fix travis.yml.
- Rename
ChanneltoVoice.
0.0.2 - 2014-12-17
- Basic API.
- Some documentation.
- Keywords.
- Some formats-related functions.
- Some basic data conversion.
- Some samples rate conversions.
- Variable input format system.
- Samples iterator.
- ALSA: Basic implementation.
- ALSA: alsa-sys library.
- CI: Appveyor file.
- CI: Config for rust-ci in travis.
- Examples: Draft for example music playing.
- Examples: Semi-working WASAPI example.
- WASAPI: Destructor for wasapi::Channel.
- Bump version number.
- Buffer now always has the u8 format.
- Modify API to use a "samples" iterator.
- Change player architecture to avoid data losses.
- Minor nitpicking.
- Update for rustc.
- ALSA: Use the official winapi crate.
- ALSA: More tweaks for alsa-sys.
- ALSA: Minor tweaks in Cargo.toml files.
- Examples: Replace example by a smaller one.
- Examples: Replace example by a sinusoid generator.
- Examples: Rename example to "beep".
- Fix warnings.
- Fix PCM formats conversions not working.
- Fix issue when calling
buffer.samples()multiple times with the same buffer. - Sound output now works correctly.
- Minor fixes.
- WASAPI: Revert "Switch to retep998/winapi".
- Switch back to using buffers.
- Remove old code.
0.0.1 - 2014-12-11
- Initial commit.