Raspberry Pi2でミュージックサーバ構築

【記事は仕掛中のβ版】

自室の、FOSTEX P802-Sを繋いでいる環境をRaspberry Pi2に切り替えたので、その作業等々を備忘メモ。

FOSTEX スピーカー P802-Sの簡単なレビュー – ちゃたろうふぁんくらぶ

元々はベッドサイドで簡単に音楽聴ければいいか、と思って音源をスマホのイヤホンジャックを差して使っていたのだけど、ある時ふと気が向いてスマホのmicroUSBポートから音出ししてToppingのTP30のUSB-DAC側につなげたら、(まあ当たり前の事だが)断然に音がよかった
でも、スマホのmicroUSBポートは普段防水キャップがついているので、頻繁にカバーを開けたり閉めたりするのは避けたい。うーむ、どうしようか、もう新しく音楽視聴用だけに一個スマホ買ってしまおうか(今ならXperia Z SO-04E辺りが手ごろでよさそうである)と思ったのだけど、何も据え置き用にスマホにする必要ないよなあ、と思案していて、『そういやRaspberry Piで結構簡単にミュージックサーバが作れるらしいな』と言うのを思い出した。
で、このサイトをSSL環境にする為の一時的作業用としてもLinux環境が欲しかったのもあって、暇つぶしにRaspberry Pi2を導入してみた。

購入する/したもの一覧

本体はケース付きのセットを購入してみた。僕はRaspberry Pi2からUSBで音出ししてUSB-DAC付きアンプに接続するのでこれで構わない。
が、世の中にはRaspberry Pi2からI2S接続と言うのでドーターボードを接続し、ドーターボードでDAC処理を行ってアナログライン出力をアンプに繋げる、と言う方法もある。後者の方法を採用した場合は、ドーターボードやそこからのRCAケーブル出力端子の関係でケースに収納できなくなるので、剥き身のボードだけ買った方がいいと思う。

セットで買うと安くなるとあったので、ついでにヒートシンクも買ってみた。上のケース付きキットのケース内にちゃんと収納できる。大小2個のヒートシンクが入っていて、Rasberry Pi2本体のICともう一個サブのIC?の二か所に取り付けられる。ヒートシンクの温度低減の効果は結構美妙らしいし、ただの飾りかなあと思う。

この類の「スターターキット」は不要と判断して買わなかった。購入すると(Standard、Economy、電源セットと種類があるが)
・電源用USBケーブル
・電源用AC-USBアダプタ
・OSインストール済みmicroSDカード
・HDMIケーブル
・LANケーブル
辺りが入っているらしいが、電源USBアダプタはスマホ用のAnkerとかの多ポートのアダプタの方が便利だし、電源用USBケーブルなんて100均で買えるし、HDMIやらLANやらは別途自分の用途に必要な長さの物を買った方がいい。
人によってはOSインストール済みmicroSDカードが必要な人がいるのかな? でもそんな作業ができない人がRaspberry Pi買ってどうするんだ? と言う気がするし。

LANケーブル。自室に置いてあるイーサネットコンバータの場所とRaspberry Pi2を置く場所が6畳間のちょうど対角に近い端っこになってしまうので、ちょっと長いケーブルが必要になった。
なお、Raspberry Pi2にUSB-無線LANアダプタを差すという方法もあるらしい。その際には、もともと電源供給容量の少ないRaspberry Pi2の為になるべく消費電力の少ないアダプタを使うのが好ましく、amazon辺りで買えるものだとPLANEXのGW-USNANO2Aと言うのが鉄板扱いされているようだ。
あまりデータ通信が多くないサーバを作る時は無線LANアダプタでいいのだろうけど、僕の場合音源ファイルをWindwos共有からNASとして引っ張ってくるので、データ通信が結構な量になる。と言うことで少しでも負担の軽そうなオンボードのLANを使うことにした。

(青)

(赤)

Raspberry Pi2はmicroSDカードをストレージとして使う。相性問題も結構あり、transcendのメモリは動かないことがあるらしい。また、exFATのmicroSDXCは動作に不安がありそう。と言うことで、microSDHCは上記の16GBの物をチョイスしてみた。
調べてみるとRaspberry Pi2用には複数のOSがリリースされており、僕はそのうちのVolumio、RuneAudio、CentOSを試した。OSを変える度にいちいちSDカードのデータを書き換えてもいいが、どうせ500円程度で買えるのだから複数OS用に複数カードを買っても差し支えないと思う。
その際、上記のToshibaのカードは赤・青(あと一般用の黒)があるので見分けやすく重宝した。青いものにOSが黒と青ベースの配色をしているRuneAudioを、黒いものにCentOSを、余った赤いものにVolumioを入れた。どうせならVolumioの配色が緑なので緑カードがあればもっと便利だが、まあそこまで希望するのは無理な話だ。

あと音源ファイル供給用にUSBメモリないしUSB接続のHDD or SSDが必要かと思う。僕は前述したがNAS供給で音楽ファイルを送り込んでいるのでこの辺は不要。なお、先ほども書いたようにRaspberry Pi2の電力管理はシビアなので、USB接続のHDD等は別途電源供給あるものを選んだ方がいい。

Volumioのインプレッション

Volumio – Audiophile Music Player
からOSをダウンロード。zip圧縮されているので解凍するとimgファイルができる。zipファイルは300MB程度しかないのに解凍するとimgファイルは1.7GBぐらいもある。
Win32 Disk Imager download | SourceForge.net
imgファイルはWin32 Disk Imagerと言うツールで書き込む。

WindwowsのカードリーダでmicroSDカードへの書き込みが終わったら、microSDカードをRaspberry Pi2に差し込み、USB電源ケーブルを繋げる。もし何か、イヤホンジャックやUSBオーディオで音を出せるものがあったらそれもつなげておくとよい。ついでにLANケーブルも差しておくとよい。
60、70秒待つと、電源の入った起動音が流れ、起動したことが確認できる。(最初にUSB-DACを差しておけば勝手に認識してそちらから音を出してくれるようだ。)
VolumioはデフォルトでUPnPがONになっているので、http://volumio.localとかをブラウザに入れるとアクセスできるはず。
うちはUPnPをOFFにしているので、適当なIPアドレスを叩く必要がある。うちのネットワークは192.168.3.1/24になっていて、VolumioはデフォルトでDHCPでアドレスを要求してくるので、http://192.168.3.2にアクセスすることでVolumio@Raspberry Pi2にアクセスすることができた。
最初に起動するときのアドレスが何になるかを探すのは結構面倒だったりするケースもあるかもしれない。僕の場合は、手持ちのAndroid端末に

Fing – Network Tools – Google Play の Android アプリ
と言うネットワーク構成探索アプリを入れて探している。この手のアプリはWindows/Mac/iOSでもあると思うので、一つ入れておくと便利だろう。

起動すると、大まかなことは先ほどのWebインターフェースから操作できるので、そこから音源ファイルの追加やらネットワーク構成等システム設定を変更できる。もちろんSSH接続もできる(root/volumioがユーザ/パスワード)が、あまり必要はないかなと思う。

2016-02-26_1

その後、うちの場合はサーバのIPを192.168.3.50に指定したいので変更する。VolumioのWebインターフェースで、右上のコントロールボタンからNetworkを指示し、IP Addressを Automatic(DHCP)からStaticにすればいい。
なお、僕はVolumioのOSのネットワーク設定は変更せず、ルータのDHCP-IP固定割付機能を利用してRaspberry Pi2のMACアドレスへ192.168.3.50を固定割付している。これは、後述するRuneAudioのバグでRuneAudioではStatic IPが使い物にならないからで、結果的にVolumioでも特に操作せずに固定アドレス配布できる仕様になってしまったからだ。

その他、Volumioの簡単なインプレッション
・RuneAudioと比べて、メイン画面でLibraryタブを出すことが出来る。音楽ファイルのDBからジャンル、アーティスト、アルバムを選んで楽曲選択できるようになっている(RuneAudioはあくまでフォルダ単位で開くだけ)。普段音楽ファイルの管理をアプリ任せにしていて自分のPCにどういうフォルダ構成でファイルが入っているか分かっていない人にはVolumioの方がずっと管理しやすいだろう。
なお、Library管理画面はメニューのSystem→Miscellaneous→Library view(ON) & Show as tab(ON)と設定することで開けるようになるが、これがなかなかナーバスな設定で、結構な確率でデータベースの作成に失敗する。正しく作成できる時はLibraryのUpdateは1万曲入っていても10分もすれば完了する。一方で作成できない時は半日待っても作成はできない。ので、データベースの作成に失敗している素振り(楽曲数にもよるが、30分以上かかることはまずないだろう)がある時は、NASマウントをいったん削除して再作成してみたり、システムの設定をOFF/ONしてみたり、Volumioそのものをインストールし直してみたりする必要がある。また、まれにブラウザとの相性で表示できないこともあったので、おかしい時はブラウザも再起動するといいかもしれない。
2016-02-26_5
Volumioの設定画面、LibraryをONにする場所。
2016-02-26_8
Libraryの作成に成功するとこんな感じにgenres、Artists、Albums、でカテゴリ分けされる管理画面がでる。
Library画面はVolumioの再起動で消えてしまうことすらあるのであまり過信しない方がいいかも。

・基本的に、アルバムアートが出ない。→後述 RuneAudioはWebインターフェースでもアルバムアートがでる。

・音楽Libraryのデータベース更新処理は、RuneAidioより遅い気がする。うちの環境では、NASのマウント等をすると自動的に音楽ファイルを読み込んでデータベースの更新が行われるのだが、その際のデスクトップPC(音楽ファイルが入っている)へのデータアクセスがVolumioでは8MB/sほどの速度、RuneAudioでは10MB/sほどの速度になるのでデータベース更新処理が2割ほど多く時間がかかる。

※補足 Volumioのアップデート
アップデートは、Web画面でもできるがSSHで接続して以下のコマンドを発行(後ろ二個は行う必要はないかもしれない)の方が良いかなと思う。

<code>
apt-get -y update
apt-get -y upgrade
apt-get -y install binutils
apt-get -y install rpi-update
</code>

upgradeは30~1時間はかかるので気長に待つこと。apt-get -y upgradeは-yしていても途中説明を読んだりアップデートの確認したりする場所があるので時々は確認すること。

※補足 Volumioでのアルバムアートの表示について
VolumioではWeb画面ではアルバムアート表示できないが、MPDアプリと言うのを使うとアルバムアートが表示できるらしい。

参考:モニオの部屋: Volumio/RuneAudioをMPDアプリ(MPaD/MPoD)でアルバムアート表示する方法
簡単に言うと、NAS接続しているフォルダをhttp公開アドレスにシンボリックリンクさせて、MPDアプリでそのアドレスからアルバムアートをhttp経由でアクセスして表示させるというものである。
Androidの場合は、以下のアプリがMPDアプリとして対応している模様。

MPDroid – Google Play の Android アプリ
ただし、このアプリで表示できるのはあくまで音楽ファイルのあるフォルダに「folder.jpg」等々の統一ルールでアルバムアートの画像ファイルを置いている場合で、例えばフォルダごとにfolder.jpgやらcover.jpgやらファイル名が異なっていたり、あるいは僕のようにアルバムアートを音楽ファイル埋め込みで使っている人はこの方法でもアルバムアートを表示することができない。

そこで、mpodjacketと言うrubyスクリプトで埋め込みジャケットを表示できないか、現在調査中。

参考:MPoD,MPaD用のジャケット写真転送サーバー(yanさん作成のプログラム)(2) – みみず工房
なのだが、とりあえず現時点ではVolumioにRubyをインストールして試行錯誤しているのだが、うまくパスが通らず実行できてないので、改めて加筆修正予定。
スクリプトのrequireが通らないのはともかく、ruby-audioinfoのライブラリが落としてきたファイルの中のrequireパスまで通らないのでちょっと時間かかりそう。

RuneAudioのインプレッション

RuneAudio – Embedded Hi-Fi music player
からOSをダウンロード。gz圧縮されているので解凍するとimgファイルができる。zgファイルは600MB程度、解凍するとimgファイルは2GBぐらい。
Win32 Disk Imager download | SourceForge.net
imgファイルはWin32 Disk Imagerと言うツールで書き込む。

WindwowsでカードリーダでmicroSDカードへの書き込みが終わったら、microSDカードをRaspberry Pi2に差し込み、USB電源ケーブルを繋げる。もし何か、イヤホンジャックやUSBオーディオで音を出せるものがあったらそれもつなげておくとよい。ついでにLANケーブルも差しておくとよい。
60、70秒待つと、電源の入った起動音が流れ、起動したことが確認できる。(最初にUSB-DACを差して置けば勝手に認識してそちらから音を出してくれるようだ。)
RuneAudioもデフォルトでUPnPがONになっているので、http://runeaudio.local/とか入れるとアクセスできるはず。
あるいはRuneAudioもデフォルトでDHCPが立ち上がっているので、http://192.168.3.2にアクセスすることでRuneAudio@Raspberry Pi2にアクセスすることができる。

起動すると、大まかなことは先ほどのWebインターフェースから操作できるので、そこから音源ファイルの追加やらネットワーク構成等システム設定を変更できる。もちろんSSH接続もできる(root/runeがユーザ/パスワード)が、あまり必要はないかなと思う。

その後、うちの場合はサーバのIPを192.168.3.50に指定したいので変更する。この際、現状のRuneAudioにはバグがあって設定からStaticに変更するのは好ましくない。変更自体はWeb管理画面からもSSH接続からも行えるのだが、RuneAudioを再起動した時にnetctlのサービスの起動に失敗してしまうのだ。これが起きるとWeb管理画面はうんともすんとも言わなくなるので、いったんSSH接続をして

<code>
systemctl restart netctl-ifplugd@eth0.service
</code>

でnetctrlのサービスの再起動をしてあげる必要がある。

その他、RuneAudioの簡単なインプレッション
RuneAudioはWeb画面でアルバムアートが表示される。これがVolumioに対するRuneAudioの最大のメリットだろう。僕のようにアルバムアートを音楽ファイルに埋め込んでいてもちゃんと表示されるのはありがたい。ただし、画質がイマイチなのがちょっと悲しいかもしれない。RuneAudio側がアルバムアートを読み込んで自動的にgifに変換して出力しているのだけど、元画像のアスペクト比が1:1じゃない場合、勝手にアスペクト比を1:1に強制するので、画像によっては縦横比がおかしくなってしまう。
・先ほどVolumioの項で書いたけど、音楽ファイルのデータベースの更新はこっちのが速いと思う。
・僕の環境では、Volume Controlはsoftwareでしかコントロールできず、hardwareのコントロールが出来ない(USB DAC出力で)。
2016-02-26_9
softwareコントロールは音質劣化とあるので、聴感上どのぐらい変わるか(それほどではないかも?)はともかく、やっぱり気分は良くない。
VolumioはDebian Linuxベースなのに対して、RuneAudioはArch Linuxベースになっている。のでWebインターフェースでは意識しなくとも、SSH接続した時に発行するコマンドが結構違う。Volumioは基本的にインストールコマンドがapt-getなのに対しRuneAudioはpacman -Sになる。
・上記と関係するが、多分RuneAudioの問題ではなくベースのArch Linuxの問題なんだろうけど、RuneAudioはリポジトリサーバが凄い貧弱である。RuneAudioにもmpodjacketをインストールしたくてrubyをインストールしようとしたら、ruby自体がダウンロードできなくて何度もこけたのはビックリした。

<code>
nano /etc/pacman.d/mirrorlist
</code>

でダウンロード先をひとまずグローバルから台湾辺りに変更する必要がある。
(国内サーバを追加した方がいいかもしれないが、とりあえず台湾からは問題ない速度で落ちてくる)

※補足 RuneAudioでのアルバムアートの表示について
Volumioと同じく、MPDアプリでアルバムアートを表示させる方法。
最終的に、RuneAudioで埋め込みアルバムアートを表示させたいのでmpodjacketスクリプトを使う。

参考:モニオの部屋: Volumio/RuneAudioをMPDアプリ(MPaD/MPoD)でアルバムアート表示する方法
参考:MPoD,MPaD用のジャケット写真転送サーバー(yanさん作成のプログラム)(2) – みみず工房

で、SSH接続してだいたい以下の流れでコマンド発行して実行環境を整える。

<code>
ln -s /mnt/MPD /var/www/covers
pacman -Syy ruby rubygems
cp /mnt/MPD/NAS/My\ Musics/mpodjacket.rb /usr/bin/
cd /usr/bin
chmod +x mpodjacket.rb
gem install ruby-audioinfo
mpodjacket.rb -r /var/www -m covers -p 8888 -s folder.jpg
</code>

で、RuneAudioの場合はVolumioと違ってrequireのパスも特に問題なく実行できた。がスクリプトがなぜか埋め込みアルバムアートを読んでくれないので現在表示できてない。後で加筆修正予定。

CentOSのインプレッション

CentOSにもmpdインストールして音楽サーバ作ってみたのだけど、現時点では時間かかりそうなのでペンディング。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください