ShairportからShairport Syncに乗り換える
今更感があるけどiOS9でAirplayの仕様が変更されたという情報を最近知って、アレもそうかなと思ったので、識者に聞いてみたらアレはそうだという話をしたのでした。アレとはiPhoneでRaspberry PiのリモートスピーカーにAirplayで繋いで曲を再生している時に「⏩(次の曲)」をタップするとAirplayが切断してしまうことです。ちなみに連続再生で次の曲に行く場合この切断はないのです。
この症状、iTunesだと発生していたのか記憶が定かではないが、最近iPhone + リモートスピーカーで再生する機会があり気づいたのだ。知らぬが仏です。
そして[Raspberry PiでAirplayしているのはShairport]({% post_url 2014-10-30-air-play-usb-audio-raspberrypi %})。メンテナンスは終わっている。しかし、この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 avahi-daemon libavahi-client-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
設定
ものすごくたくさんの設定項目がありますが、変更したのはgeneral
のname
ぐらいです。
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
何を試したかったかというと設定のgeneral
のinterpolation
の項目で指定するbasic
とsoxr
の違いです。The SoX resamplerでsoxr。なんか音を良くしてくれそうな感じです。shairport-sync.confの説明を読む限り、CPU負荷が高そうです。プロセスのCPU利用率を比べてみたらbasic
の場合15%程、soxr
の場合は40%以上です。高負荷!
それで、音の方はどうか? たぶんsoxr
の方がいいんじゃない? という感じです。あんまり自分の耳に自信ないんです。若いときはギターウルフとかのライブで耳に負荷をかけていたので。いい思い出です。
いいんじゃない? の根拠はDaft PunkのRandom Access MemoriesやTame ImpalaのCurrentsを聞きくらべたときですね。ここら辺は感覚とCPU負荷のトレードオフでお好みに。