count0.org

ShairportからShairport Syncに乗り換える

02 March 2016 raspberrypi

今更感があるけどiOS9でAirplayの仕様が変更されたという情報を最近知って、アレもそうかなと思ったので、識者に聞いてみたらアレはそうだという話をしたのでした。アレとはiPhoneでRaspberry PiのリモートスピーカーにAirplayで繋いで曲を再生している時に「⏩(次の曲)」をタップするとAirplayが切断してしまうことです。ちなみに連続再生で次の曲に行く場合この切断はないのです。

この症状、iTunesだと発生していたのか記憶が定かではないが、最近iPhone + リモートスピーカーで再生する機会があり気づいたのだ。知らぬが仏です。

そしてRaspberry PiでAirplayしているのはShairport。メンテナンスは終わっている。しかし、このAirplay問題をクリアしたShairport Syncがあるではないか。こいつに乗り換えるのです。

Shairpot Syncをインストール

Raspberry Pi B+でOSはRaspbian Jessie Lite、USBスピーカーはOlasonicのTW-S5です。手順はShairport SyncのREADMEのとおりです。

この記事を書いたあと、READMEが大幅に更新されているのでインストール、設定手順は本家READMEを参考にすることを強くオススメします。

すでにインストール済みのパッケージも幾つかあるかもしれませんが、以下のパッケージをインストールします。

sudo apt-get install autoconf automake libtool libdaemon-dev libasound2-dev libpopt-dev libconfig-dev libsoxr-dev libssl-dev

ソースコードをダウンロードしてビルドします。

git clone https://github.com/mikebrady/shairport-sync.git
cd shairport-sync
autoreconf -i -f
./configure --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemd
make

shairport-syncのユーザーとグループを追加します。ユーザーはaudioグループにも追加します。

getent group shairport-sync &>/dev/null || sudo groupadd -r shairport-sync >/dev/null
getent passwd shairport-sync &> /dev/null || sudo useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync >/dev/null

そして、インストールです。

sudo make install

OS起動時にShairport Syncも立ち上がるようにします。

sudo systemctl enable shairport-sync

設定

ものすごくたくさんの設定項目がありますが、変更したのはgeneralnameぐらいです。

sudo vi /etc/shairport-sync.conf

# nameだけ編集する

general = {
  name = "RasPi"
  # 以下略

デフォルトオーディオデバイスは以前Shairportをインストールした時に以下のようにUSBスピーカーにしてあったのでshairport-sync.confでどのオーディオデバイスを使うかはいじっていません。

sudo vi /usr/share/alsa/alsa.conf

# 以下の行を書き換える。数字はaplay -lで表示されるUSBスピーカーの番号

defaults.ctl.card 1
defaults.pcm.card 1

起動して聞きくらべ

sudo rebootで再起動してShairport Syncが動くのですが、ちょっと試してみたいことがあったので、その場でShairport Syncを起動しました。

sudo systemctl start shairport-sync.service

何を試したかったかというと設定のgeneralinterpolationの項目で指定するbasicsoxrの違いです。The SoX resamplerでsoxr。なんか音を良くしてくれそうな感じです。shairport-sync.confの説明を読む限り、CPU負荷が高そうです。プロセスのCPU利用率を比べてみたらbasicの場合15%程、soxrの場合は40%以上です。高負荷!

それで、音の方はどうか? たぶんsoxrの方がいいんじゃない? という感じです。あんまり自分の耳に自信ないんです。若いときはギターウルフとかのライブで耳に負荷をかけていたので。いい思い出です。

いいんじゃない? の根拠はDaft PunkのRandom Access MemoriesTame ImpalaのCurrentsを聞きくらべたときですね。ここら辺は感覚とCPU負荷のトレードオフでお好みに。