お知らせ
lightMPDはNAS上の音楽ファイルを再生します。USBメモリやHDDなどのローカルなデバイス上の音楽ファイルを再生する事はできません。
現在下記の機種をサポートしています。
lightMPDはMPD(Music Player Daemon)を動作させることに特化したLinuxのディストリビューションです。
ネットワークで接続されたストレージ内の音楽ファイルをUSB接続のDAC経由で再生するネットワークプレーヤとして動作します。
MPD(Music Player Daemon)はLinuxを始めWindowsやMacでも動作するミュージックサーバーです。
MPDは音楽ファイルやプレイリストの管理の他に音楽ファイルを直接再生するという機能を持っています。これはDLNAサーバー等のそれまでのミュージックサーバーが音楽ファイルの管理に特化しているのに比べてMPDの大きな特徴になってます。
MPDの基本機能はローカルのストレージに記録されている音楽ファイルの管理および再生ですが、ネットワークで接続される外部ストレージをマウントする事によって外部ストレージ上の音楽ファイルの管理、再生も行えます。
lightMPDでは、ローカルのストレージを持たず、ネットワーク上のストレージの音楽ファイルを管理・再生する事に特化しました。使用形態としてはネットワークプレヤーな使い方を想定しています。
MPDのその他の機能として
等多数あり、これらはMPDのbuild時に取捨選択できます。
MPDの操作はPCやモバイルデバイス上で動作するMPDクライアントにより行います。
特にiOS上で動作するmpod,mpadは非常に優れたクライアントです。mpod,mpadがなければMPDもこれほど普及してなかったかもしれません。
MPDクライアントについてはMusic Player Daemon Community Wikiにまとめられてます。
lightMPDディレクトリ内にあるファイルでシステムの設定を行います。
lightmpd.conf でlightMPDが所属するネットワークや音楽ファイルが格納されているNASの諸元を指定します。
このファイルを編集する為には以下の情報が必要になります。(lightMPDではDHCPによるネットワークの設定は使用出来ません)
前準備として以下のネットワーク属性を調べて下さい。
上記の1.から5.までの情報はlightMPDが所属するネットワークにWindows環境がある場合はWindowsのipconfigコマンドで調べることが出来ます。
Mac の場合はネットワーク環境で調べる事が出来ます。
前準備として上記のネットワーク属性を調べて下さい。その上で、lightMPDのIPアドレスを決定します。
IPアドレスの割り振り方
以下、簡単にするためサブネットマスクが255.255.255.0の場合について説明します。サブネットマスクがこれ以外の場合はネットワーク管理者に尋ねて下さい。ネットワーク管理者がいない場合は、掲示板で問い合わせて下さい。(まじめに説明しようつすると2進数から説明しなければならなくなります。)
IPアドレスはネットワークアドレス+ホストアドレスになります。今、ネットワークアドレスは決まってますからホストアドレスを決めます。ホストアドレスはサブネットマスクが0の部分です。サブネットマスクが255の部分がネットワークアドレスになります。
例えば サブネットマスクが255.255.255.0の場合、IP アドレス 192.168.10.10は
ネットワークアドレス 192.168.10.0
ホストアドレス 10
になります。
サブネットマスクが255.255.255.0の場合、ホストドレスは0 から255までの範囲で割り当てることが出来ます。但し、0はネットワークアドレスと区別がつかなくなるため、また、255はブロードキャストアドレスという特別なアドレスとして使われるので、この2つは除きます。また、240も避けた方がいいでしょう。
さらにホストアドレスの条件としては同一ネットワーク内にホストアドレスの重複は許されないというのがあります。ネットワーク内に同一のホストアドレスを持つ機械が2台以上あると不可解な動作をします。
以上を踏まえて
lightmpd.confの設定例
#
#
#
[network]
interface=eth0
address=192.168.0.0
netmask=255.255.255.0
gateway=192.168.0.0
nameserver=192.168.0.0
domain=mydomain.jp
[ntp]
server=192.168.0.0
ntpd=no
timezone=Asia/Tokyo
[nasNASID1]
type=nfs
host=nashost
remotedir=audio_data
proto=tcp
rsize=65536
wsize=65536
[nas:NASID2]
type=cifs
host=nashost
remotedir=audio_data
remoteuser=usrid
remotepass=passwd
iocharset=utf8
file_mode=0644
dir_mode=0755
rsize=61440
wsize=65536
[mpd]
load_module=mpd-0.17.6dsdrt
music_directory=NASID1/Music,NASID2/Music
playlist_directory=NASID1/mpd/playlists
db_file=NASID1/mpd/tag_cache
sticker_file=NASID1/mpd/sticker.sql
log_file=/dev/null
[httpd]
enable=yes
[debug]
interfaces=yes
resolvconf=yes
ntpd=yes
ntpconf=yes
ifconfig=yes
cards=yes
mounts=yes
ps=yes
mpdversion=yes
date=yes
ntpq=yes
music=yes
messages=yes
lightmpd.confは通常のテキストファイルで、行末コードはCR+LFまたはLFです。また、漢字コードは含めないで下さい。
先頭が'#'の行はコメントとして無視されます。
lightmpd.confは複数のセクションからなり、[]で囲まれた行がセクションの開始になります。[]の中の文字列がセクション名になります。各セクション毎に属性を指定します。属性は属性名=属性値の形式で指定します。
ネットワークの設定 - [network]
ネットワークの設定はnetworkセクションで行います。設定する値がわからない場合は、ネットワークに接続されているWindows,Mac を使って調べる事が出来ます。
Windowsの場合はDOS窓から ipconfig /allコマンドを実行するとそのネットワークの属性が表示されます。
Macの場合はシステム環境設定->ネットワークでネットワークの属性が表示されます。
時刻の設定 - [ntp]
beagleboneのクロックはバッテリーでバックアップされていないので、電源をONするたびに時刻を設定する必要があります。
設定しないと時刻は2000年1月1日 9時0分0秒(日本時間)から計時されます。
CUBOXのクロックはバッテリーでバックアップされてます。
クロックの設定が必要ない場合はserve に"none"を指定して下さい。
lightMPDではntpという仕組みを利用して外部のサーバーから時刻を取得することにしました。
ntpセクションではntpの設定を行います。
serverにIPアドレスがセットされている場合以下の動作を行います。
以下のプロパティがあります。
lightMPDが所属するネットワークがインターネットにつながっていなくて、そのネットワーク内でntpサーバーを運用していない場合はserverに"none"を指定して下さい。時間の設定を行わないでシステムを続行します。(これはあまりおすすめしません)
NASの設定 - [nas:NASID]
本来なら、ネットワークドライブのマウントはautomount + nfs が基本と考えているのですが、autofsを用意できなかったのでシステム起動時に直接マウントする事にしました。
システム起動時にNASがReadyになってないとマウントに失敗し、mpdも起動しません。電源の起動順序には十分気をつけて下さい。
v0.02から複数台のnasをマウント出来るようになりました。nasを識別する為にNASIDを使用します。
NASIDはアルファベット、数字からなる任意の文字列で指定しますが、重複は出来ません。
NASIDにはnasが区別出来るように設定します。
以下の説明にNASIDが現れたら、ご自身で決定された物に置き換えて下さい。
複数台のnasを使う設定例
例]
[nas:pcm]
type=nfs
host=host1
remotedir=music
....
.....
[nas:dsd]
type=nfs
host=host2
remotedir=music
....
....
nas毎に下記の項目を指定します。下記の項目の内host,remotedirは重要なのでその調べ方を説明します。
nasを使っている場合は、nasに音楽データを保存するためのPCがnasと同じネットワーク上にあると思います。
そのPC(Windowsの場合)を使ってnasのhost,remotedirを調べます。(手元にWindows xp しかないのでWindows xpを例に説明します)
マイネットワークを開くとそのPCが使えるネットワークドライブの一覧が表示されます。
表示形式を詳細にすると以下の項目が表示されます。
コメント欄は¥¥Host¥remotedirの形式になっています。
¥¥Host¥remotedirでnasのマウント可能なディレクトリを示しています。これを共有ディレクトリと呼びます。
共有ディレクトリはnasの設定で複数もうける事が可能です。
lightMPDでマウントしたいnasの共有ディレクトリをしらべて、host,remotedirを知ることができます。
Windowsでは共有ディレクトリ名のhostの先頭文字は必ず大文字になるようです。実際のホスト名は全部小文字の場合もあるので注意して下さい。
ネットワーク内でdnsを運用していない場合はlightMPDからはホスト名でnasをアクセスする事はできません。
この場合は、ホスト名をnasのIPアドレスに置き換えて下さい。
例]
\\192.168.0.10\audio
(家庭内のネットワークの管理にdnsを使用している家庭はほとんどないと思います。)
次に、lightMPDでマウントした共有ディレクトリの扱いについて説明します。
lightMPDでは各nasのhost,remotedirで指定された共有ディレクトリを/var/lightMPD/nas/NASID にマウントします。
以下は同じディレクトリを指定しています。
Windows共有ディレクトリ名
¥¥host¥remotedir
lightMPDのディレクトリ
/var/lightMPD/nas/NASID
lightmpd.confではnas上のファイルやディレクトリを指定する場合、/var/lightMPD/nas の部分は省略します。
これがあると正しく動作しません。
例]
/var/lightMPD/nas/NASID/audio/flac は lightmpd.confでは NASID/audio/flac と指定します。
nas毎に以下の項目を設定します。
mpd関連ファイル - [mpd]
mpdで使用するファイルを指定します。
httpサーバー - [httpd]
httpサーバーの起動を指定します。
障害時の対応 - [debug]
beagleboneにはIOがないので、エラーがあった場合にその原因を表示する手段がありません。(シリアルコンソールを使えばそれが可能になります。)
lightMPDではシステム初期化後に各種設定ファイルや設定状況を把握するためのコマンドの結果をSDメモリ(lightMPD/status.txt)に記録することで、エラーの原因を突き止める方法をとりました。
通常は[debug]セクションの指定は行いませんが、思うように動作しない時に[debug]セクションを利用して下さい。他人に相談する時にも必要になる情報です。掲示板で問題を報告した場合、この情報の提供を求められる場合があります。
属性値にyesを指定した項目が記録されます。
配布パッケージに入っているlightmpd.confではデバッグ出力がすべてyesになってますが、ちゃんと動作することが確認できたら
デバッグセクションは削除して下さい。デバッグセクションがあると起動時にSDメモリへの書き込み動作が発生あまり気持ちよくありません。(SDメモリの書き込み回数には上限があります)
mpdの設定を行います。mpd.confは行末がCR+LFまたはLFのテキストファイルです。
lightMPDではrootファイルシステムがリードオンリーで外部記憶としてNASしか持たないので、
tag_cache,sticker.sql,playlist 等のデータはNAS 上に置くことを前提としてます。
下記の例はNAS上にmpdというディレクトリを作成しこれらのデータをこのディレクトリに置くように設定してあります。
また、DoPによるDSDの再生に対応しています。
mpd.confの例
realtime_option {
memlock "yes"
stack_reserve "2048"
heap_reserve "10240"
main_priority "OTHER:0"
player_priority "FIFO:53"
decoder_priority "OTHER:0"
update_priority "OTHER:0"
}
audio_output {
type "alsa"
name "uda"
device "hw:0,0" # optional
priority "FIFO:54" # optional
mixer_type "disabled"
dsd_usb "yes"
# use_mmap "yes"
buffer_time "150000"
period_time "37500"
}
###### dsd #######
decoder {
plugin "dsdiff"
enabled "yes"
}
###### decoder selector
decoder_selector {
suffix "mp3"
plugin "mad"
}
decoder_selector {
suffix "m4a"
plugin "ffmpeg"
}
decoder_selector {
suffix "wav"
plugin "audiofile"
scan_plugin "ffmpeg"
}
decoder_selector {
suffix "flac"
plugin "flac"
}
#
music_directory "/var/lib/mpd/Music"
playlist_directory "/var/lib/mpd/playlists"
db_file "/var/lib/mpd/tag_cache"
#sticker_file "/var/lib/mpd/sticker.sql"
log_file "/var/lib/mpd/mpd.log"
pid_file "/var/run/mpd.pid"
state_file "/var/lib/mpd/state"
user "root"
group "root"
bind_to_address "any"
port "6600"
#
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
metadata_to_use "artist,album,title,track,genre,date,disc"
samplerate_converter "Linear Interpolator"
#samplerate_converter "ZOH Interpolator"
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
default_permissions "read,add,control,admin"
mixer_type "disabled"
#
audio_buffer_size "8192"
buffer_before_play "50%"
#
filesystem_charset "UTF-8"
id3v1_encoding "UTF-8"
mpd.confの詳細はmpdのドキュメントを参照して下さい。
lightmpd.confの[mpd]セクションで設定を行うためmpd.confは配布パッケージのものを使って下さい。
とくに下記の値は変更しないで下さい。
metadata_to_useはすでにあるtag_cacheを使う場合はそれに併せて設定します。