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

2025年3月25日

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 に、ミュージックサーバ構築に必要なパッケージ(ミュージックサーバのデーモンとクライアント)をインストールします。

$ sudo apt-get install mpd mpc

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

$ sudo apt-get install chkconfig

MPDの設定

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

$ sudo vi /etc/mpd.conf

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

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

変更前

music_directory "/var/lib/mpd/music"

変更後

music_directory "/usbmem/music"

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

変更前

playlist_directory "/var/lib/mpd/playlists"

変更後

playlist_directory "/usbmem/playlists"

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

変更前

bind_to_address "localhost"

変更後

#bind_to_address "localhost"

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

変更前

#auto_update "yes"

変更後

auto_update "yes"

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

自動起動設定

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

$ sudo chkconfig mpd on

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

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

$ sudo reboot

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

音声出力先の変更

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

設定の確認

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

$ sudo cat /proc/asound/cards

0 [ALSA ]: bcm2835 - bcm2835 ALSA
bcm2835 ALSA
1 [CODEC ]: USB-Audio - USB Audio CODEC
Burr-Brown from TI USB Audio CODEC at usb-3f980000.usb-1.5, full speed

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

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

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

$ sudo vi /usr/share/alsa/alsa.conf

変更前

defaults.ctl.card 0
defaults.pcm.card 0

変更後

defaults.ctl.card 1
defaults.pcm.card 1

再起動して反映します。

$ sudo reboot

音量設定

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

設定

$ sudo amixer set PCM 100%

Simple mixer control 'PCM',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 128
Mono:
Front Left: Playback 128 [100%] [0.00dB] [on]★100%になった
Front Right: Playback 128 [100%] [0.00dB] [on]★100%になった

確認

$ sudo amixer

Simple mixer control 'PCM',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 128
Mono:
Front Left: Playback 128 [100%] [0.00dB] [on]★100%
Front Right: Playback 128 [100%] [0.00dB] [on]★100%

MPD の再起動

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

 $ sudo service mpd restart

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

$ sudo service mpd status

● mpd.service - Music Player Daemon
Loaded: loaded (/lib/systemd/system/mpd.service; enabled)
Active: active (running) since 水 2016-01-20 00:51:47 JST; 4s ago
Main PID: 1478 (mpd)
CGroup: /system.slice/mpd.service
mq1478 /usr/bin/mpd --no-daemon

1月 20 00:51:47 raspberry systemd[1]: Started Music Player Daemon.

音楽ファイルの追加

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

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

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

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

MPDroidでのカバーアート表示

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

webサーバのインストール

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

$ sudo apt-get install apache2

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

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

$ sudo ln -s /usbmem/music /var/www/music

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

$ sudo chkconfig apache2 on

apache2を再起動します。

$ service apache2 restart

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

音楽データのカバーアート(ジャケット)を表示したい単位(アルバム毎とか)でフォルダ分けして、フォルダ内に"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モデルを選択するのがコスト的に良さそうですね。