Raspberry Pi 2 Model Bでミュージックサーバを構築してみた
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つの設定をしてください。
- Download local coverart
- Path to music
- Cover filename
画像で説明すると、以下赤枠で囲っている部分です。
Path to music 設定で、http://`RaspberryPiのIPアドレス`/music を指定。
Cover filename 設定で、folder.jpg を指定。
設定が終われば、こんな感じでカバーアートが表示されます。
最後に
ミュージックサーバにすると、すぐにストレージ容量が足りなくなりますね。
HDDでも良いですが、静音かつ低消費電力というのが理想なので、SSDでしょうか。
音楽データを扱う場合、一度書き込んだらなかなか書き換えは行わないと思いますので、「単価が安いが書き換えに弱い」といわれているTLCモデルを選択するのがコスト的に良さそうですね。
ディスカッション
コメント一覧
まだ、コメントがありません