summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Boot <bootc@bootc.net>2018-11-04 12:09:30 +0000
committerChris Boot <bootc@bootc.net>2018-11-04 12:09:30 +0000
commit570e019bf4eeb32bbf5fbd41ac2c73c573c6374c (patch)
tree0c47f2d3de407ae001489ba3b089bac2a7daa099
parent0200b20395c1d1bea5b0a98130cda808e378e9b0 (diff)
parent477466367548b6bb5d06b7288650c05b80127c77 (diff)
Merge tag 'debian/3.2.2-1' into stretch-backports
shairport-sync release 3.2.2-1 for unstable (sid) (maintainer view tag generated by dgit --quilt=gbp)
-rw-r--r--CAR INSTALL.md11
-rw-r--r--INSTALL.md20
-rw-r--r--LIBSOXR.md12
-rw-r--r--README.md53
-rw-r--r--RELEASENOTES.md15
-rw-r--r--TROUBLESHOOTING.md2
-rw-r--r--audio_pa.c3
-rw-r--r--common.c2
-rw-r--r--configure.ac2
-rw-r--r--debian/changelog6
-rw-r--r--rtp.c2
-rw-r--r--scripts/shairport-sync.conf88
-rw-r--r--shairport-sync.spec4
13 files changed, 135 insertions, 85 deletions
diff --git a/CAR INSTALL.md b/CAR INSTALL.md
index bdd4066..15f4ab4 100644
--- a/CAR INSTALL.md
+++ b/CAR INSTALL.md
@@ -40,15 +40,18 @@ Close the file and carefully dismount and eject the two drives. Remove the SD ca
### Boot, Configure, Update
The first thing to do on a Pi would be to use the `raspi-config` tool to expand the file system to use the entire card. It might be useful to change the `hostname` too. Next, do the usual update and upgrade:
```
-# apt-get update
-# apt-get upgrade
+# apt update
+# apt upgrade
# rpi-update
```
+**Note:** If you are following this guide but are using a full-size Rapsberry Pi with the built-in DAC, then, at this time of writing (September 2018) it is a good idea to update the Pi's firmware using `rpi-update` because a [significant improvement](https://github.com/raspberrypi/firmware/commit/200c2f4dd54b2048b5dcb8661ea3f232beb7d81e) has been made to the [timing software](https://github.com/raspberrypi/firmware/issues/1026) of the built-in audio DAC's drivers. It should be incorporated in firmware from Raspbian 4.14.66-v7 onwards.
+
+(Separately, if you haven't done so already, consider using the `raspi-config` tool to expand the file system to use the entire card.)
### Shairport Sync
First, install the packages needed by Shairport Sync:
```
-# apt-get install build-essential git xmltoman autoconf automake libtool libdaemon-dev libpopt-dev libconfig-dev libasound2-dev avahi-daemon libavahi-client-dev libssl-dev
+# apt install build-essential git xmltoman autoconf automake libtool libdaemon-dev libpopt-dev libconfig-dev libasound2-dev avahi-daemon libavahi-client-dev libssl-dev
```
Next, download Shairport Sync, configure it, compile and install it:
```
@@ -87,7 +90,7 @@ The `alsa` settings are specific to the Pimoroni PHAT -- it does not have a hard
### Extra Packages
A number of packages to enable the Pi to work as a WiFi base station are needed:
```
-# apt-get install hostapd isc-dhcp-server
+# apt install hostapd isc-dhcp-server
```
Disable both of these services from starting at boot time (this is because we will launch them sequentially later on):
```
diff --git a/INSTALL.md b/INSTALL.md
index 6cacd24..8f84cd8 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -7,16 +7,20 @@ In the commands below, note the convention that a `#` prompt means you are in su
### Configure and Update
Do the usual update and upgrade:
```
-# apt-get update
-# apt-get upgrade
+# apt update
+# apt upgrade
# rpi-update
```
+**Note:** At this time of writing (September 2018), it is a good idea to update the Pi's firmware using `rpi-update` because a [significant improvement](https://github.com/raspberrypi/firmware/commit/200c2f4dd54b2048b5dcb8661ea3f232beb7d81e) has been made to the [timing software](https://github.com/raspberrypi/firmware/issues/1026) of the built-in audio DAC's drivers. It should be incorporated in firmware from Raspbian 4.14.66-v7 onwards.
+
(Separately, if you haven't done so already, consider using the `raspi-config` tool to expand the file system to use the entire card.)
### Activate the Improved Audio Driver
-Check the file `/boot/config.txt` and, if it's not there already, add the following line:
+Check the file `/boot/config.txt` and, if it's not there already, add the following line and reboot afterwards:
```
audio_pwm_mode=2
+
+(Note that this isn't needed in the most recent versions of Raspbian as it will enable this driver mode by default)
```
### Turn Off WiFi Power Management
@@ -24,11 +28,11 @@ If you are using WiFi, you should turn off WiFi Power Management:
```
# iwconfig wlan0 power off
```
-WiFi Power Management will put the WiFi system in low-power mode when the WiFi system considered inactive, and in this mode it may not respond to events initiated from the network, such as AirPlay requests. Hence, WiFi Power Management should be turned off. (See [TROUBLESHOOTING.md](https://github.com/mikebrady/shairport-sync/blob/master/TROUBLESHOOTING.md#wifi-adapter-running-in-power-saving--low-power-mode) for more details.)
+WiFi Power Management will put the WiFi system in low-power mode when the WiFi system is considered inactive, and in this mode it may not respond to events initiated from the network, such as AirPlay requests. Hence, WiFi Power Management should be turned off. (See [TROUBLESHOOTING.md](https://github.com/mikebrady/shairport-sync/blob/master/TROUBLESHOOTING.md#wifi-adapter-running-in-power-saving--low-power-mode) for more details.)
Reboot the Pi.
-### Remove Old Copies
+### Remove Old Copies and Old Startup Scripts
Before you begin building Shairport Sync, it's best to search for and remove any existing copies of the application, called `shairport-sync`. Use the command `$ which shairport-sync` to find them. For example, if `shairport-sync` has been installed previously, this might happen:
```
$ which shairport-sync
@@ -40,12 +44,14 @@ Remove it as follows:
```
Do this until no more copies of `shairport-sync` are found.
+You should also remove the initialisation script files `/etc/systemd/system/shairport-sync.service` and `/etc/init.d/shairport-sync` if they exist – new ones will be installed in necessary.
+
### Build and Install
Okay, now let's get the tools and sources for building and installing Shairport Sync.
First, install the packages needed by Shairport Sync:
```
-# apt-get install build-essential git xmltoman autoconf automake libtool libdaemon-dev \
+# apt install build-essential git xmltoman autoconf automake libtool libdaemon-dev \
libpopt-dev libconfig-dev libasound2-dev avahi-daemon libavahi-client-dev libssl-dev
```
Next, download Shairport Sync, configure it, compile and install it:
@@ -64,7 +70,7 @@ Now to configure Shairport Sync. Here are the important options for the Shairpor
// Sample Configuration File for Shairport Sync on a Raspberry Pi using the built-in audio DAC
general =
{
- drift_tolerance_in_seconds = 0.010;
+ // drift_tolerance_in_seconds = 0.010; // this is no longer necessary if you have updated the Pi's firmware using rpi-update (see above).
volume_range_db = 50;
};
diff --git a/LIBSOXR.md b/LIBSOXR.md
index 8a81cfd..cce2f19 100644
--- a/LIBSOXR.md
+++ b/LIBSOXR.md
@@ -1,7 +1,7 @@
The Raspbian image at the time of writing is the `May 2016` version, with the release date of `2016-05-10`. It does not include `libsoxr`, but it is available as a package via `apt-get`.
-Alternatively, `libsoxr` is very easy to compile. Here are very brief instructions to download, compile and install it:
+Alternatively, `libsoxr`, part of [The Sox Resampler Library](https://sourceforge.net/projects/soxr/), is very easy to compile. Here are very brief instructions to download, compile and install it:
* Install `cmake`. This is used in the building of libsoxr. On Linuxes such as Debian/Ubuntu/Raspbian:
```
@@ -14,14 +14,14 @@ On FreeBSD:
* Download the `libsoxr source`:
```
-$ git clone git://git.code.sf.net/p/soxr/code libsoxr
+$ git clone git://git.code.sf.net/p/soxr/code soxr-code
```
-* `cd` into the `libsoxr` directory and start the build process:
+* `cd` into the `soxr-code` directory and start the build process:
```
-$ cd libsoxr
+$ cd soxr-code
$ ./go
```
-Be patient! This takes a long time on a Raspberry Pi -- it looks like it gets stuck around 40% or 50%, but it will finish if you let it.
+Be patient! This takes a long time on a first-generation Raspberry Pi -- it looks like it gets stuck around 40% or 50%, but it will finish if you let it.
Having compiled `libsoxr`, it must now must be installed:
```
@@ -32,7 +32,7 @@ Finally, for Shairport Sync to be able to locate `libsoxr` during compilation, y
On Linuxes such as Debian/Ubuntu/Raspbian:
```
-# ldconfig -v
+# ldconfig
```
On FreeBSD you must add the location of the `soxr.pc` file to the `PKG_CONFIG_PATH`, if it exists, and define it otherwise. Here is what you do if it doesn't already exist:
```
diff --git a/README.md b/README.md
index 577a9cb..db8b3c0 100644
--- a/README.md
+++ b/README.md
@@ -92,10 +92,11 @@ Sincere thanks to all package contributors!
If you wish to build and install the latest version of Shairport Sync on Debian, Ubuntu, Fedora or Arch platforms, please continue to follow these instructions. When the program has been compiled and installed, refer to the section on Configuring Shairport Sync that follows. To build Shairport Sync from sources on FreeBSD please refer to [FREEBSD.md](https://github.com/mikebrady/shairport-sync/blob/master/FREEBSD.md).
-**Remove Old Versions Of Shairport Sync**
+**Remove Old Versions of Shairport Sync and its Startup Scripts**
-You should check to see if `shairport-sync` is already installed – you can use the command `$ which shairport-sync` to find where it is located, if installed. If it is installed you should delete it – you may need superuser privileges. After deleting, check again in case further copies are installed elsewhere.
+You should check to see if `shairport-sync` is already installed – you can use the command `$ which shairport-sync` to find where it is located, if installed. If it is installed you should delete it – you may need superuser privileges. After deleting, check again in case further copies are installed elsewhere.
+You should also remove the initialisation script files `/etc/systemd/system/shairport-sync.service` and `/etc/init.d/shairport-sync` if they exist – new ones will be installed in necessary.
**Determine The Configuration Needed**
@@ -152,15 +153,15 @@ Many Linux distributions have Avahi and OpenSSL already in place, so normally it
Debian, Ubuntu and Raspbian users can get the basics with:
-- `# apt-get install build-essential git xmltoman` – these may already be installed.
-- `# apt-get install autoconf automake libtool libdaemon-dev libpopt-dev libconfig-dev`
-- `# apt-get install libasound2-dev` for the ALSA libraries
-- `# apt-get install libpulse-dev` for the PulseAudio libraries
-- `# apt-get install avahi-daemon libavahi-client-dev` if you want to use Avahi (recommended).
-- `# apt-get install libssl-dev` if you want to use OpenSSL and libcrypto, or use mbed TLS otherwise.
-- `# apt-get install libmbedtls-dev` if you want to use mbed TLS, or use OpenSSL/libcrypto otherwise. You can still use PolarSSL with `apt-get install libpolarssl-dev` if you want to use PolarSSL, but it is deprecated as it's not longer being supported.
-- `# apt-get install libsoxr-dev` if you want support for libsoxr-based resampling. This library is in many recent distributions; if not, instructions for how to build it from source for Rasbpian/Debian Wheezy are available at [LIBSOXR.md](https://github.com/mikebrady/shairport-sync/blob/master/LIBSOXR.md).
-- `# apt-get install libsndfile1-dev` if you want to use the convolution filter.
+- `# apt install build-essential git xmltoman` – these may already be installed.
+- `# apt install autoconf automake libtool libdaemon-dev libpopt-dev libconfig-dev`
+- `# apt install libasound2-dev` for the ALSA libraries
+- `# apt install libpulse-dev` for the PulseAudio libraries
+- `# apt install avahi-daemon libavahi-client-dev` if you want to use Avahi (recommended).
+- `# apt install libssl-dev` if you want to use OpenSSL and libcrypto, or use mbed TLS otherwise.
+- `# apt install libmbedtls-dev` if you want to use mbed TLS, or use OpenSSL/libcrypto otherwise. You can still use PolarSSL with `apt install libpolarssl-dev` if you want to use PolarSSL, but it is deprecated as it's not longer being supported.
+- `# apt install libsoxr-dev` if you want support for libsoxr-based resampling. This library is in many recent distributions; if not, instructions for how to build it from source for Rasbpian/Debian Wheezy are available at [LIBSOXR.md](https://github.com/mikebrady/shairport-sync/blob/master/LIBSOXR.md).
+- `# apt install libsndfile1-dev` if you want to use the convolution filter.
If you wish to include the Apple ALAC decoder, you need install it first – please refer to the [ALAC](https://github.com/mikebrady/alac) repository for more information.
@@ -285,9 +286,10 @@ $ sudo systemctl enable shairport-sync
**Complete installation into a System V system**
-If you have chosen the `--with-systemv` configuration option, enter:
+If you have chosen the `--with-systemv` configuration option, then, to enable Shairport Sync to start automatically at system startup, enter:
```
$ sudo update-rc.d shairport-sync defaults 90 10
+$ sudo update-rc.d shairport-sync enable
```
**Man Page**
@@ -356,11 +358,32 @@ Note: Shairport Sync can take configuration settings from command line options.
**Raspberry Pi**
-The Raspberry Pi Models A and B have a built-in audio DAC that is connected to the device's headphone jack. An updated audio driver has greatly improved the quality of the output – see [#525](https://github.com/mikebrady/shairport-sync/issues/525) for details. To activate the updated driver, add the line:
+The Raspberry Pi Models A and B have a built-in audio DAC that is connected to the device's headphone jack. To get the benefits of improvements in the Pi's software and firmware, you should update the Raspberry Pi as follows:
+
+Do the usual update and upgrade:
+```
+# apt update
+# apt upgrade
+```
+Update the Pi's firmware:
+```
+# rpi-update
+```
+Recent (September 2018) improvements include:
+* An updated audio driver has greatly improved the quality of the output – see [#525](https://github.com/mikebrady/shairport-sync/issues/525) for details.
+* A [significant improvement](https://github.com/raspberrypi/firmware/commit/200c2f4dd54b2048b5dcb8661ea3f232beb7d81e) has been made to the [timing software](https://github.com/raspberrypi/firmware/issues/1026) of the built-in audio DAC's drivers. It should be incorporated in firmware from Raspbian 4.14.66-v7 onwards.
+
+Separately, if you haven't done so already, consider using the `raspi-config` tool to expand the file system to use the entire card.
+
+To activate the updated audio driver referred to above, add the line:
```
audio_pwm_mode=2
+
+(Note that this isn't needed in the most recent versions of Raspbian as it will enable this driver mode by default)
```
-to `/boot/config.txt`. To make Shairport Sync output to the built-in audio DAC and use its hardware mixer, in the `alsa` section of the configuration file, set the output device and mixer as follows:
+to `/boot/config.txt`.
+
+To make Shairport Sync output to the built-in audio DAC and use its hardware mixer, in the `alsa` section of the configuration file, set the output device and mixer as follows:
```
alsa =
{
@@ -374,7 +397,7 @@ Apart from a loud click when used for the first time after power-up, it is quite
From a user's point of view, the effect of using this setting is to move the minimum usable volume all the way down to the bottom of the user's volume control, rather than have the minimum usable volume concentrated very close to the maximum volume.
-Another setting to consider is the `general` `drift_tolerance_in_seconds` setting: you should set it to a larger tolerance, say 10 milliseconds – `drift_tolerance_in_seconds=0.010;` – to reduce the amount of overcorrection that seems to occur when using the Raspberry Pi's built-in DAC.
+If you have not updated the Pi's firmware as discussed above, then another setting to consider is the `general` `drift_tolerance_in_seconds` setting: you should set it to a larger tolerance, say 10 milliseconds – `drift_tolerance_in_seconds=0.010;` – to reduce the amount of overcorrection that seems to occur when using the Raspberry Pi's built-in DAC.
*Command Line Arguments*
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 2f1d4a7..f7a45f2 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -1,13 +1,22 @@
-Version 3.2.1
+Version 3.2.2
====
Please see the [Release Notes for 3.2](https://github.com/mikebrady/shairport-sync/releases/tag/3.2).
+**Enhancement**
+* Adjust the latency calculation to accommodate changes in iOS 12 and AirPlay connections from macOS Mojave. Thanks to [artenverho](https://github.com/artenverho) who first reported the issue.
+
+**Bug Fix**
+* Fixed a problem that prevented the `run_this_when_volume_is_set` script or program from running when the volume control is changed. Thanks to [shaven](https://github.com/shaven) for the report.
+
+Version 3.2.1
+====
+
**Bug Fix**
-* Fix a bug that was causing problems when `soxr` interpolation was chosen. Problems included instability during or after a play session and possibly an extremely slight click on very loud audio. Thanks are due to [hanaguro](https://github.com/hanaguro), [FnasBas](https://github.com/FnasBas), [priitohlo](https://github.com/priitohlo) and [David Krmpotić](https://github.com/davidhq).
+* Fix a bug that was causing problems when `soxr` interpolation was chosen. Problems included instability during or after a play session and possibly an extremely slight click on very loud audio. Thanks are due to [hanaguro](https://github.com/hanaguro), [FnasBas](https://github.com/FnasBas), [priitohlo](https://github.com/priitohlo), [David Krmpotić](https://github.com/davidhq) and [artenverho](https://github.com/artenverho).
Version 3.2
====
-Version 3.2 is equivalent to 3.2RC13. Please see the [Release Notes for 3.2](https://github.com/mikebrady/shairport-sync/releases/tag/3.2).
+Version 3.2 is equivalent to 3.2RC13.
Version 3.2RC13
====
diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md
index 262bca6..6d69a1f 100644
--- a/TROUBLESHOOTING.md
+++ b/TROUBLESHOOTING.md
@@ -7,6 +7,8 @@ In this brief document will be listed some problems and some solutions, some pro
1. Before starting, ensure that your software is up-to-date.
2. Set the `interpolation` in the `general` section of the configuration file to `basic` as the `soxr` setting can cause lower-powered devices to bog down at critical times, e.g. see [this report](https://github.com/mikebrady/shairport-sync/issues/631#issuecomment-366305203).
+### WiFi and Microwaves
+Microwaves can interfere with WiFi -- see [here](http://sciabc.us/F6Gaa) for example.
### WiFi adapter running in power-saving / low-power mode
diff --git a/audio_pa.c b/audio_pa.c
index ac1570e..b46054d 100644
--- a/audio_pa.c
+++ b/audio_pa.c
@@ -138,7 +138,6 @@ static int init(__attribute__((unused)) int argc, __attribute__((unused)) char *
}
static void deinit(void) {
- // debug(1, "pa deinit start");
pa_threaded_mainloop_stop(mainloop);
pa_threaded_mainloop_free(mainloop);
// debug(1, "pa deinit done");
@@ -275,7 +274,7 @@ static void stop(void) {
audio_umb = audio_lmb + audio_size;
audio_occupancy = 0;
- // debug(1, "finish with stream");
+ // debug(1,"pa stop");
pa_stream_disconnect(stream);
}
diff --git a/common.c b/common.c
index 7709e36..e6974bf 100644
--- a/common.c
+++ b/common.c
@@ -565,7 +565,7 @@ void command_set_volume(double volume) {
inform("Couldn't allocate memory for set_volume argument string");
} else {
memset(command_buffer, 0, command_buffer_size);
- snprintf(command_buffer, command_buffer_size, "%s%f", config.cmd_set_volume, volume);
+ snprintf(command_buffer, command_buffer_size, "%s %f", config.cmd_set_volume, volume);
// debug(1,"command_buffer is \"%s\".",command_buffer);
int argC;
char **argV;
diff --git a/configure.ac b/configure.ac
index ed9e106..37f8a73 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.50])
-AC_INIT([shairport-sync], [3.2.1], [mikebrady@eircom.net])
+AC_INIT([shairport-sync], [3.2.2], [mikebrady@eircom.net])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([shairport.c])
AC_CONFIG_HEADERS([config.h])
diff --git a/debian/changelog b/debian/changelog
index 7a87890..fd5789f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+shairport-sync (3.2.2-1) unstable; urgency=medium
+
+ * New upstream release.
+
+ -- Chris Boot <bootc@debian.org> Sat, 27 Oct 2018 22:29:43 +0100
+
shairport-sync (3.2.1-1~bpo9+1) stretch-backports; urgency=medium
* Rebuild for stretch-backports.
diff --git a/rtp.c b/rtp.c
index 6a588b0..a5db0aa 100644
--- a/rtp.c
+++ b/rtp.c
@@ -300,7 +300,7 @@ void *rtp_control_receiver(void *arg) {
uint16_t flags = nctohs(&packet[2]);
int64_t la = sync_rtp_timestamp - rtp_timestamp_less_latency;
// debug(3, "Latency derived just from the sync packet is %" PRId64 " frames.", la);
- if ((flags == 7) || ((conn->AirPlayVersion > 0) && (conn->AirPlayVersion <= 353))) {
+ if ((flags == 7) || ((conn->AirPlayVersion > 0) && (conn->AirPlayVersion <= 353)) || ((conn->AirPlayVersion > 0) && (conn->AirPlayVersion >= 371))) {
la += config.fixedLatencyOffset;
// debug(3, "A fixed latency offset of %d frames has been added, giving a latency of
// "
diff --git a/scripts/shairport-sync.conf b/scripts/shairport-sync.conf
index 2f7f137..b388060 100644
--- a/scripts/shairport-sync.conf
+++ b/scripts/shairport-sync.conf
@@ -29,9 +29,9 @@ general =
// volume_control_profile = "standard" ; // use this advanced setting to specify how the airplay volume is transferred to the mixer volume.
// "standard" makes the volume change more quickly at lower volumes and slower at higher volumes.
// "flat" makes the volume change at the same rate at all volumes.
-// run_this_when_volume_is_set = "/full/path/to/application/and/args"; // Run the specified application whenever the volume control is set or changed.
-// The desired AirPlay volume is appended to the end of the command line – leave a space if you want it treated as an extra argument.
-// AirPlay volume goes from 0 to -30 and -144 means "mute".
+// run_this_when_volume_is_set = "/full/path/to/application/and/args"; // Run the specified application whenever the volume control is set or changed.
+// The desired AirPlay volume is appended to the end of the command line – leave a space if you want it treated as an extra argument.
+// AirPlay volume goes from 0 to -30 and -144 means "mute".
// regtype = "_raop._tcp"; // Use this advanced setting to set the service type and transport to be advertised by Zeroconf/Bonjour. Default is "_raop._tcp".
// playback_mode = "stereo"; // This can be "stereo", "mono", "reverse stereo", "both left" or "both right". Default is "stereo".
@@ -39,17 +39,17 @@ general =
// the original Shairport decoder by David Hammerton or the Apple Lossless Audio Codec (ALAC) decoder written by Apple.
// interface = "name"; // Use this advanced setting to specify the interface on which Shairport Sync should provide its service. Leave it commented out to get the default, which is to select the interface(s) automatically.
-// audio_backend_latency_offset_in_seconds = 0.0; // Set this offset to compensate for a fixed delay in the audio back end. E.g. if the output device delays by 100 ms, set this to -0.1.
-// audio_backend_buffer_desired_length_in_seconds = 0.15; // If set too small, buffer underflow occurs on low-powered machines. Too long and the response time to volume changes becomes annoying. Default is 0.15 seconds in the alsa backend, 0.35 seconds in the pa backend and 1.0 seconds otherwise.
-// audio_backend_silent_lead_in_time = 2.0; // This optional advanced setting, from 0.0 and 4.0 seconds, sets the length of the period of silence that precedes the start of the audio. The default is the latency, usually 2.0 seconds. Values greater than the latency are ignored. Values that are too low will affect initial synchronisation.
-// dbus_service_bus = "system"; // The Shairport Sync dbus interface, if selected at compilation, will appear
-// as "org.gnome.ShairportSync" on the whichever bus you specify here: "system" (default) or "session".
-// mpris_service_bus = "system"; // The Shairport Sync mpris interface, if selected at compilation, will appear
-// as "org.gnome.ShairportSync" on the whichever bus you specify here: "system" (default) or "session".
+// audio_backend_latency_offset_in_seconds = 0.0; // Set this offset to compensate for a fixed delay in the audio back end. E.g. if the output device delays by 100 ms, set this to -0.1.
+// audio_backend_buffer_desired_length_in_seconds = 0.15; // If set too small, buffer underflow occurs on low-powered machines. Too long and the response time to volume changes becomes annoying. Default is 0.15 seconds in the alsa backend, 0.35 seconds in the pa backend and 1.0 seconds otherwise.
+// audio_backend_silent_lead_in_time = 2.0; // This optional advanced setting, from 0.0 and 4.0 seconds, sets the length of the period of silence that precedes the start of the audio. The default is the latency, usually 2.0 seconds. Values greater than the latency are ignored. Values that are too low will affect initial synchronisation.
+// dbus_service_bus = "system"; // The Shairport Sync dbus interface, if selected at compilation, will appear
+// as "org.gnome.ShairportSync" on the whichever bus you specify here: "system" (default) or "session".
+// mpris_service_bus = "system"; // The Shairport Sync mpris interface, if selected at compilation, will appear
+// as "org.gnome.ShairportSync" on the whichever bus you specify here: "system" (default) or "session".
};
// Advanced parameters for controlling how Shairport Sync runs a play session
-sessioncontrol =
+sessioncontrol =
{
// run_this_before_play_begins = "/full/path/to/application and args"; // make sure the application has executable permission. If it's a script, include the shebang (#!/bin/...) on the first line
// run_this_after_play_ends = "/full/path/to/application and args"; // make sure the application has executable permission. If it's a script, include the shebang (#!/bin/...) on the first line
@@ -63,72 +63,72 @@ sessioncontrol =
// These are parameters for the "alsa" audio back end.
alsa =
{
-// output_device = "default"; // the name of the alsa output device. Use "alsamixer" or "aplay" to find out the names of devices, mixers, etc.
-// mixer_control_name = "PCM"; // the name of the mixer to use to adjust output volume. If not specified, volume in adjusted in software.
-// mixer_device = "default"; // the mixer_device default is whatever the output_device is. Normally you wouldn't have to use this.
-// output_rate = 44100; // can be 44100, 88200, 176400 or 352800, but the device must have the capability.
-// output_format = "S16"; // can be "U8", "S8", "S16", "S24", "S24_3LE", "S24_3BE" or "S32", but the device must have the capability. Except where stated using (*LE or *BE), endianness matches that of the processor.
-// disable_synchronization = "no"; // Set to "yes" to disable synchronization. Default is "no".
-// period_size = <number>; // Use this optional advanced setting to set the alsa period size near to this value
-// buffer_size = <number>; // Use this optional advanced setting to set the alsa buffer size near to this value
-// use_mmap_if_available = "yes"; // Use this optional advanced setting to control whether MMAP-based output is used to communicate with the DAC. Default is "yes"
-// use_hardware_mute_if_available = "no"; // Use this optional advanced setting to control whether the hardware in the DAC is used for muting. Default is "no", for compatibility with other audio players.
+// output_device = "default"; // the name of the alsa output device. Use "alsamixer" or "aplay" to find out the names of devices, mixers, etc.
+// mixer_control_name = "PCM"; // the name of the mixer to use to adjust output volume. If not specified, volume in adjusted in software.
+// mixer_device = "default"; // the mixer_device default is whatever the output_device is. Normally you wouldn't have to use this.
+// output_rate = 44100; // can be 44100, 88200, 176400 or 352800, but the device must have the capability.
+// output_format = "S16"; // can be "U8", "S8", "S16", "S24", "S24_3LE", "S24_3BE" or "S32", but the device must have the capability. Except where stated using (*LE or *BE), endianness matches that of the processor.
+// disable_synchronization = "no"; // Set to "yes" to disable synchronization. Default is "no".
+// period_size = <number>; // Use this optional advanced setting to set the alsa period size near to this value
+// buffer_size = <number>; // Use this optional advanced setting to set the alsa buffer size near to this value
+// use_mmap_if_available = "yes"; // Use this optional advanced setting to control whether MMAP-based output is used to communicate with the DAC. Default is "yes"
+// use_hardware_mute_if_available = "no"; // Use this optional advanced setting to control whether the hardware in the DAC is used for muting. Default is "no", for compatibility with other audio players.
};
// Parameters for the "sndio" audio back end. All are optional.
sndio =
{
-// device = "snd/0"; // optional setting to set the name of the output device. Default is the sndio system default.
-// rate = 44100; // optional setting which can be 44100, 88200, 176400 or 352800, but the device must have the capability. Default is 44100.
-// format = "S16"; // optional setting which can be "U8", "S8", "S16", "S24", "S24_3LE", "S24_3BE" or "S32", but the device must have the capability. Except where stated using (*LE or *BE), endianness matches that of the processor.
-// round = <number>; // advanced optional setting to set the period size near to this value
-// bufsz = <number>; // advanced optional setting to set the buffer size near to this value
+// device = "snd/0"; // optional setting to set the name of the output device. Default is the sndio system default.
+// rate = 44100; // optional setting which can be 44100, 88200, 176400 or 352800, but the device must have the capability. Default is 44100.
+// format = "S16"; // optional setting which can be "U8", "S8", "S16", "S24", "S24_3LE", "S24_3BE" or "S32", but the device must have the capability. Except where stated using (*LE or *BE), endianness matches that of the processor.
+// round = <number>; // advanced optional setting to set the period size near to this value
+// bufsz = <number>; // advanced optional setting to set the buffer size near to this value
};
// Parameters for the "pa" PulseAudio backend.
pa =
{
-// application_name = "Shairport Sync"; //Set this to the name that should appear in the Sounds "Applications" tab when Shairport Sync is active.
+// application_name = "Shairport Sync"; //Set this to the name that should appear in the Sounds "Applications" tab when Shairport Sync is active.
};
// Parameters for the "pipe" audio back end, a back end that directs raw CD-style audio output to a pipe. No interpolation is done.
pipe =
{
-// name = "/path/to/pipe"; // there is no default pipe name for the output
+// name = "/path/to/pipe"; // there is no default pipe name for the output
};
// These are no configuration file parameters for the "stdout" audio back end. No interpolation is done.
// These are no configuration file parameters for the "ao" audio back end. No interpolation is done.
-// Static latency settings are deprecated and the settings have been removed.
+// Static latency settings are deprecated and the settings have been removed.
dsp =
{
//////////////////////////////////////////
-// This convolution filter can be used to apply almost any correction to the audio signal, like frequency and phase correction.
-// For example you could measure (with a good microphone and a sweep-sine) the frequency response of your speakers + room,
-// and apply a correction to get a flat response curve.
+// This convolution filter can be used to apply almost any correction to the audio signal, like frequency and phase correction.
+// For example you could measure (with a good microphone and a sweep-sine) the frequency response of your speakers + room,
+// and apply a correction to get a flat response curve.
//////////////////////////////////////////
//
-// convolution = "yes"; // Activate the convolution filter.
-// convolution_ir_file = "impulse.wav"; // Impulse Response file to be convolved to the audio stream
-// convolution_gain = -4.0; // Static gain applied to prevent clipping during the convolution process
-// convolution_max_length = 44100; // Truncate the input file to this length in order to save CPU.
+// convolution = "yes"; // Activate the convolution filter.
+// convolution_ir_file = "impulse.wav"; // Impulse Response file to be convolved to the audio stream
+// convolution_gain = -4.0; // Static gain applied to prevent clipping during the convolution process
+// convolution_max_length = 44100; // Truncate the input file to this length in order to save CPU.
//////////////////////////////////////////
-// This loudness filter is used to compensate for human ear non linearity.
-// When the volume decreases, our ears loose more sentisitivity in the low range frequencies than in the mid range ones.
-// This filter aims at compensating for this loss, applying a variable gain to low frequencies depending on the volume.
-// More info can be found here: https://en.wikipedia.org/wiki/Equal-loudness_contour
-// For this filter to work properly, you should disable (or set to a fix value) all other volume control and only let shairport-sync control your volume.
-// The setting "loudness_reference_volume_db" should be set at the volume reported by shairport-sync when listening to music at a normal listening volume.
+// This loudness filter is used to compensate for human ear non linearity.
+// When the volume decreases, our ears loose more sentisitivity in the low range frequencies than in the mid range ones.
+// This filter aims at compensating for this loss, applying a variable gain to low frequencies depending on the volume.
+// More info can be found here: https://en.wikipedia.org/wiki/Equal-loudness_contour
+// For this filter to work properly, you should disable (or set to a fix value) all other volume control and only let shairport-sync control your volume.
+// The setting "loudness_reference_volume_db" should be set at the volume reported by shairport-sync when listening to music at a normal listening volume.
//////////////////////////////////////////
//
-// loudness = "yes"; // Activate the filter
-// loudness_reference_volume_db = -20.0; // Above this level the filter will have no effect anymore. Below this level it will gradually boost the low frequencies.
+// loudness = "yes"; // Activate the filter
+// loudness_reference_volume_db = -20.0; // Above this level the filter will have no effect anymore. Below this level it will gradually boost the low frequencies.
};
diff --git a/shairport-sync.spec b/shairport-sync.spec
index cbd25fe..9d4f83c 100644
--- a/shairport-sync.spec
+++ b/shairport-sync.spec
@@ -1,5 +1,5 @@
Name: shairport-sync
-Version: 3.2.1
+Version: 3.2.2
Release: 1%{?dist}
Summary: AirTunes emulator. Multi-Room with Audio Synchronisation
# MIT licensed except for tinysvcmdns under BSD,
@@ -67,6 +67,8 @@ getent passwd %{name} &> /dev/null || useradd --system -c "%{name} User" \
%license LICENSES
%changelog
+* Sun Oct 14 2018 Mike Brady <mikebrady@eircom.net) 3.2.2
+- Compatibility with iOS 12 and mac OS Mojave AirPlay latencies. Minor bug fix.
* Fri Jul 13 2018 Mike Brady <mikebrady@eircom.net) 3.2.1
- Stability improvements when soxr interpolation is chosen.
* Mon Jul 09 2018 Mike Brady <mikebrady@eircom.net) 3.2