Raspberry Pi 2 Model Bでミュージックサーバを構築してみた

2016年2月13日

Raspberry Pi 2 Model B を使って、高音質で低消費電力な静音ミュージックサーバを構築したいと思います。
(Raspberry Pi 3 でも同様です)
使用するOSは、Raspbian jessieです。

要件

まず、私が求めるミュージックサーバの要件を考えてみます。

  • 高音質
  • 簡単
  • 音楽データをたくさん保存できる
  • 安価
  • 低消費電力
  • 静音

要件対応

各要件に対してどうやって対応するかを考えてみます。

高音質

Raspberry Pi 2 Model Bに光デジタル出力(S/PDIF)を取り付け、光デジタル入力(S/PDIF)を搭載しているアンプおよびスピーカーに接続します。
光デジタルでデータのやり取りをするので、高音質です。

簡単

Paspberry Pi 2 Model B に光デジタル出力(S/PDIF)は、USBタイプのものを選びます。(Raspberry Piに増設する基盤タイプとは違い、USBに挿すだけなので簡単)

音楽データを沢山保存できる

音楽データ格納用のストレージは、容量の大きいUSBメモリを選びます。

安価

USBタイプの光デジタル出力(S/PDIF)は量販されているので安いです。
USBメモリはコストパフォーマンスが一番良いものを選びます。
アンプおよびスピーカーは家にあるものを使います。

低消費電力

Raspberry Piなので、基本的に低消費電力です。
Raspberry PiのUSBバスパワーで電力を補えるぐらい低消費電力な光デジタル出力(S/PDIF)を選びます。
Raspberry PiのUSBバスパワーで電力を補えるぐらい低消費電力なUSBメモリを選びます。

静音

Raspberry Piなので、静音です。
音楽データ保存用のストレージはHDDではなく無音なUSBメモリを選びます。

準備した機材

結果として、以下のものを用意しました。

Raspberry Pi 2 Model B

これがないと始まらないです。OSは、Raspbian jessieです。

光デジタル出力(S/PDIF)

ベリンガー BEHRINGER UCA202(UCA222)を用意しました。
参考記事:USBで光デジタル出力を追加できるBEHRINGER UCA202 を買ってみた

USBメモリ

SanDisk UltraFit 128GBを用意しました。
参考記事1:USBメモリ(SanDisk Ultra Fit 128GB)を購入してみた
参考記事2:SanDisk Ultra Fit 128GB 4個でRAID5を構築してみた

ホームシアターシステム

光デジタル入力(S/PDIF)を搭載しているYAMAHAの5.1chホームシアターシステム TSS-15 (TSS-20)を用意しました。
コストパフォーマンスのとても良いスピーカーです。
参考記事:ヤマハ ホームシアターシステムTSS-15買ってみた。

さて、必要な材料が揃いましたので、引き続き構築に入ります。

ミュージックサーバの構築

必要パッケージのインストール

Raspbian jessie に、ミュージックサーバ構築に必要なパッケージ(ミュージックサーバのデーモンとクライアント)をインストールします。

サービスの管理に便利なchkconfigコマンドをインストールしていない場合は、入れておきます。

MPDの設定

Music Player Daemon(ミュージックプレーヤサーバ)の設定をします。

最低限必要な設定を実施します。

1.音楽データ保存ディレクトリ設定
/usbmemというディレクトリにusbメモリをマウントしてusbメモリ内にmusicというディレクトリに音楽データを格納する場合の例です。

変更前

変更後

2.プレイリスト保存ディレクトリ設定
/usbmemというディレクトリにusbメモリをマウントしてusbメモリ内にplaylistsというディレクトリにプレイリストを格納する場合の例です。

変更前

変更後

3.起動時にうまくホストとIPアドレスがbindできずにエラーが出ることがあるらしいので、回避設定

変更前

変更後

4.音楽データ追加時の、データベース自動更新設定

変更前

変更後

最低限、紹介した4箇所の設定をすれば動きます。

自動起動設定

Raspbian jessieの起動時にMPDが自動起動するように設定します。

USB光デジタル入力(S/PDIF)の接続

Raspberry Pi にベリンガー BEHRINGER UCA202を接続します。
Raspbian jessieの起動時にきちんと認識させるのが一番良いので、再起動しておきましょう。

もしくは、Raspberry PiにベリンガーBEHRINGER UCA202を接続してからRaspberry Piの電源を入れてください。

音声出力先の変更

デフォルトでは、Raspberry Piのオンボードの端子 bcm2835 から音声が出力されるため、ベリンガー BEHRINGER UCA202のS/PDIF出力から出力されるように変更します。

設定の確認

認識されているサウンドカードを確認します。

ベリンガーBEHRINGER UCA202のデバイス番号が1として認識されています。

デフォルトで使用するデバイスの変更

ベリンガーBEHRINGER UCA202のデバイス番号が1と分かったので、デフォルトの音声出力を1番に設定します。

変更前

変更後

再起動して反映します。

音量設定

私の場合、スピーカー側で音量を調節しますので、Raspberry Pi側では常に音量100%に設定します。

設定

確認

MPD の再起動

念のために再起動しておきます。

ステータスを確認してみます。

音楽ファイルの追加

mp3やflac等の音楽データをMPDで使用するディレクトリに入れます。
sambaでファイルサーバとして公開しておくと、Windows等からファイル操作できるのでオススメです。
参考記事:Raspberry Pi 2 Model Bでファイルサーバを構築してみた

クライアントから操作する

AndroidやiPhone等の、MPDクライアントアプリを使い、MPDを操作します。
私はMPDroidというアプリを選定しました。

再生してみて、スピーカーから音が出れば成功です。

MPDroidでのカバーアート表示

MPDクライアントアプリで、カバーアート(ジャケット)の画像を表示したい場合は、引き続き以下の設定が必要です。

webサーバのインストール

apache2をインストールします。

音楽データを格納しているディレクトリへのシンボリックリンクを作成

/usbmem/music に音楽データを格納している例です。

Raspbian jessie起動時に、自動でwebサーバが起動するようにします。

apache2を再起動します。

カバーアート画像格納ルールについて

音楽データのカバーアート(ジャケット)を表示したい単位(アルバム毎とか)でフォルダ分けして、フォルダ内に"folder.jpg"という名前でジャケットの画像を入れればOKです。
後は、MPDクライアント側で、ローカルの画像を表示する設定を入れればOKです。

MPDroid具体的には以下3つの設定をしてください。

  1. Download local coverart
  2. Path to music
  3. Cover filename

画像で説明すると、以下赤枠で囲っている部分です。

coverart-config-01

Path to music 設定で、http://RaspberryPiのIPアドレス/music を指定。

coverart-config-02

Cover filename 設定で、folder.jpg を指定。

coverart-config-03

設定が終われば、こんな感じでカバーアートが表示されます。

coverart

now-playing

最後に

ミュージックサーバにすると、すぐにストレージ容量が足りなくなりますね。
HDDでも良いですが、静音かつ低消費電力というのが理想なので、SSDでしょうか。
音楽データを扱う場合、一度書き込んだらなかなか書き換えは行わないと思いますので、「単価が安いが書き換えに弱い」といわれているTLCモデルを選択するのがコスト的に良さそうですね。