LinuxサーバーとRaspberry Pi 3B+を使ってSqueezeBoxを作った話

#Logitech Media ServerとSqueezeliteを使ってmpdとおさらばしたかった
##前提条件
Logitech Media Server(以下LMS)はAMD64CPU(鼻毛鯖と呼ばれてたやつ)のUbuntu18.10に、SqueezeliteはRaspberry PiとWindows10マシンに入れました。DSDファイルに関してはPCM5122がそもそもDSDにきちんと対応していないということで見送りました。Raspberry Piに乗っけたDACは[Hifiberry DAC+系](https://www.amazon.co.jp/dp/B07BZR1LLM/)のやつです。
##なんでみんなmpdなんですかね、SqueezeBoxにしようよ
mpdなのはやはり知見がたまってるからなんですかね。
音楽向けLinuxディストリビューションは軒並みmpdを採用してる現状で、私も試してみたんですけどいまいちこれじゃ無い感がありまして。
音楽をローカルPCで聞く時もあればRaspberry Piのmpdで聞いたり。そういうのでなんか便利なのないかなと探していたら見つけましたよ[SqueezeBox](https://mysqueezebox.com/index/Home)。
mpdと違い、楽曲DBはサーバーに一個あれば良くて、ローカルとリモートのプレイリストをシンクロできたり、mpdではしち面倒くさいradiko聴取がプラグインをサーバーに入れるとローカルでもリモートでもできる。AudioAddict系のネットラジオもプラグインである。「これだ！」と思い至った訳ですが、元々の製品が日本で売ってなかった事もあり、ドマイナーな存在。まず日本語で書かれた導入記事を探すのに苦労して、まあ英語の記事も読みますよね。が、記事が古い。また、Volumio2やmoodeOSでSqueezeliteが動かせるらしいのですが、Raspbianで一般化したかったのでちょっと苦労してみました。
##LMSはRaspberry Piに無い方がいい
よっぽど速いmicroSDカードを使ってない限りはLMSはラズパイ上に無い方がストレスが溜まらなくていいと思います。[piCorePlayer](https://picoreplayer.org)っていうSqueezeliteを動かすのに特化したディストリビューションがあるのですが、LMSはオプション扱いで、とりあえず入れてみたところCPUよりもCLASS10のmicroSDカードの遅さでインストール時間の長さや反応速度で悶絶しました。なのでLMSは別マシンに入れましょう。NASのアドオンで配ってたり、[ここ](http://downloads.slimdevices.com/LogitechMediaServer_v7.9.1/)にLinux、BSD、MacOS、Windows向けのバイナリインストーラーがあったりします。ソースコードが見たい人は[ここ](https://github.com/Logitech/slimserver)に。
インストールして、ポートが空いていればサーバー上の9000番のポートでhttpdが立ち上がります。アクセスすると、[https://mysqueezebox.com/](https://mysqueezebox.com/)にログインするかサインインを求められるので、どちらかを行うとウィザードが進みます。AudioAddict系のネットラジオのプラグインを入れたかったので私はサインインしました。というか、多分しないと進まない。radikoに関しては[らじるこプラグイン説明書](https://github.com/t-yoshi/RadiRuKo-Plugin/wiki)を参照していただければと思います。適宜必要なプラグインなどは入れましょう。英語を読むのに苦手意識が無ければ、特に迷うようなことは無いと思います。私が追加したのは上記のらじることDSDPlayerとLast.fmとSpotify Connectのプラグインでした。また、SqueezeBox AppとしてTuneInとAudioAddict系のネットラジオを入れました。あとは音楽ファイルの入っているディレクトリを指定して楽曲DBを作りました。
##Squeezeliteを再生したいマシンに入れる
Windows10に関しては[Squeezelite-X](https://www.microsoft.com/ja-jp/p/squeezelite-x/9pbhmtnp9037?activetab=pivot:overviewtab)というWindowsストアアプリがあります。オーディオデバイス名が肝心なカーネルストリーム系のところで文字化けが起きて使えない、となんとも言えない感じなのですが…。
Raspbianでは最新のStretchではその名もsqueezeliteというパッケージがあるので
```sudo apt install squeezelite```
でインストールできます。ここからが試行錯誤が長かった。ので、みなさんのお時間を使わないようにこの記事を書いてます。
##RaspbianのSqueezeliteを設定する
まずは
```sudo update-rc.d -f squeezelite remove```
をします。イマドキじゃないし、systemdのserviceファイルの方が簡単に書けるので。
```squeezelite -l```で出力デバイスの確認をします。
で、```/etc/systemd/system/squeezelite.service```を書きます。

```squeezelite.service
[Unit]
Description=Squeezelite

After=network.target

[Service]
ExecStart=/usr/bin/squeezelite -C 1 -o (squeezelite -lで出てきたデバイス例えばsysdefault:CARD=sndrpihifiberry) -n "プレーヤー名" -s (LMSサーバーIPアドレス) -m (ラズパイのmacアドレス) -a 100:4

[Install]
WantedBy=multi-user.target
```
macアドレスは私は基本Windows使いなので[Advanced IP Scanner](https://www.advanced-ip-scanner.com/jp/)で見ました。ラズパイ上で```ifconfig```で出てきますが(今思い出した)。別マシンからだと```nmap```とかでもいいのかな…。
```-C 1```オプションは、オーディオ入力が1秒なかったらALSAデバイスを手放すという設定です。5秒後にしたいなら`-C 5`になります。書かないと握りっぱなしになってmpd使うときに音が出せない状況になったので。Squeezelite一本で行くならいらないかもしれません。```-a 100:4```は入力バッファーの設定です。プチプチ切れないためのおまじない的なものと考えていただければ。
あとは`sudo systemctl daemon-reload`して`sudo systemctl enable squeezelite`して`sudo systemctl start squeezelite`すればデーモンとして居座ります。恐らく。
そうするとLMS上からも認識されて、LMSのブラウザ画面の右上に設定したプレーヤー名が選べるようになります。出てこない場合は一度ページをリロードしてみて下さい。
プレーヤーがつながって、試しに適当な音源を流して音が出たら、以上で終わりになります。
##リモコンアプリ
Androidでは[Squeezer](https://play.google.com/store/apps/details?id=uk.org.ngo.squeezer&hl=ja)というリモコンアプリがあります。MPDroidみたいなMPD Clientっぽい操作系なので特に困ることは無いと思います。私はiOSデバイスを持っていないのでよくわからないのですが[iPeng](https://itunes.apple.com/jp/app/ipeng/id767266886?mt=8)というのがiOSでは定番なリモコンアプリのようです。
また[SqueezePlay](https://sourceforge.net/projects/lmsclients/files/squeezeplay/)というのがWindows、MacOS、Linux向けにあります。まあWebブラウザで操作を行うのが手っ取り早いですが。タッチパネルのWindowsタブとかに良さそうです。
##終わりに
DSDはローカルPCの他のプレーヤーで聞けばいいので(1Rマンションでリビングなんてものがないので、ローカルPCでもラズパイで聞いても場所は同じ)とくにmpdが無くなって困る状況というのは無くなったかなーと。昔はmpdのWindowsバイナリを作ったりしたまでのmpd信者だったのですが、利便性で行けばSqueezeBoxかなぁと。
ハードルは高いけど、一度設定が決まってしまえば、すごく快適な環境が手に入ります。特に最近サードパーティーアプリを締め出した(ように思われる)AudioAddict系のネットラジオが公式でアプリが提供されているということで、安心感はあります。Radikoもプラグインをパッと入れるだけというのもありがたいですね。
変なところがあったら適宜突っ込みをいただけると幸いです。
##参考にしたWebサイト
[オーディオも自作すると面白い！－Raspberry Pi:ラジオはSqueezeliteでバッチリです♪](http://kitatokyo2013.blogspot.com/2013/06/raspberry-pisqueezelite.html)
[erik satellite－Squeezelite-X（LMSクライアント）](https://erikspace9.wordpress.com/2018/04/12/squeezelite-x/)
[John’s Tech Blog－Raspberry Pi and LogitechMediaServer and Squeezelite](https://www.hagensieker.com/wordpress/2018/06/12/302/)