Open Source Spotify client library
Besides a couple of small fixes, this point release is mainly to blacklist the ap-gew4
and ap-gue1
access points that caused librespot
to fail to playback anything.
Development will now shift to the new HTTP-based API, targeted for a future v0.5.0 release. The new-api
branch will therefore be promoted to dev
. This is a major departure from the old API and although it brings many exciting new things, it is also likely to introduce new bugs and some regressions.
Long story short, this v0.4.2 release is the most stable that librespot
has yet to offer. But, unless anything big comes up, it is also intended as the last release to be based on the old API. Happy listening.
pipe
: Better error handlingsubprocess
: Better error handlingapresolve
: Blacklist ap-gew4 and ap-gue1 access points that cause channel errorspipe
: Implement stop--opt=value
line argument loggingalsamixer
: make --volume-ctrl fixed
work as expected when combined with --mixer alsa
This release fixes dependency issues when installing from crates. v0.4.0 has been yanked.
Note: This version was yanked, because a corrupt package was uploaded and failed to install.
This is a polishing release, adding a few little extras and improving on many others. We had to break a couple of API's to do so, and therefore bumped the minor version number. v0.4.x may be the last in series before we migrate from the current channel-based Spotify backend to a more HTTP-based backend. Targeting that major effort for a v0.5 release sometime, we intend to maintain v0.4.x as a stable branch until then.
systemd
service unitsSession
: connect()
now returns the long-term credentialsSession
: connect()
now accepts a flag if the credentails should be stored via the cachealsa
: improve --device ?
output for the Alsa backendgstreamer
: create own context, set correct states and use sync handlerpipe
: create file if it doesn't already existSink
: write()
now receives ownership of the packet (breaking)-q
, --quiet
option that changes the logging level to WARNdisable-credential-cache
flag (breaking)pulseaudio
: set the PulseAudio name to match librespot's device name via PULSE_PROP_application.name
environment variable (user set env var value takes precedence) (breaking)pulseaudio
: set icon to audio-x-generic
so we get an icon instead of a placeholder via PULSE_PROP_application.icon_name
environment variable (user set env var value takes precedence) (breaking)pulseaudio
: set values to: PULSE_PROP_application.version
, PULSE_PROP_application.process.binary
, PULSE_PROP_stream.description
, PULSE_PROP_media.software
and PULSE_PROP_media.role
environment variables (user set env var values take precedence) (breaking)--alsa-mixer-device
and --alsa-mixer-index
now fallback to the card and index specified in --device
.alsa
: make --volume-range
overrides apply to Alsa softvol controlsalsamixer
: previously deprecated options mixer-card
, mixer-name
and mixer-index
have been removedlibrespot-discovery
for discovery in LAN was created. Its functionality was previously part of librespot-connect
.--dither
for lower requantization error (breaking)--volume-range
option to set dB range and control log
and cubic
volume control curvesalsamixer
: support for querying dB range from Alsa softvol--format F64
(supported by Alsa and GStreamer only)--normalisation-gain-type auto
that switches between album and track automaticallyVorbisDecoder
, VorbisError
, AudioPacket
, PassthroughDecoder
, PassthroughError
, DecoderError
, AudioDecoder
and the convert
module from librespot-audio
to librespot-playback
. The underlying crates vorbis
, librespot-tremor
, lewton
and ogg
should be used directly. (breaking)Duration
for time constants and functions (breaking)librespot-connect
to librespot-playback
crate--volume-ctrl cubic
[0.0..1.0]
instead of [0..65535]
for greater precision and performance (breaking)alsamixer
: complete rewrite (breaking)alsamixer
: query card dB range for the volume control unless specified otherwisealsamixer
: use --device
name for --mixer-card
unless specified otherwiseplayer
: consider errors in sink.start
, sink.stop
and sink.write
fatal and exit(1)
(breaking)player
: make convert
and decoder
public so you can implement your own Sink
player
: update default normalisation threshold to -2 dBFSplayer
: default normalisation type is now auto
discovery
module was deprecated in favor of the librespot-discovery
cratealsamixer
: renamed mixer-card
to alsa-mixer-device
alsamixer
: renamed mixer-name
to alsa-mixer-control
alsamixer
: renamed mixer-index
to alsa-mixer-index
with-vorbis
and with-tremor
featuresalsamixer
: removed --mixer-linear-volume
option, now that --volume-ctrl {linear|log}
work as expected on AlsaPlayerConfig::default().normalisation_threshold
caused distortion when using dynamic volume normalisation downstreamlog
and cubic
volume controls to be mute at zero volumeS24_3
format on big-endian systemsalsamixer
: make cubic
consistent between cards that report minimum volume as mute, and cards that report some dB valuealsamixer
: make --volume-ctrl {linear|log}
work as expectedalsa
, gstreamer
, pulseaudio
: always output in native endiannessalsa
: revert buffer size to ~500 msalsa
, pipe
, pulseaudio
: better error handlingtokio 1.0
. This required a wholesale refactor of the librespot codebase (#606 #649 #658 #665 #674 #687 #691)fn
instances with const
in version.rs
(#595)track
and album
normalisation added. Defaults to album
, was previously disabled by default (#573)