2013/09/15
BeagleBoard-xM 上で MPD を動かし、ミュージックサーバを構築する
PC間で音楽をシェアして便利に使っているのですが、一つ問題が。
私の持っているノートPCは音がひどいのです。
音楽を聴くのにはとても使えません。
リビングなどで作業する時には、小さなスピーカーも一緒に持って行くのですが、これがとても面倒臭い。
そこで、リビングに MPD (Music Player Daemon) サーバを設置してみることにしました。
MPD はリモートで音楽を再生するためのサーバで、スマホなどから遠隔操作で音楽再生を行うことが出来ます。
しかし、リビングに新しいPCを設置するなんて本末転倒です 。
そんな時こそ、BeagleBoard-xM の出番 。
小さいし、低消費電力なので、MPDサーバにはぴったりと言えます。
5W 以下のようなので、電気代は100円/月以下で抑えられそう。
というわけで、実際にやってみました。
構成の簡略図は以下のような感じ。
NAS に入っている音楽ファイルを、BeagleBoard-xM にネットワークマウントし、それをスピーカーから鳴らすわけです。
音楽の再生・停止や音量のコントロールはスマホ等、同一ネットワーク内にある MPD クライアントから行います。
以降は、BeagleBoard-xM に Ubuntu 13.04 がインストールされていて、 ディスプレイ、キーボード、スピーカーが接続されている状態を前提としています。
IP アドレスを固定
宅内にDNSサーバを持っている場合は別ですが、BeagleBoard-xM のIPアドレスは固定しておいた方が後々楽でしょう。interfaces ファイルを以下のように編集します。
/etc/network/interfaces
auto eth0 # iface eht0 dhcp # コメントアウト # 以下を追加(値はネットワークによる) iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 dns-nameservers 192.168.0.1 gateway 192.168.0.1
設定を反映させるため、ネットワークを再起動。
$ sudo /sbin/ifdown eth0 $ sudo /sbin/ifup eth0
日本語ロケールの設定
一応、日本語ロケールの設定をしておきます。$ sudo apt-get install language-pack-ja $ sudo update-locale LANG=ja_JP.UTF-8 $ less /etc/default/locale LANG=ja_JP.UTF-8
オーディオの有効化
今回導入した、Ubuntu 13.04 for BeagleBoard-xM はデフォルトでは音量0に設定されています。以下のようにして、音を出力するようにしてやります。
また、ALSA から直接音を出すより、PulseAudio を経由したほうが便利ですので、pulseaudio も合わせてインストールします。
$ sudo apt-get --purge --reinstall install pulseaudio $ sudo apt-get install alsa
alsamixer を起動します。
$ sudo alsamixer
左右キーで項目を選択し、以下の要領で音量を上げます。
- DAC2 Digital Fine を選択し、カーソルキーの上で 100 にする
- Headset を選択し、カーソルキーの上で 100 にする
- HeadsetL Mixer AudioL1 を選択し、m キーでミュート解除
- HeadsetR Mixer AudioR1 を選択し、m キーでミュート解除
$ sudo alsactl store
参考
ALSA や Pulseaudio について
第177回 サウンドシステムの使いこなし:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
第177回 サウンドシステムの使いこなし:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
MPD のインストール
MPDをインストールします。$ sudo apt-get install mpd
インストールが完了したら、設定を行います。
/etc/mpd.conf
# 以下をコメントアウト # bind_to_address "localhost" # 以下で、同一ネットワーク内からのアクセスを許可 bind_to_address "0.0.0.0" # ALSA 出力をコメントアウト #audio_output { # type "alsa" # name "My ALSA Device" # device "hw:0,0" # optional # format "44100:16:2" # optional # mixer_device "default" # optional # mixer_control "PCM" # optional # mixer_index "0" # optional #} # pulse 出力のコメントアウトを解除 audio_output { type "pulse" name "My Pulse Output" # server "remote_server" # optional # sink "remote_server_sink" # optional }
設定を反映させるため、MPD を再起動します。
$ sudo /etc/init.d/mpd restart
この状態で、/var/lib/mpd/music 以下に音楽ファイルを配置すれば、設定完了です。
ネットワーク経由でミュージックフォルダをマウント
我が家の NAS は CIFS(旧 Samba)でアクセス可能ですので、CIFS でミュージックフォルダをマウントします。また、NAS に対して NetBIOS 名でアクセス可能にするため、winbind も合わせてインストールしておきます。
$ sudo apt-get install cifs-utils winbind
nsswitch.conf を以下のように修正。
hosts 項目に wins を追加します
/etc/nsswitch.conf
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 wins
起動時にマウントするように fstab に以下の行を追加します。
/etc/fstab
# nas という NetBIOS 名のマシンの /Music というフォルダを /var/lib/mpd/music にマウント //nas/Music /var/lib/mpd/music cifs username=****,password=****,uid=mpd,gid=audio,iocharset=utf8,defaults 0 0
強制的に fstab を反映させてマウント。
$ sudo mount -a $ ls /var/lib/mpd/music ADELE AI ASIAN KUNG-FU GENERATION ・・・等々ファイルが表示されればOK
もし、ここでマウント失敗した場合は、成功するまで修正を繰り返します。
そのまま放置してしまうと、次のブート時に起動しなくなってしまい、面倒なことになりますので。
MPDroid で接続
MPD クライアントは何でも良いのですが、今回は Android 用アプリ MPDroid を使用しました。詳しい使い方は後ほど書きますが、注意したいのは、一番最初にアクセスする際、MPD のデータベースを更新しないと曲の一覧が出てこないということ。
(デフォルトでは、クライアントから手動で更新依頼を出さないと、データベース更新が始まりません)
また、曲の数が多いと、一覧表示されるまでに時間がかかります。
これはデータベースの更新が完了するまで反映されないためです。
更新の進捗を知りたい場合はログを監視するとよいでしょう。
$ tail -f /var/log/mpd/mpd.log
その他の理由で、うまく行かない場合もログを監視すると原因がわかりやすいかと思います。
2013/9/16 追記
MPDroid の簡単な使い方について書きました
穀風: MPDroid の使い方
穀風: MPDroid の使い方
2013/9/17 追記
0 件のコメント:
コメントを投稿