PackageTrack
Sign in Get early access

rodio

Audio playback and recording library

0.22.2 10M downloads/mo #3064 most downloaded on crates.io RustAudio/rodio

What this package is like to depend on

Last release 5 months ago

05 Mar 2026

Ships fairly regularly

a new release about every 7 months

Some releases are documented

notes for 25 of 49 stable releases

2 versions withdrawn

withdrawn after publishing

11 years old

51 releases · first in 2015

3 releases in the last 12 months

see the full history below

Release timeline

51 releases · Sep 2015 to Mar 2026
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 51
  1. 0.22.2 05 Mar 2026
    Release notes

    Release version v0.22.2

    Open source →
    Release notes

    Fixed

    • Incorrectly set system default audio buffer size breaks playback. We no longer use the system default (introduced in 0.22 through cpal upgrade) and instead set a safe buffer duration.
    • Audio output fallback picked null device leading to no output.
    • Mixer did not actually add sources sometimes.

    Added

    • Added Opus support via symphonia-adapter-libopus.
    • Third-party Symphonia codecs can be registered with DecoderBuilder::with_symphonia_decoder.
    Open source →
  2. 0.22.1 22 Feb 2026
    Release notes

    Release version v0.22.1

    Open source →
    Release notes

    Fixed

    • docs.rs could not build the documentation.
    Open source →
  3. 0.22.0 20 Feb 2026
    Release notes

    Release version v0.22.0

    Open source →
  4. 0.21.1 14 Jul 2025
    Release notes

    Release version v0.21.1

    Open source →
    Release notes

    Changed

    • Upgrade cpal to v0.16.
    • Update dependencies.

    Fixed

    • Fix clippy warnings with Source::white and Source::pink functions.
    Open source →
  5. 0.21.0 12 Jul 2025
    Release notes

    Release version v0.21.0

    Open source →
    Release notes

    Added

    • Added Source::amplify_decibel() method to control volume by decibels.
    • Added Source::amplify_normalized() method to perceptually modify volume.
    • Adds a function to write a Source to a wav file, enable the wav_output feature and see output_to_wav.
    • Output audio stream buffer size can now be adjusted.
    • Sources for directly generating square waves, triangle waves, square waves, and sawtooths have been added.
    • An interface for defining SignalGenerator patterns with an fn, see GeneratorFunction.
    • Minimal builds without cpal audio output are now supported. See README.md for instructions. (#349)
    • Added Sample::is_zero() method for checking zero samples.
    • Added DecoderBuilder for improved configuration.
    • Added Pausable::is_paused() method for checking if source is paused.
    • Using Decoder::TryFrom for File now automatically wraps in BufReader and sets byte_len. TryFrom<Cursor<T>> and TryFrom<BufReader> are also supported.
    • Added Source::distortion() method to control distortion effect by gain and threshold.
    • Added OutputStream::config() method to access an OutputStream's OutputStreamConfig once an OutputStream has been built.
    • Added OutputStreamConfig::channel_count(), OutputStreamConfig::sample_rate(), OutputStreamConfig::buffer_size() and OutputStreamConfig::sample_format() getters to access an OutputStreamConfig's channel count, sample rate, buffer size and sample format values.
    • Added Source::limit() method for limiting the maximum amplitude of a source.
    • Added more noise generators: WhiteGaussian, WhiteTriangular, Blue, Brownian, Violet, and Velvet.

    Changed

    • Breaking: OutputStreamBuilder should now be used to initialize an audio output stream.
    • Breaking: OutputStreamHandle removed, use OutputStream and OutputStream::mixer() instead.
    • Breaking: DynamicMixerController renamed to Mixer, DynamicMixer renamed to MixerSource.
    • Breaking: Sink::try_new renamed to connect_new and does not return error anymore. Sink::new_idle was renamed to new.
    • Breaking: symphonia::SeekError has a new variant AccurateSeekNotSupported and variants Retrying and Refining have been removed. Catching this error may allow a caller to retry in coarse seek mode.
    • Breaking: symphonia::SeekError has a new variant RandomAccessNotSupported. This error usually means that you are trying to seek backward without is_seekable or byte_len set: use Decoder::try_from or DecoderBuilder for that.
    • Breaking: In the Source trait, the method current_frame_len() was renamed to current_span_len().
    • Breaking: Decoder now outputs f32 samples.
    • Breaking: The term 'frame' was renamed to 'span' in the crate and documentation.
    • Breaking: LoopedDecoder now returns None if seeking fails during loop reset.
    • Breaking: ReadSeekSource::new() now takes Settings.
    • Breaking: Sources now use f32 samples. To convert to and from other types of samples use functions from dasp_sample crate. For example DaspSample::from_sample(sample).
    • Breaking: WhiteNoise and PinkNoise have been renamed to noise::WhiteUniform and noise::Pink.
    • Breaking: As optional features are now available: CAF and MKV containers, MP1/MP2 and ADPCM decoders. Previously, the ADPCM decoder was enabled when symphonia-wav was.
    • docs.rs will now document all features, including those that are not enabled by default.
    • OutputStreamConfig is now public.
    • OutputStream now prints when it is dropped, can be disabled with OutputStream::log_on_drop(false).
    • Update cpal to 0.16.
    • The default decoders have changed to Symphonia. The previous decoders are still available as optional features: use claxon for FLAC, lewton for Vorbis, and hound for WAV.
    • Support for decoding MP4 containers with AAC audio is now enabled by default.

    Fixed

    • ChannelVolume no longer clips/overflows when converting from many channels to fewer.
    • Symphonia decoder total_duration incorrect value caused by conversion from Time to Duration.
    • An issue with SignalGenerator that caused it to create increasingly distorted waveforms over long run times has been corrected. (#201)
    • WAV and FLAC decoder duration calculation now calculated once and handles very large files correctly.
    • Removed unwrap() calls in MP3, WAV, FLAC and Vorbis format detection for better error handling.
    • LoopedDecoder::size_hint now correctly indicates an infinite stream.
    • Symphonia decoder total_duration no longer returns None when it could return Some
    • Symphonia decoder for MP4 now seeks correctly (#577).
    • White noise was not correctly uniformly distributed.
    • Pink noise was not correctly distributed on sampling rates other than 44100 Hz.

    Deprecated

    • Deprecated Sample::zero_value() function in favor of Sample::ZERO_VALUE constant.
    • Deprecated white() and pink() methods in favor of noise::WhiteUniform::new() and noise::Pink::new().

    Removed

    • Breaking: Removed Mp4Type enum in favor of using MIME type string "audio/mp4" for MP4 format detection with Decoder::new_mp4 (#612).
    Open source →
  6. 0.20.1 08 Nov 2024
    Release notes

    Fixed

    • Builds without the symphonia feature did not compile
    Open source →
  7. 0.20.0 07 Nov 2024 withdrawn
    Release notes

    Added

    • Support for ALAC/AIFF
    • Add automatic_gain_control source for dynamic audio level adjustment.
    • New test signal generator sources:
      • SignalGenerator source generates a sine, triangle, square wave or sawtooth of a given frequency and sample rate.
      • Chirp source generates a sine wave with a linearly-increasing frequency over a given frequency range and duration.
      • white and pink generate white or pink noise, respectively. These sources depend on the rand crate and are guarded with the "noise" feature.
      • Documentation for the "noise" feature has been added to lib.rs.
    • New Fade and Crossfade sources:
      • fade_out fades an input out using a linear gain fade.
      • linear_gain_ramp applies a linear gain change to a sound over a given duration. fade_out is implemented as a linear_gain_ramp and fade_in has been refactored to use the linear_gain_ramp implementation.

    Fixed

    • player.try_seek now updates controls.position before returning. Calls to player.get_pos done immediately after a seek will now return the correct value.

    Changed

    • SamplesBuffer is now Clone
    Open source →
  8. 0.19.0 29 Jun 2024
    Release notes

    Added

    • Adds a new source track_position. It keeps track of duration since the beginning of the underlying source.

    Fixed

    • Mp4a with decodable tracks after undecodable tracks now play. This matches VLC's behaviour.
    Open source →
  9. 0.18.1 23 May 2024
    Release notes

    Fixed

    • Seek no longer hangs if the sink is empty.
    Open source →
  10. 0.18.0 05 May 2024
    Release notes

    Changed

    • Source trait is now also implemented for Box<dyn Source> and &mut Source
    • fn new_vorbis is now also available when the symphonia-vorbis feature is enabled

    Added

    • Adds a new method try_seek to all sources. It returns either an error or seeks to the given position. A few sources are "unsupported" they return the error Unsupported.
    • Adds SpatialSink::clear() bringing it in line with Sink

    Fixed

    • channel upscaling now follows the 'WAVEFORMATEXTENSIBLE' format and no longer repeats the last source channel on all extra output channels. Stereo content playing on a 5.1 speaker set will now only use the front left and front right speaker instead of repeating the right sample on all speakers except the front left one.
    • mp3::is_mp3() no longer changes the position in the stream when the stream is mp3
    Open source →
  11. 0.17.3 23 Oct 2023
    Release notes
    • Build fix for minimp3 backend.
    Open source →
  12. 0.17.2 17 Oct 2023
    Release notes
    • Add EmptyCallback source.
    • Fix index out of bounds bug.
    • Use non-vulnerable minimp3 fork.
    • Add filter functions with additional q parameter.
    Open source →
  13. 0.17.1 25 Feb 2023
    Release notes
    • Disable symphonia's default features.
    Open source →
  14. 0.17.0 17 Feb 2023
    Release notes
    • Update cpal to 0.15.
    • Default to symphonia for mp3 decoding.
    Open source →
  15. 0.16.0 14 Sep 2022
    Release notes
    • Update cpal to 0.14.
    • Update symphonia to 0.5.
    Open source →
  16. 0.15.0 25 Jan 2022
    Release notes
    • Remove requirement that the argument Decoder::new and LoopedDecoder::new implement Send.
    • Add optional symphonia backend.
    • WavDecoder's total_duration now returns the total duration of the sound rather than the remaining duration.
    • Add 32-bit signed in WAV decoding.
    • SineWave::new() now takes a f32 instead of a u32.
    • Add len() method to SpatialSink.
    Open source →
  17. 0.14.0 21 May 2021
    Release notes
    • Re-export cpal in full.
    • Replace panics when calling OutputStream::try_default, OutputStream::try_from_device with new StreamError variants.
    • OutputStream::try_default will now fallback to non-default output devices if an OutputStream cannot be created from the default device.
    Open source →
  18. 0.13.1 29 Mar 2021
    Release notes
    • Fix panic when no pulseaudio-alsa was installed.
    Open source →
  19. 0.13.0 03 Nov 2020
    Release notes
    • Update cpal to 0.13.
    • Add Android support.
    Open source →
  20. 0.12.0 05 Oct 2020
    Release notes
    • Breaking: Update cpal to 0.12.
    • Breaking: Rework API removing global "rodio audio processing" thread & adapting to the upstream cpal API changes.
    • Add new_X format specific methods to Decoder.
    • Fix resampler dependency on internal Vec::capacity behaviour.
    Open source →
  21. 0.11.0 16 Mar 2020
    Release notes
    • Update lewton to 0.10.
    • Breaking: Update cpal to 0.11
    Open source →
  22. 0.10.0 16 Nov 2019
    Release notes
    • Removal of nalgebra in favour of own code.
    • Fix a bug that switched channels when resuming after having paused.
    • Attempt all supported output formats if the default format fails in Sink::new.
    • Breaking: Update cpal to 0.10.
    Open source →
  23. 0.9.0 08 Jun 2019
    Release notes
    • Remove exclusive &mut borrow requirements in Sink & SpatialSink setters.
    • Use nalgebra instead of cgmath for Spatial source.
    Open source →
  24. 0.8.1 18 Sep 2018
    Release notes
    • Update lewton dependency to 0.9
    • Change license from Apache-2.0 only to Apache-2.0 OR MIT
    Open source →
  25. 0.8.0 22 Jun 2018
    Release notes
    • Add mp3 decoding capabilities via minimp3
    Open source →
  26. 0.7.0 21 Apr 2018
    Release notes
    • Update cpal dependency to 0.8, and adopt the new naming convention
    • BREAKING CHANGES:
      • renamed Endpoint to Device
      • split default_endpoint() into default_output_device() and default_input_device()
      • renamed endpoints() to devices()
      • introduced output_devices() and input_devices()
    Open source →
  27. 0.6.0 08 Feb 2018

    Nothing published for this version

  28. 0.5.3 08 Feb 2018 withdrawn

    Nothing published for this version

  29. 0.5.2 22 Aug 2017

    Nothing published for this version

  30. 0.5.1 11 Jul 2017

    Nothing published for this version

  31. 0.5.0 04 May 2017

    Nothing published for this version

  32. 0.4.3 15 Apr 2017

    Nothing published for this version

  33. 0.4.2 14 Nov 2016

    Nothing published for this version

  34. 0.4.1 01 Oct 2016

    Nothing published for this version

  35. 0.4.0 06 Sep 2016

    Nothing published for this version

  36. 0.3.3 04 Sep 2016

    Nothing published for this version

  37. 0.3.2 17 Jun 2016

    Nothing published for this version

  38. 0.3.1 23 Oct 2015

    Nothing published for this version

  39. 0.3.0 22 Oct 2015

    Nothing published for this version

  40. 0.2.2 22 Oct 2015

    Nothing published for this version

  41. 0.2.1 17 Oct 2015

    Nothing published for this version

  42. 0.2.0 16 Oct 2015

    Nothing published for this version

  43. 0.1.8 27 Sep 2015

    Nothing published for this version

  44. 0.1.7 27 Sep 2015

    Nothing published for this version

  45. 0.1.6 24 Sep 2015

    Nothing published for this version

  46. 0.1.5 24 Sep 2015

    Nothing published for this version

  47. 0.1.4 23 Sep 2015

    Nothing published for this version

  48. 0.1.3 23 Sep 2015

    Nothing published for this version

  49. 0.1.2 22 Sep 2015

    Nothing published for this version

  50. 0.1.1 22 Sep 2015

    Nothing published for this version

  51. 0.1.0 11 Sep 2015

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive