「Raspberry Piのいたずら」で基本的な設定が終了したので、Raspberry Piに MPD(Music Player Daemon) をインストールしてミュージック・サーバーとしてみたい。
下記のようなシステムで設定してみる。
Raspberry Piに装着したUSBメモリー内の楽曲ファイルをLAN接続したクライアントPCでコントロールし、USB-DACから出力しアンプで増幅してスピーカーを鳴らす。
すでにALIX3D2というAMDオンボードの組み込み用PCでこのようなシステムは実現しているが、Raspberry Piは小型なので、最終的には一つの筐体にUSB-DACと一緒に組み込んでみたい。
MPDをインストールするためには、Raspberry Piを接続するLANがインターネットにつながっていることが条件となる。
最初にmpdとmpcをインストールする。なお、mpcはクライアント・ソフトである。
$sudo apt-get install mpd mpc
インストールが終了した際、以下のメッセージが現れたので
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
次のようにupdateを実施した。
$sudo apt-get update
次にalsa-utilsをインストールする。
$sudo apt-get install alsa-utils
インストールが完了すると/etc/mpd.confというファイルが出来ているので、それを確認する。
もし、/etc/mpd.confがなかったら再度、mpdとmpcをインストールする。
念のため、Raspberry Piを以下のコマンドでリブートする。
$sudo reboot
リブート後にmpdが動作しているか否かを次のコマントで確認する。
$ps ax
1769 ? Ssl 0:02 /usr/bin/mpd /etc/mpd.conf
と動作が確認できた。
今度はmpdの設定ファイルである /etc/mpd.conf を設定するが、その前にデバイスの状態も確認しておく。
Raspberry PiにUSB-DACを接続する。
筆者は自作USB-DACを接続してみた。
$cat /proc/asound/cards
0 [ALSA ]: BRCM bcm2835 ALSbcm2835 ALSA - bcm2835 ALSA
bcm2835 ALSA
1 [DAC ]: USB-Audio - USB Audio DAC
Burr-Brown from TI USB Audio DAC at usb-bcm2708_usb-1.2, full speed
デバイス番号1がUSB Audio DACであり、確かに自作DACはTI Burr-Brown製のチップを使用している。
次に /etc/modprobe.d/alsa-base.conf におけるUSB Audio DACに関する部分を#でコメント・アウトする。
$sudo vi /etc/modprobe.d/alsa-base.conf
#options snd-usb-audio index=-2
MPDの設定ファイルである /etc/mpd.conf を編集する。
$sudo vi /etc/mpd.conf
最初に bind_to_address という行を探し#でコメントアウトする。
#bind_to_address "localhost"
次の箇所は
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
}
において、 format、mixer_device、mixer_control、 mixer_index の行を # でコメントアウトする。
設定が終わったら、MPDを下記のコマンドで再起動する。
$sudo /etc/init.d/mpd restart
実際にUSB-DAC経由で音出しするためには、もう少し設定が必要となる。
楽曲ファイルは /var/lib/mpd/music というディレクトリーに格納されているか、リンクが張られていることが必要である。
リンクでもOKということは、LAN内にあるNASや別のPCに格納されている楽曲ファイルも
Raspberry Pi経由で再生することが出来るということになる。
とりあえず、USBメモリーに格納された楽曲ファイル(wav)を /var/lib/mpd/music にリンクしてそれで音出ししてみる。
先ず、USBメモリーをマウントするディレクトリー /media/usbmemo を作成する。
$sudo mkdir /media/usbmemo
次に、楽曲ファイル(wavファイル)の入ったUSBメモリーをRaspberry PiのUSBポートに挿し込み dmesg でデバイス番号を確認する。
$dmesg
[ 1506.794304] scsi 0:0:0:0: Direct-Access ELECOM MF-LSU2 0.00 PQ: 0 ANSI: 2
[ 1506.796374] sd 0:0:0:0: [sda] 7826551 512-byte logical blocks: (4.00 GB/3.73 GiB)
[ 1506.797049] sd 0:0:0:0: [sda] Write Protect is off
[ 1506.797078] sd 0:0:0:0: [sda] Mode Sense: 00 00 00 00
[ 1506.797695] sd 0:0:0:0: [sda] Asking for cache data failed
[ 1506.797721] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 1506.805557] sd 0:0:0:0: [sda] Asking for cache data failed
[ 1506.805589] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 1506.986348] sda: sda1
[ 1506.990227] sd 0:0:0:0: [sda] Asking for cache data failed
[ 1506.990257] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 1506.990276] sd 0:0:0:0: [sda] Attached SCSI removable disk
挿し込んだUSBメモリーのデバイス番号は sda1 であることが分かったので、以下のコマンドで /media/usbmemo/ にマウントする。
$sudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/usbmemo
マウントされたことを確認する。
$ls -l
-rwxr-xr-x 1 pi pi 60556988 Nov 12 2011 00 Song Of The Jet.wav
-rwxr-xr-x 1 pi pi 56290460 Dec 22 2010 01 Another Season.wav
-rwxr-xr-x 1 pi pi 48418316 Nov 27 2010 01 I'm Old Fashioned.wav
とマウントされ、楽曲ファイル(wav)が入っている。
なお、アンマウントは以下のコマンドである。
$sudo umount /media/usbmemo
次に /var/lib/mpd/musicからリンクを張る。
$cd /var/lib/mpd/music
$sudo ln -s /media/usbmemo/* .
SDカードの容量に余裕があれば、/var/lib/mpd/musicに楽曲ファイルをコピーしても良い。
この方法ではRaspberry Piを立ち上げる度にUSBメモリーをマウントしなくても良くなる。
$sudo cp /media/usbmemo/* /var/lib/mpd/music
これで音出しの準備が整ったが、クライアントソフトにはmpcを使用する。
mpcの設定についてはエレキジャックの「Music Player Daemon (MPD) を使ってみる」
を参考にした。
mpc ls のコマンドで/var/lib/mpd/musicの内容を見ることができるかを確認する。
$mpc ls
00 Song Of The Jet.wav
01 Another Season.wav
01 I'm Old Fashioned.wav
表示されない場合は mpc update 又は $sudo /etc/init.d/mpd restart でmpd を再起動する。
これを mpc ls | mpc add でプレイ・リストに追加する。
$mpc ls | mpc add
mpc playlist でリストの内容を見ることができる。
$mpc playlist
00 Song Of The Jet.wav
01 Another Season.wav
01 I'm Old Fashioned.wav
これが見えないと再生できない。
$mpc play
で再生が始まり、無事、Raspberry Pi→USB-DAC経由で音が出た。
$mpc help
でヘルプ・ファイルが表示されるが以下はその一部である。
mpc Display status
mpc current Show the currently playing song
mpc play Start playing
mpc next Play the next song
mpc prev Play the previous song
mpc stop Stop the currently playing playlists
楽曲ファイルがUSBメモリーではいちいちマウントしなくてはならないし、本体SDカードにコピーすると容量が問題となる。
また、クライアント用にWindowsPCが立ち上がっているのに、SSHのコマンドラインで操作するというのも・・・
それらを解決して「Raspberry Pi+MPDを快適に使う」方法です。