- ASIO: Fix linker flags for MinGW cross-compilation.
- ALSA(process_output): Pass
silent=truetoPCM.try_recover, so it doesn't write to stderr. - ALSA: Fix buffer and period size selection by rounding to supported values. Actual buffer size may be different from the requested size or may be a device-specified default size. Additionally sets ALSA "periods" to 2 (previously 4). (error 22)
- CoreAudio:
Device::supported_configsnow returns a single element containing the available sample rate range when all elements have the samemMinimumandmMaximumvalues (which is the most common case). - CoreAudio: Detect default audio device lazily when building a stream, instead of during device enumeration.
- iOS: Fix example by properly activating audio session.
- WASAPI: Expose IMMDevice from WASAPI host Device.
- Migrate from
oboetondk::audio. NOTE: This raises the minimum Android API version to 26 (Android 8/Oreo). SampleFormatnow implsPartialOrd,OrdandHash.- All error enums are now
Clone,PartialEq,EqandHash. - Added optional
supports_input/outputmethods toDeviceTrait. - Added 384000Hz to
COMMON_SAMPLE_RATES. - Added constructors for
InputCallbackInfo,OutputCallbackInfoandStreamInstant. - Added
Defaultimpl forHost. - Set realtime priority for stream threads in ALSA and WASAPI.
- AAudio: Improve device names.
- ALSA: Don't panic when handling invalid stream timestamps.
- ALSA: Improved card enumeration.
- ALSA: Fix infinite loop on broken pipes.
- ASIO: Fix build failure on Windows.
- ASIO: Add support for int24.
- 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. - Update
jackdependency to 0.13. - Update
coreaudio-rsdependency to 0.13.
- Add
try_with_sample_rate, a non-panicking variant ofwith_sample_rate. - struct
platform::Streamis now #[must_use]. - enum
SupportedBufferSizeand structSupportedStreamConfigRangeare nowCopy. platform::Deviceis nowClone.- Remove
parking_lotdependency in favor of the std library. - Fix crash on web/wasm when
atomicsflag is enabled. - Improve Examples: Migrate wasm example to
trunk, Improve syth-thones example. - Improve CI: Update actions, Use Android 30 API level in CI, Remove
asmjs-unknown-emscriptentarget. - Update
windowsdependency to v0.54 - Update
jnidependency to 0.21 - Update
alsadependency to 0.9 - Update
oboedependency to 0.6 - Update
ndkdependency to 0.8 and disabledefault-features. - Update
wasm-bindgento 0.2.89
- webaudio: support multichannel output streams
- Update
windowsdependency - wasapi: fix some thread panics
- Add feature
oboe-shared-stdcxxto enableshared-stdcxxonoboefor Android support - Remove
thiserrordependency - Swith
machdependency tomach2
- Update
windows-rs,jack,coreaudio-sys,oboe,alsadependencies - Switch to the
dasp_samplecrate for the sample trait - Switch to
web-syson the emscripten target - Adopt edition 2021
- Add disconnection detection on Mac OS
- Support the 0.6.1 release of
alsa-rs - Fix
asiofeature broken in 0.14.0 NetBSDsupport- CI improvements
- Switch to
windows-rscrate - Turn
ndk-glueinto a dev-dependency and usendk-contextinstead - Update dependencies (ndk, ndk-glue, parking_lot, once_cell, jack)
- Faster sample format conversion
- Update dependencies (ndk, oboe, ndk-glue, jack, alsa, nix)
- wasapi: Allow both threading models and switch the default to STA
- Update dependencies (core-foundation-sys, jni, rust-jack)
- Alsa: improve stream setup parameters
- Give each thread a unique name
- Fix distortion regression on some alsa configs
- Update dependencies (ndk, nix, oboe, jni, etc)
- Don't panic when device is plugged out on Windows
- Update
parking_lotdependency
- Add Android support via
oboe-rs. - Add Android APK build an CI job.
- Bugfix release to get the asio feature working again.
- 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->SupportedStreamConfigsErrorDefaultFormatError->DefaultStreamConfigErrorBuildStreamError::FormatNotSupported->BuildStreamError::StreamConfigNotSupported
- Address deprecated use of
mem::uninitializedin WASAPI. - Removed
UnknownTypeBufferin favour of specifying sample type. - Added
build_input/output_stream_rawmethods allowing for dynamically handling sample format type. - Added support for DragonFly platform.
- Add
InputCallbackInfoandOutputCallbackInfotypes and update expected user data callback function signature to provide these.
- Fix some underruns that could occur in ALSA.
- Add name to
HostId. - Use
snd_pcm_hw_params_set_buffer_time_nearrather thanset_buffer_time_maxin ALSA backend. - Remove many uses of
std::mem::uninitialized. - Fix WASAPI capture logic.
- Panic on stream ID overflow rather than returning an error.
- Use
ringbuffercrate in feedback example. - Move errors into a separate module.
- Switch from
failuretothiserrorfor error handling. - Add
winbasewinapi feature to solve windows compile error issues. - Lots of CI improvements.
- core-foundation-sys and coreaudio-rs version bumps.
- Add an ASIO host, available under Windows.
- Introduce a new Host API, adding support for alternative audio APIs.
- Remove sleep loop on macOS in favour of using a
Condvar. - Allow users to handle stream callback errors with a new
StreamEventtype. - Overhaul error handling throughout the crate.
- Remove unnecessary Mutex from ALSA and WASAPI backends in favour of channels.
- Remove
panic!from OutputBuffer Deref impl as it is no longer necessary.
- Better buffer handling
- Fix logic error in frame/sample size
- Added error handling for unknown ALSA device errors
- Fix resuming a paused stream on Windows (wasapi).
- Implement
default_output_formatfor emscripten backend.
- Fix the handling of non-default sample rates for coreaudio input streams.
- Add
record_wav.rsexample. Records 3 seconds to$CARGO_MANIFEST_DIR/recorded.wavusing default input device. - Update
enumerate.rsexample to display default input/output devices and formats. - Add input stream support to coreaudio, alsa and windows backends.
- Introduce
StreamDatatype for handling either input or output streams inEventLoop::runcallback. - Add
Device::supported_{input/output}_formatsmethods. - Add
Device::default_{input/output}_formatmethods. - Add
default_{input/output}_devicefunctions. - Replace usage of
VoicewithStreamthroughout the crate. - Remove
Endpointin favour ofDevicefor supporting both input and output streams.
- 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) - Remove unused ChannelPosition API.
- Implement
EndpointandFormatEnumeration for macOS. - Implement format handling for macos
build_voicemethod.
- Changed the emscripten backend to consume less CPU.
- Added improvements to the crate documentation.
- Implement
pauseandplayfor ALSA backend. - Reduced the number of allocations in the CoreAudio backend.
- Fixes for macOS build (#186, #189).
- Added
Sample::to_i16(),Sample::to_u16()andSample::from.
- Removed the dependency on the
futureslibrary. - Removed the
VoiceandSamplesStreamtypes. - Added
EventLoop::build_voice,EventLoop::destroy_voice,EventLoop::play, andEventLoop::pausethat can be used to create, destroy, play and pause voices. - Added a
VoiceIdstruct that is now used to identify a voice owned by anEventLoop. - Changed
EventLoop::run()to take a callback that is called whenever a voice requires sound data. - Changed
supported_formats()to produce a list ofSupportedFormatinstead ofFormat. ASupportedFormatmust then be turned into aFormatin order to build a voice.