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 に、ミュージックサーバ構築に必要なパッケージ(ミュージックサーバのデーモンとクライアント)をインストールします。
1 |
$
sudo apt-get
install mpd mpc |
サービスの管理に便利なchkconfigコマンドをインストールしていない場合は、入れておきます。
1 |
$
sudo apt-get
install chkconfig |
MPDの設定
Music Player Daemon(ミュージックプレーヤサーバ)の設定をします。
1 |
$
sudo vi
/etc/mpd.conf |
最低限必要な設定を実施します。
1.音楽データ保存ディレクトリ設定
/usbmemというディレクトリにusbメモリをマウントしてusbメモリ内にmusicというディレクトリに音楽データを格納する場合の例です。
変更前
1 |
music_directory
"/var/lib/mpd/music" |
変更後
1 |
music_directory
"/usbmem/music" |
2.プレイリスト保存ディレクトリ設定
/usbmemというディレクトリにusbメモリをマウントしてusbメモリ内にplaylistsというディレクトリにプレイリストを格納する場合の例です。
変更前
1 |
playlist_directory
"/var/lib/mpd/playlists" |
変更後
1 |
playlist_directory
"/usbmem/playlists" |
3.起動時にうまくホストとIPアドレスがbindできずにエラーが出ることがあるらしいので、回避設定
変更前
1 |
bind_to_address
"localhost" |
変更後
1 |
#bind_to_address "localhost" |
4.音楽データ追加時の、データベース自動更新設定
変更前
1 |
#auto_update "yes" |
変更後
1 |
auto_update
"yes" |
最低限、紹介した4箇所の設定をすれば動きます。
自動起動設定
Raspbian jessieの起動時にMPDが自動起動するように設定します。
1 |
$
sudo chkconfig mpd on |
USB光デジタル入力(S/PDIF)の接続
Raspberry Pi にベリンガー BEHRINGER UCA202を接続します。
Raspbian jessieの起動時にきちんと認識させるのが一番良いので、再起動しておきましょう。
1 |
$
sudo reboot |
もしくは、Raspberry PiにベリンガーBEHRINGER UCA202を接続してからRaspberry Piの電源を入れてください。
音声出力先の変更
デフォルトでは、Raspberry Piのオンボードの端子 bcm2835 から音声が出力されるため、ベリンガー BEHRINGER UCA202のS/PDIF出力から出力されるように変更します。
設定の確認
認識されているサウンドカードを確認します。
1 2 3 4 5 6 |
$
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番に設定します。
1 |
$
sudo vi
/usr/share/alsa/alsa.conf |
変更前
1 2 |
defaults.ctl.card
0 defaults.pcm.card
0 |
変更後
1 2 |
defaults.ctl.card
1 defaults.pcm.card
1 |
再起動して反映します。
1 |
$
sudo reboot |
音量設定
私の場合、スピーカー側で音量を調節しますので、Raspberry Pi側では常に音量100%に設定します。
設定
1 2 3 4 5 6 7 8 9 |
$
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%になった |
確認
1 2 3 4 5 6 7 8 9 |
$
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 の再起動
念のために再起動しておきます。
1 |
$
sudo service mpd restart |
ステータスを確認してみます。
1 2 3 4 5 6 7 8 9 10 |
$
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をインストールします。
1 |
$
sudo apt-get
install apache2 |
音楽データを格納しているディレクトリへのシンボリックリンクを作成
/usbmem/music に音楽データを格納している例です。
1 |
$
sudo ln
-s
/usbmem/music
/var/www/music |
Raspbian jessie起動時に、自動でwebサーバが起動するようにします。
1 |
$
sudo chkconfig apache2 on |
apache2を再起動します。
1 |
$
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モデルを選択するのがコスト的に良さそうですね。
ディスカッション
コメント一覧
まだ、コメントがありません