これまで Spotify をオーディオアンプで再生するために Volumio を使っていた。Volumio は途中まで良かったが、バージョンアップで微妙になってしまったので、代わりに raspotify
を使うことにした。
raspotify (それから Volumio や Google Home など)は、 Spotify Connect と呼ばれる API を使っている。これは、 Spotifyアプリで音楽を再生するのではなく、Connectデバイスで音楽ストリーミングを受けて再生するための仕組みだ。 一方の Bluetooth や AirPlay は、まずアプリ端末でSpotifyからのストリーミングを終端して、それから、Bluetooth や AirPlay に送信するという二段構えになってしまう。しかも Bluetooth も AirPlay も、コーデックで圧縮・展開してしまう。だから、無駄なことをしている感じが嫌だし、音質がロストすることも嫌なのだ。トレードオフとして、Raspberry Pi をこのために待機させておくコストがかかることになる。
デバイス
- Raspberry Pi 2 Model B
- HiFiBerry Digi + Pro
- オプティカル・オーディオ・ケーブル
- オプティカル・オーディオ入力があるいい感じのオーディオ機器
セットアップ
まず、Raspberry Pi OS を準備しておく。 raspotify はイメージ配布ではなく、後からインストールできるので、他のシステムと同居することも容易い。
raspotify
公式サイトにあるワンライナーで raspotify をインストールする。
https://dtcooper.github.io/raspotify/
うまくいくと、 systemd に登録されるので、動いていることを確認する。
sudo systemctl status raspotify
HiFiBerry
HiFiBerry は RaspberryPi にいろいろなオーディオ出力を追加するためのシールドで、いろいろなバリエーションがある。僕が持っているのは、だいぶ昔に購入した、RCA端子とオプティカル端子がついているモデルだ。
HiFiBerry Digi+ Pro – our most advanced digital audio interface
RaspberryPi OS には標準で HiFiBerryのデバイスドライバが含まれているので、ドライバのインストールが不要なのはありがたい。 以下のページを参考にして、ボードの設定を変更して、HiFiBerry以外のオーディオ出力を無効にすることにした。
CONFIGURING LINUX 4.X OR HIGHER
再起動して、 aplay -l
でオーディオデバイスを一覧する
pi@audio:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_digi], device 0: HiFiBerry Digi+ Pro HiFi wm8804-spdif-0 [HiFiBerry Digi+ Pro HiFi wm8804-spdif-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
HiFiBerry の1デバイスのみになっていることがわかる。よさそう。
おわり
デバイスドライバがはじめからOSに入っていることが本当にありがたい・・・。驚くほどすんなり動く。もし RaspberryPi OS 以外のディストリビュージョンで動かす場合には、もう少し手順が必要になるだろう。