Version 3.2 introduces two big new features – MPRIS support and a "native" Shairport Sync D-Bus interface. MPRIS offers a standard set of facilities for implementing remote control and the native D-Bus interface allows local programs to interact directly with Shairport Sync. When used with either of these interfaces, Shairport Sync offers access to the remote control commands available to control the source, and also offers access to metadata, including titles and cover art. These new features are experimental, but are already useful.
This release of Shairport Sync contains important bug fixes and stability improvements and is recommended for all users. If offers better synchronisation, better compatibility with third-party AirPlay sources, greater stability when used with YouTube and macOS system sound, faster resynchronisation, better performance on noisy or congested networks and many other improvements.
Here are some of the details:
- Shairport Sync now offers an IPC interface via D-Bus. It provides an incomplete but functional MPRIS interface and also provides a "native" Shairport Sync interface, both of which rely on D-Bus. Both provide some metadata and some remote control. The native interface includes status information about whether the remote control connection is viable or not, i.e. whether it can still be used to control the client. A remote control connection to the audio client becomes valid when the client starts AirPlaying to Shairport Sync. The connections remains valid until the audio source deselects Shairport Sync for AirPlay, or until the client disappears, or until another client starts AirPlaying to Shairport Sync. After 15 minutes of inactivity, the remote contol connection will be dropped.
- OpenBSD compatibility. Shairport Sync now compiles on OpenBSD - please consult the OpenBSD note for details.
- A new
volume_control_profile, in the
generalsection and for advanced use only, with two options:
"standard"which uses the standard volume control profile – this has a higher transfer profile at low volumes and a lower transfer profile at high volumes – or
"flat"which uses a uniform transfer profile to linearly scale the output mixer's dB according to the AirPlay volume.
- Some DACs have a feature that the lowest permissible "attenuation" value that the built-in hardware mixer can be set to is not an attenuation value at all – in fact, it is a command to mute the output completely. Shairport Sync has always checked for this feature, basically in order to ignore it when getting the true range of attenuation values offered by the mixer.
However, with this enhancement, Shairport Sync can actually use this feature to mute the output where appropriate.
- Added or improved compatibility with AirFoil, TuneBlade, Swinsian, AirAudio, Synology AudioStation/5.2.
- Better AirPlay synchronisation. Older versions of Shairport Sync added an 11,025 frame (0.25 seconds) offset to all the latencies negotiated with the sender. This seems now incorrect for AirPlay sources. Accordingly, the logic Shairport Sync uses to determine the extra delay has been revised. The result is better sync with videos, e.g, YouTube, while iTunes and ForkedDaapd synchronisation is unaffected. Older versions of AirPlay are still handled correctly.
- Much faster termination of a play session, leading to increased stability playing YouTube audio, etc.
- Improved resynchronisation logic should improve performance on congested networks.
- Dithering is now off when
ignore_volume_controlis true. Thanks to yejun for working on this independently.
- Better volume level continuity. In recent versions of iOS (11.2) and mac OS (10.13.2), when play is resumed after a pause, the volume level is not always restored, and, if software volume control is being used, Shairport Sync plays at full volume. This issue has been addressed by storing the last airplay volume setting when a play session ends and using it as a default when a new play session begins.
- Better mixer compatibility. A bug in the hardware volume control affected output devices that have hardware mixers but that do not allow the volume to be set in dB. One example is the Softvol plugin in ALSA. Shairport Sync failed silently when presented with such a device when hardware volume control is enabled: the volume events have no effect. The bug has been fixed by adding two missing lines of code to the
audio_alsa.c. Thanks to Jakub Nabaglo for finding and fixing the bug.
- Thanks to belboj, funtax, Janusz Kowalczyk, Mmoi-Fr, mistipen, artenverho, Jörg Krause and David Krmpotić for help with bug detection, investigation and repair.
svipmetadata messages are now only generated for a play connection, not for all connections (e.g. connections that just enquire if the service is present).
prsmmetadata messages are less frequent, especially when a play session starts.
- Shairport Sync now uses about an extra half megabyte of RAM for compatibility with TuneBlade's option to have a very long latency -- up to five seconds.
- Improvements in missing-packet resend request logic, and if an error occurs making the request, back off for half a second.
- Include the
-pthreadflag -- including the pthread library with
-lpthreadisn't always enough.
- Add optional timing annotations to debug messages -- see the new settings in the diagnostic stanza of the configuration file.