NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3031 most downloaded on crates.io
Audio playback and recording library
Last release 7 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
Release version v0.22.2
Release version v0.22.2
symphonia-adapter-libopus.DecoderBuilder::with_symphonia_decoder.Release version v0.22.1
Release version v0.22.1
One column per quarter.
Release version v0.22.0
Release version v0.22.0
Release version v0.21.1
Release version v0.21.1
cpal to v0.16.Source::white and Source::pink functions.Release version v0.21.0
Release version v0.21.0
Source::amplify_decibel() method to control volume by decibels.Source::amplify_normalized() method to perceptually modify volume.Source to a wav file, enable the wav_output feature and see
output_to_wav.SignalGenerator patterns with an fn, see
GeneratorFunction.cpal audio output are now supported.
See README.md for instructions. (#349)Sample::is_zero() method for checking zero samples.DecoderBuilder for improved configuration.Pausable::is_paused() method for checking if source is paused.Decoder::TryFrom for File now automatically wraps in BufReader and sets byte_len.
TryFrom<Cursor<T>> and TryFrom<BufReader> are also supported.Source::distortion() method to control distortion effect by gain and threshold.OutputStream::config() method to access an OutputStream's OutputStreamConfig once
an OutputStream has been built.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.Source::limit() method for limiting the maximum amplitude of a source.WhiteGaussian, WhiteTriangular, Blue, Brownian, Violet,
and Velvet.OutputStreamBuilder should now be used to initialize an audio output stream.OutputStreamHandle removed, use OutputStream and OutputStream::mixer() instead.DynamicMixerController renamed to Mixer, DynamicMixer renamed to MixerSource.Sink::try_new renamed to connect_new and does not return error anymore.
Sink::new_idle was renamed to new.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.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.Source trait, the method current_frame_len() was renamed to current_span_len().Decoder now outputs f32 samples.LoopedDecoder now returns None if seeking fails during loop reset.ReadSeekSource::new() now takes Settings.f32 samples. To convert to and from other types of samples use functions from dasp_sample crate. For example DaspSample::from_sample(sample).WhiteNoise and PinkNoise have been renamed to noise::WhiteUniform and
noise::Pink.symphonia-wav was.OutputStreamConfig is now public.OutputStream now prints when it is dropped, can be disabled with OutputStream::log_on_drop(false).cpal to 0.16.claxon for FLAC, lewton for Vorbis, and hound for WAV.ChannelVolume no longer clips/overflows when converting from many channels to
fewer.total_duration incorrect value caused by conversion from Time to Duration.SignalGenerator that caused it to create increasingly distorted waveforms
over long run times has been corrected. (#201)LoopedDecoder::size_hint now correctly indicates an infinite stream.total_duration no longer returns None when it could
return SomeSample::zero_value() function in favor of Sample::ZERO_VALUE constant.white() and pink() methods in favor of noise::WhiteUniform::new() and noise::Pink::new().Mp4Type enum in favor of using MIME type string "audio/mp4" for MP4 format detection with Decoder::new_mp4 (#612).Builds without the symphonia feature did not compile
symphonia feature did not compileAdd automatic_gain_control source for dynamic audio level adjustment.
automatic_gain_control source for dynamic audio level adjustment.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.lib.rs.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.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.SamplesBuffer is now CloneAdds a new source track_position. It keeps track of duration since the beginning of the underlying source.
track_position. It keeps track of duration since the
beginning of the underlying source.Seek no longer hangs if the sink is empty.
Source trait is now also implemented for Box and &mut Source
Source trait is now also implemented for Box<dyn Source> and &mut Sourcefn new_vorbis is now also available when the symphonia-vorbis feature is enabledtry_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.SpatialSink::clear() bringing it in line with Sinkmp3::is_mp3() no longer changes the position in the stream when the stream
is mp3- Build fix for minimp3 backend.
minimp3 backend.Use non-vulnerable minimp3 fork.
EmptyCallback source.minimp3 fork.Disable symphonia's default features.
symphonia's default features.Default to symphonia for mp3 decoding.
cpal to 0.15.symphonia for mp3 decoding.- Update cpal to 0.14. - Update symphonia to 0.5.
Remove requirement that the argument Decoder::new and LoopedDecoder::new implement Send.
Decoder::new and LoopedDecoder::new implement Send.WavDecoder's total_duration now returns the total duration of the sound rather than the remaining duration.SineWave::new() now takes a f32 instead of a u32.len() method to SpatialSink.Replace panics when calling OutputStream::try_default, OutputStream::try_from_device with new StreamError variants.
cpal in full.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.Fix panic when no pulseaudio-alsa was installed.
pulseaudio-alsa was installed.- Update cpal to 0.13. - Add Android support.
cpal to 0.13.Breaking: Rework API removing global "rodio audio processing" thread & adapting to the upstream cpal API changes.
cpal to 0.12.Vec::capacity behaviour.- Update lewton to 0.10. - Breaking: Update cpal to 0.11
Removal of nalgebra in favour of own code.
Sink::new.cpal to 0.10.Remove exclusive &mut borrow requirements in Sink & SpatialSink setters.
&mut borrow requirements in Sink & SpatialSink setters.nalgebra instead of cgmath for Spatial source.Update lewton dependency to 0.9
lewton dependency to 0.9Apache-2.0 only to Apache-2.0 OR MITAdd mp3 decoding capabilities via minimp3
minimp3Update cpal dependency to 0.8, and adopt the new naming convention
cpal dependency to 0.8, and adopt the new naming conventionEndpoint to Devicedefault_endpoint() into default_output_device() and default_input_device()endpoints() to devices()output_devices() and input_devices()Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →