Home‎ > ‎

lightMPD - lightweight Music Player Daemon (MPD)

お知らせ

開発を優先しているために、このページの更新が遅れています。最新情報はinfoを参照してください
lightMPDはNAS上の音楽ファイルを再生します。USBメモリやHDDなどのローカルなデバイス上の音楽ファイルを再生する事はできません。

現在下記の機種をサポートしています。


kernelの最新版については

linux-4.4rt3を公開しましたを参照して下さい。



概要

lightMPDMPD(Music Player Daemon)を動作させることに特化したLinuxのディストリビューションです。
ネットワークで接続されたストレージ内の音楽ファイルをUSB接続のDAC経由で再生するネットワークプレーヤとして動作します。

特徴

  • ルートファイルシステムは約24M バイトとコンパクトですべてメモリ上で動作します。
  • ルートファイルシステムのファイルシステムはromfsでカーネルの動作も軽量です。
  • インストールが簡単でネットワーク、NASマウントおよびMPDの設定はWindows環境で行えます。
  • 動作するハードウェア

MPD(Music Player Daemon)について

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にまとめられてます。

BeagleBone BeagleBone Blackについて

最近はやりのARMアーキテクチャーのシングルボードコンピュータです。先代のBeagleBoard,BeagleBoard-xmはARMアーキテクチャーのシングルボードコンピュータの走りのような存在です。

BeagleBoneは、イーサネット、USB、GPIO(汎用の入出力ポート)以外の入出力を持ちません。BeagleBone BlackはBeagleBoneに対してCPUの高性能化、メモリの増大をはかりさらにビデオ出力としてHDMIポートを備えたものです。

もともと機器の制御用途の為のもののようですが、以下の点でオーディオ用途に最適だと思います。
  • 消費電力が低いので、良質な電源を用意しやすい
  • 余計な回路がないのでノイズなどの発生源が少ない
  • サードパーティからケースもいくつか販売されておりオーディオ機器と一緒においても違和感がない
OSとしては
等の主要ディストリビューションが公開されています。また、github上でLinuxのカーネルのパッチも公開されています。

日本では秋月電子通商amazon等多くのショップで購入出来ます。

CUBOXについて


仕様

lightMPDはNAS上の音楽ファイルを再生する事に特化しました。USB接続のHDDやSDメモリ内のファイルを再生する事は考えていません。
再生可能なファイル形式は
  • wav
  • alac,aiff
  • flac
  • ogg
  • dsf
  • diff
  • その他
です。

kernel

linux-3.8.13に3.8-rtのパッチを当てたものです。

kernelのバージョン

# uname -a
Linux beaglebone 3.8.13-rt9-00899-g43e6461-dirty #83 PREEMPT RT Sun Aug 25 13:33:06 JST 2013 armv7l GNU/Linuxke

MPD

mpd-0.17.6とmpd-0.18.6の2つのバージョンを用意しました。
いずれのバージョンもDSD機能の強化されたmpd-dsdを採用しました。
mpd-dsdでは正式版にのこっているdsd decoder 周りのバグや不足している機能を追加したもので音質などのチューニングは行われていません。
したがって、音質に関しては正式版と同じです。
mpd-dsdで強化された点は以下の通りです。
  • mpd-0.17.6
    • dsf,diffのid3タグのハンドリング
    • dsf最後に派生するノイズへの対応
    • dsf,diff再生時に発生するmpdのハングアップへの対応
    • dsd再生時の早送り、巻き戻し
      mpd -0.17.6 ではdsdに限らず早送り、巻き戻し動作が不安定ですが、buffer.c.diffを当てることにより安定に動作するようになりました。
  • mpd-0.18.6
    • dsf.diff再生時に派生するmpdのハングアップへの対応

さらに以下のパッチを当ててます。

mpd -Vは以下のようになります。
  • mpd-0.17.6

mpd -Vの結果

mpd (MPD: Music Player Daemon) 0.17.6-DSD

Copyright (C) 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright (C) 2008-2012 Max Kellermann <max@duempel.org>
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Decoders plugins:
 [mad] mp3 mp2
 [vorbis] ogg oga
 [oggflac] ogg oga
 [flac] flac
 [sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2
 [audiofile] wav au aiff aif m4a mp4 flac
 [dsdiff] dff
 [dsf] dsf
 [faad] aac
 [mp4ff] m4a m4b mp4
 [ffmpeg] 16sv 3g2 3gp 4xm 8svx aa3 aac ac3 afc aif aifc aiff al alaw amr anim apc ape asf atrac au aud avi avm2 avs bap bfi c93 cak cin cmv cpk daud dct divx dts dv dvd dxa eac3 film flac flc fli fll flx flv g726 gsm gxf iss m1v m2v m2t m2ts m4a m4b m4v mad mj2 mjpeg mjpg mka mkv mlp mm mmf mov mp+ mp1 mp2 mp3 mp4 mpc mpeg mpg mpga mpp mpu mve mvi mxf nc nsv nut nuv oga ogm ogv ogx oma ogg omg psp pva qcp qt r3d ra ram rl2 rm rmvb roq rpl rvc shn smk snd sol son spx str swf tgi tgq tgv thp ts tsp tta xa xvid uv uv2 vb vid vob voc vp6 vmd wav webm wma wmv wsaud wsvga wv wve
 [pcm]

Output plugins:
 null fifo pipe alsa

Archive plugins:
 [bz2] bz2

Input plugins:
 file archive curl ffmpeg mms

Playlist plugins:
 extm3u m3u xspf pls asx rss lastfm cue cue

Protocols:
 file:// http:// mms:// mmsh:// mmst:// mmsu:// gopher:// rtp:// rtsp:// rtmp:// rtmpt:// rtmps://


  • mpd-0.18.6

mpd -Vの結果

Music Player Daemon 0.18.6-dsd

Copyright (C) 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright (C) 2008-2013 Max Kellermann <max@duempel.org>
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Decoders plugins:
 [mad] mp3 mp2
 [vorbis] ogg oga
 [oggflac] ogg oga
 [flac] flac
 [sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2
 [audiofile] wav au aiff aif m4a mp4 flac
 [dsdiff] dff
 [dsf] dsf
 [faad] aac
 [ffmpeg] 16sv 3g2 3gp 4xm 8svx aa3 aac ac3 afc aif aifc aiff al alaw amr anim apc ape asf atrac au aud avi avm2 avs bap bfi c93 cak cin cmv cpk daud dct divx dts dv dvd dxa eac3 film flac flc fli fll flx flv g726 gsm gxf iss m1v m2v m2t m2ts m4a m4b m4v mad mj2 mjpeg mjpg mka mkv mlp mm mmf mov mp+ mp1 mp2 mp3 mp4 mpc mpeg mpg mpga mpp mpu mve mvi mxf nc nsv nut nuv oga ogm ogv ogx oma ogg omg psp pva qcp qt r3d ra ram rl2 rm rmvb roq rpl rvc shn smk snd sol son spx str swf tgi tgq tgv thp ts tsp tta xa xvid uv uv2 vb vid vob voc vp6 vmd wav webm wma wmv wsaud wsvga wv wve
 [pcm]

Output plugins:
 null fifo pipe alsa

Archive plugins:
 [bz2] bz2

Input plugins:
 file archive curl ffmpeg mms

Playlist plugins:
 extm3u m3u xspf pls asx rss cue cue

Protocols:
 file:// http:// https:// mms:// mmsh:// mmst:// mmsu:// gopher:// rtp:// rtsp:// rtmp:// rtmpt:// rtmps://



decoder_selector

mpdではbuild時に指定すると複数種類のデコーダーを組み込む事ができます。
どのデコーダーが組み込まれているかはmpd -V コマンドで確認できます。
1つのファイル種別に対して複数のデコーダが組み込まれている場合はDecoders plugins: に示されている順で走査されます。
例えば、上記の様なdecoder構成の場合、"wav"ファイルに対してはsndfileが使用されます。
"wav"のデコーダーとしてaudiofileを使いたい場合は、mpd.confでsndfileを取り除きます。
sndfileを取り除いたので"aiff","aif"もaudiofileでデコードされることになります。
このように、mpdではデコーダー単位のon/offは出来てもファイル種別毎にデコーダーを指定する事が出来ません。
それを可能にするためにdecoder_selector機能を追加しました。
decoder_selectorはmpd.confでファイル種別毎にデコーダー及びタグデータをスキャンするデコードを指定します。

decoder_selector {
     suffix            "wav"
     plugin           "sndfile"
     scan_plugin   "sndfile"
}

decoder_selector {
     suffix            "m4a"
     plugin           "audiofile"
     scan_plugin   "ffmpeg"
}

主なファイル種別で使えるデコーダーは以下の通りです。
  • mp3
    mad,ffmpeg
  • ogg
    vorbis,oggflac
  • flac
    flac,audiofile,ffmpeg
    audiofileデコーダはタグのスキャンは出来ません。
  • m4a
    audiofile,ffmpeg,mp4ff(0.18.6では未サポート)
    但し、audiofile,mp4ffデコーダではiTunesで作成したm4aは再生出来ませんでした。
    audiofileデコーダはタグのスキャンは出来ません。
  • aac
    faad,ffmpeg
パッチはここからダウンロードできます。

問題点(beaglebone kernel 3.8.13-rt14)

  • USB-DACを一度不活性化(ケーブルを外す等)するとbeagleboneを再起動するまで認識しなくなる。
  • Tennor 7022Lを使ったDDCでは電源投入後に接続しても認識しない。電源投入前に接続されていればちゃんと動作する。

動作確認オーディオデバイス


CUBOX版の仕様

CUBOX版はBeaglebone版と機能は同じです。
以下の制限があります。
  • estatは使えません。
  • 内蔵オーディオインターフェイス( 光)は使えません。
  • オーディオデバイス以外のUSBデバイスは使えません。

kernelのバージョン

lightMPDcubox-V0.03のカーネル

 uname -a
Linux lightmpd 3.8.13-rt14-lightMPD@cubox #27 PREEMPT RT Sun Dec 8 00:32:37 JST 2013 armv7l GNU/Linux


取り扱い上の注意

USB-DDC,DAC はCUBOXの上段のUSBポートに接続して下さい。USBハンドラーのプライオリティの設定は上段のハンドラーにしか行っていません。

 問題点

特にありません。


ダウンロード

まだ、問題はありますが一応動作する物が出来たの公開します。


kernel 3.12.xについて

beaglebone,cubox用のkernel-3.12.xを公開しました。3.12.xではM2TECH社のドライバーが正式に採用されました。

beaglebone
バージョンは3.12.6-rt9。
3.8.13-rt14にあった不具合はすべてクリアーされてますが、新たに以下の不具合があります。
  • 再生中にDDCを不活性化すると、USBドライバーがハングアップします。
  • M2TECHのドライバーは組み込んであります。
    HIFACEは認識はしますが、再生するとUSBドライバーがハングアップします。それ以外のデバイスは未テストです。
  • UDAではDSD128の再生は出来ません。ノイズになります。XMOSではエラーになり再生も出来ません。

kernelの入れ替えは以下の手順で行って下さい。
  • uImage-bb-3.12.6rt9.tgzをダウンロードします
  • 上記ファイルを解凍します、以下のファイルが解凍されます。
    • uImage
    • dtbs\am335x-bone.dtb
    • dtbs\am335x-boneblack.dtb
  • 解凍されたファイルをlightMPDをインストールしたSDメモリにコピーします。

CUBOX

バージョンは3.12.6-rt9。
M2TECHのドライバーはHIFACEでテストを行ってます。
HIFACEでは192KHz/24bitのflacでたまに音が途切れる事があったので、ドライバー内のバッファー容量を大きくしてあります。(kernelにパッチを当てました)
以下の不具合を確認してます。
  • UDAではDSD128の再生は出来ません。ノイズになります。XMOSではエラーになり再生も出来ません。

kernelの入れ替えは以下の手順で行って下さい。
  • uImage-cubox-3.12.6rt9をダウンロードします。
  • 上記ファイルをlightMPDをインストールしたSDメモリ内のuImageにコピーします。

DSD128の再生について

UDAでDSD128を再生すると、DDC側は44KHzでリンクします。当然PCMと認識するのでノイズに成ります。
XMOSではエラーになり再生できません。
この現象はbeaglebone,cuboxとも発生します。
3.12.xでは352.8KHzの設定に不具合があるのかもしれません。


インストール

用意する物

  • beaglebone、beaglebone blackまたはCUBOX
  • micro SD メモリーカード
  • micro SD メモリーカードの読み書きが可能なWindowsまたはMac環境

インストール方法

  1. beaglebone最新版(lightMPD-v0.04.tgz)またはcubox最新版(lightMPDcubox-v0.04.tgz)ード
  2. lightMPD-v0.04.tgzまたはlightMPDcubox-v0.04.tgzを解凍する
  3. micro SDメモリーカードをFAT32でフォーマットする
    • パーティションを複数に分割する場合は先頭のパーティションにインストールする
    • 容量は100MByte以上
    • beagleboneの場合は先頭パーテションはアクティブにする、beaglebone blackの場合はどちらでもよい
      • 私が使っているWndows XPではパーテションをアクティブにすることができないので
        EaseUS Partition Master 9.2.2 Free Editionを使いました。
      • Macでパーティションをアクティブにする方法はわかりません。
  4. 2.で解凍したデータを3.でフォーマットしたパーテションにコピーする 、microSDカードに割り当てられたドライブが下図のようになっていればインストールは完了

    beaglebon 版lightMPD ディレクトリツリー

    Z:¥
    │  MLO
    │  u-boot.img
    │  uEnv.txt
    │  uImage
    │  uInitrd
    │  
    ├─dtbs
    │      am335x-boneblack.dtb
    │      am335x-bone.dtb
    │      
    └─lightMPD
            mpd-0.17.6dsdrt
            mpd-0.18.6dsdrt
            mpd.conf
            lightmpd.conf
            

    CUBOX版lightMPDのディレクトリーツリー

    z:¥
    │  uInitrd
    │  uImage
    ├─lightMPD
    │      mpd-0.17.6dsdrt
     |       mpd-0.18.6dsdrt
    │      mpd.conf
    │      lightmpd.conf
    └─boot
            boot.txt
            boot.scr


    設定

    lightMPDディレクトリ内にあるファイルでシステムの設定を行います。

    1. lightMPD/lightmpd.conf
      ネットワーク、NASの設定を行います。。
    2. lightMPD/mpd.conf
      mpdの設定を行います。
    3. mpd
      mpdの実行モジュールです。mpdがバージョンアップされた場合にこのファイルを置き換えます。

    lightmpd.conf

    lightmpd.conf でlightMPDが所属するネットワークや音楽ファイルが格納されているNASの諸元を指定します。

    このファイルを編集する為には以下の情報が必要になります。(lightMPDではDHCPによるネットワークの設定は使用出来ません)

    前準備として以下のネットワーク属性を調べて下さい。

    1. ネットワークアドレス
    2. サブネットマスク
    3. デフォルトゲートウェイのIPアドレス
    4. DNS サーバーのIPアドレス
    5. DNS Suffix
    6. NASのIPアドレス,またはホスト名
      上記の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台以上あると不可解な動作をします。

    以上を踏まえて
    1. ネットワーク内のホストアドレスが静的に割り当てれている場合(DHCPを使っていない)
      ルータ、NAS、PCなどに割り振られているアドレス以外から選ぶ
    2. ネットワーク内のホストアドレスがDHCPによって管理されている場合
      DHCPサーバーの設定で割り当てを除外するアドレスの範囲などの設定があるので、
      その範囲から未使用のホストアドレスを選ぶ

    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の場合はシステム環境設定->ネットワークでネットワークの属性が表示されます。

    • interface
      networkの指定を行うインターフェイスを指定します。eth0を指定して下さい。
    • address
      lightMPDに割り当てたIPアドレスを指定します。
    • netmask
      ネットマスクを指定します。下記の値を設定します。。
      • Windowsの場合はipconfigコマンドのSubnet Mask
      • Mac の場合はネットワークのサブネットマスク
    • gateway
      デフォルトゲートウェイのIPアドレスを指定します。下記の値を設定します。
      • Windowsの場合はipconfigコマンドのDefault Gateway
      • Macの場合はネットワークのルータ
    • nameserver
      ネームサーバーのIPアドレスを指定します。下記の値を設定します。
      • Windowsの場合はipconfigコマンドのDNS Server
      • Macの場合はネットワークのDNS サーバー
    • domain
      ドメイン名を指定します。下記の値を設定します。
      • Windowsの場合ははipconfigコマンドのConnection-specific DNS Suffix
      • Macの場合はネットワークの検索ドメイン

    時刻の設定 - [ntp]

    beagleboneのクロックはバッテリーでバックアップされていないので、電源をONするたびに時刻を設定する必要があります。
    設定しないと時刻は2000年1月1日 9時0分0秒(日本時間)から計時されます。
    CUBOXのクロックはバッテリーでバックアップされてます。
    クロックの設定が必要ない場合はserve に"none"を指定して下さい。

    lightMPDではntpという仕組みを利用して外部のサーバーから時刻を取得することにしました。
    ntpセクションではntpの設定を行います。
    serverにIPアドレスがセットされている場合以下の動作を行います。
    • 起動時にntpdateプログラムによりサーバーの時刻をクロックにセットする。
    • 稼働中はntpサーバーによりサーバーの時刻をクロックを同期します。
    以下のプロパティがあります。
    • server
      ntpサーバーのサーバー名またはIPアドレスを指定します。サーバー名を指定する場合は、networkセクションのnameserverが正しく設定されている必要があります。
      設定値は以下のようにして調べます。
      • ネットワーク内でntpサーバーを運用している場合はそのアドレス
      • お使いのISPでntpサーバーを運用している場合はそのアドレス
      • NASにntpサーバーの指定があり、設定している場合はその設定値
      • インターネット上の適当なサーバーのホスト名またはアドレス
        推奨公開サーバから選ぶ
    • ntpd
      ntpサーバーを起動する場合はyesを指定します。起動しない場合はnoを指定します。デフォルトはyesです。
      こまめに電源をON/OFFする場合はntpサーバーは必要ありません。
      電源を常時ONにしておく場合はntpサーバーを起動したほうがいいです。
    • timezone
       タイムゾーンを指定します。日本の場合は"Asia/Tokyo"を指定します。
    lightMPDが所属するネットワークがインターネットにつながっていなくて、そのネットワーク内でntpサーバーを運用していない場合はserverに"none"を指定して下さい。時間の設定を行わないでシステムを続行します。(これはあまりおすすめしません)

    NASの設定 - [nas:NASID]

    本来なら、ネットワークドライブのマウントはautomount + nfs が基本と考えているのですが、autofsを用意できなかったのでシステム起動時に直接マウントする事にしました。
    システム起動時にNASがReadyになってないとマウントに失敗し、mpdも起動しません。電源の起動順序には十分気をつけて下さい。

    v0.02から複数台のnasをマウント出来るようになりました。nasを識別する為にNASIDを使用します。
    NASIDはアルファベット、数字からなる任意の文字列で指定しますが、重複は出来ません。
    NASIDにはnasが区別出来るように設定します。
    • nasのホスト名
    • nasの用途
      例]
             music ,  avdata,  wave  等
    • 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共有ディレクトリ名 lightMPDのディレクトリ
     ¥¥host¥remotedir /var/lightMPD/nas/NASID

    lightmpd.confではnas上のファイルやディレクトリを指定する場合、/var/lightMPD/nas の部分は省略します。
    これがあると正しく動作しません。

    例]
         /var/lightMPD/nas/NASID/audio/flac   は lightmpd.confでは  NASID/audio/flac  と指定します。

    nas毎に以下の項目を設定します。
    • type
      ファイルシステムのタイプを指定します。以下の値を指定します。
      • nfs
        nfsでマウントします。
      • nfs4
        nfsのプロトコルバージョン4でマウントします。(これは未テストです)
      • cifs(nfs以外)
        cifsでマウントします。
    • host
      NASのホスト名またはIPアドレスを指定します。lightMPDの属するネットワークがdnsで管理されている場合はホスト名が使えます。それ以外の場合はIPアドレスを指定して下さい。(ネットワークがdnsで管理されていない場合、Windowsからホスト名で参照できてもlightMPDからはホスト名でNASを参照する事は出来ません。)
    • remotedir
      NASの共有ディレクトリを指定します。先頭の¥や/は含まないで下さい。
    • remoteuser
      cifsでマウントする時にNASにログインする際のユーザ名を指定します。
    • remotepass
      cifsでマウントする時にNASにログインする際のパスワードを指定します。
    • iocharset
      cifsでマウントする時にNASのローカルパス名の文字コードを指定します。よくわからない場合はutf8を指定して下さい。これでファイル名が文字化けする場合はutf8以外のコードが採用されているのでシステムに併せて設定して下さい。(詳しい人に尋ねて下さい)
    • proto
      nfsでマウントするときのプロトコルを指定します。以下の値を設定します。デフォルト値はtcpです。
      • tcp
      • udp
    • wsize
      ファイル書き込み時のバッファーサイズを指定します。
      1024の倍数を指定します。この値の上限はサーバーによって異なります。
      lightMPDではnasに書き込む事はほとんどないのでデフォルト値でいいと思います。
      デフォルト値は
      • nfs(tcp)      -      65536
      • nfs(udp)     -         8192
      • cifs            -       65536
    • rsize
      ファイル読み込み時のバッファーサイズを指定します。
      1024の倍数を指定します。この値の上限はサーバーによって異なります。
      この値の最適値はサーバーやサーバーとlightMPDに介在するネットワーク機器(スイッチングハブ、ルータ等)によって異なります。
      介在するネットワーク機器の性能によっては少なめの値のほうが転送速度が向上する場合があります。
      デフォルト値は
      • nfs(tcp)       -    65536
      • nfs(udp)      -       8192
      • cifs             -     61440

    mpd関連ファイル - [mpd]

    mpdで使用するファイルを指定します。

    • music_directory
      mpdが管理する音楽ファイルの格納されているディレクトリを指定します。複数のディレクトリを","で区切って指定する事が出来ます。以下にmusic_directoryの記述の仕方を説明します。

      music_directoryの設定方法

      muisic_directory は
           music_directory=dir1[,dir2,...] 

      のように設定します。
      ここでdir1,dir2はmpdで再生したい音楽ファイルが格納されているnas上のディレクトリです。
      nas上のディレクトリの指定方法について説明します。

      nasは/var/lightMPD/nas/NASIDにマウントされます。

      例えば
      [nas:music]
         host=nashost1
         remotedir=public

      で定義されたnasは/var/lightMPD/nas/music にマウントされます。

      また、このnasをWindowsのマイネットワークで見ると ¥¥Nashost1¥public となります。
      このディレクトリの配下が

       mpd フォルダ mpdのtag_cache等を保存
       pcm フォルダ flac,alac,wav等のpcm系の音楽ファイル
       dsd フォルダ dsf,diff等のdds系の音楽ファイル
       My eBook フォルダ mpdでは管理したくないディレクトリ
       My Pictures フォルダ mpdでは管理したくないディレクトリ

      のようになっている場合、

      各ディレクトリの正式ディレクトリ名は

       Windows    lightMPD
      ¥¥Nashost1¥public¥mpd    /var/lightMPD/nas/music/mpd
      ¥¥Nashost1¥public¥pcm /var/lightMPD/nas/music/pcm
      ¥¥Nashost1¥public¥dsd  /var/lightMPD/nas/music/dsd
      ¥¥Nashost1¥public¥My eBook  /var/lightMPD/nas/music/My eBook
      ¥¥Nashost1¥public¥My Pictures /var/lightMPD/nas/music/My Pictures

      になります。(linuxではディレクトリの区切りが'/'になります)

      いま、mpdの音楽ファイルが格納されているディレクトリとして
         ¥¥Nashost1¥public¥pcm
         ¥¥Nashost1¥public¥dsd

      を指定したいのですから、music_directoryの指定は

        music_directory=/var/lightMPD/nas/music/pcm,/var/lightMPD/nas/music/dsd

      となります。
      /var/lightMPD/nas は冗長なので省略します。(/var/lightMPD/nas があるとエラーになります) 
      従って、music_directoryの指定は

         music_directory=music/pcm,music/dsd


      になります。

      さらに
        [nas:audio]
             host=avserver
             remotedir=avdata

      で指定された共有ディレクトリ \\Avserver\avdata\Music もmpd に管理させたいなら music_directoryは

        music_directory=music/pcm,music/dsd,audio/Music

      になります。


    • playlist_directory
      mpd.confのplaylist_directoryです。nas上のディレクトリを指定します。
      例]
           playlist_directory=NASID/mpd/playlists
    • db_file
      mpd.confのdb_fileです。nas上のファイルを指定します。ファイル名は"tag_cache"にして下さい。
      例]
           db_file=NASID/mpd/tag_cache
    • sticker_file
      mpd.confのsticker_fileです。nas上のファイルを指定します。ファイル名はsticker.sqlにして下さい。
      例]
          sticker_file=NASID/mpd/sticker.sql
    • log_file
      mpd.confのlog_fileです。nas上のファイルを指定します。
      logが必要ない場合は/dev/nullを指定します。

    httpサーバー - [httpd]

    httpサーバーの起動を指定します。
    • enable
      yesを指定するとhttpサーバーが起動します。それ以外の値を指定した場合はhttpの起動は行われません。

    障害時の対応 - [debug]

    beagleboneにはIOがないので、エラーがあった場合にその原因を表示する手段がありません。(シリアルコンソールを使えばそれが可能になります。)
    lightMPDではシステム初期化後に各種設定ファイルや設定状況を把握するためのコマンドの結果をSDメモリ(lightMPD/status.txt)に記録することで、エラーの原因を突き止める方法をとりました。
    通常は[debug]セクションの指定は行いませんが、思うように動作しない時に[debug]セクションを利用して下さい。他人に相談する時にも必要になる情報です。掲示板で問題を報告した場合、この情報の提供を求められる場合があります。

    属性値にyesを指定した項目が記録されます。
    • interfaces=yes
      /etc/network/interfacesを記録します。
    • resolvconf=yes
      /etc/resolv.confを記録します。
    • ntpd=yes
      /etc/default/ntpdを記録します。
    • ntpconf=yes
      /etc/ntp.confを記録します。
    • ifconfig=yes
      ifconfig -a の実行結果を記録します。
    • cards=yes
      /proc/asound/cardsを記録します。
    • mounts=yes
      /proc/mountsを記録します。
    • ps=yes
      ps  コマンドの実行結果を記録します。
    • mpdversion=yes
      mpd -V  の実行結果を記録します。
    • date=yes
      dateコマンドの実行結果を記録します。
    • ntpq=yes
      ntpq -p の実行結果を記録します。
    • music=yes
      ls -lt /var/lib/mpd/Music の結果を表示します。
    • messages=yes
      起動直後の/var/log/messagesを記録します。
    配布パッケージに入っているlightmpd.confではデバッグ出力がすべてyesになってますが、ちゃんと動作することが確認できたら
    デバッグセクションは削除して下さい。デバッグセクションがあると起動時にSDメモリへの書き込み動作が発生あまり気持ちよくありません。(SDメモリの書き込み回数には上限があります)

    mpd.confの設定 

    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は配布パッケージのものを使って下さい。
    とくに下記の値は変更しないで下さい。
    • music_directory
    • playlist_directory
    • db_file
    • sticker_file
    metadata_to_useはすでにあるtag_cacheを使う場合はそれに併せて設定します。

    使い方および動作確認

    システムの起動および終了の手順について説明します。

    起動方法

    インストールおよび設定が終わったSDメモリをBeagleboneに装着し電源を投入することにより起動します。
    • ブートからMPDが起動するまで20から30秒を要します。
    • lightMPDではSSHやtelnet等のリモートログインの機能がありません。
    • MPDの起動の確認はMPDクライアントで行って下さい。
    • MPD起動後はSDメモリを取り外してもかまいません。

    終了方法

    電源を切断して下さい。
    lightMPDではブート終了後SDメモリはアンマウントされてますので、いつ電源を切断しても問題ありません。
    但し、tag_cacheのアップデート中は避けた方がいいでしょう。

    動作確認

    lightMPDの起動の確認はMPDクライアントから接続を試みることで出来ます。
    lightMPDの起動開始から1分以上経過してもMPDクライアントと接続できない場合はlightMPDの起動に失敗していると考えられます。
    lightMPDの起動失敗の原因として以下のものが考えられます。
    • ネットワークの設定に不備がある
      pingコマンドがエラーになる場合はネットワークが正しく設定されてません。
       [debug]セクションのinterfaces,ifconfigをyesにしてブート後のstatus.txt を確認して下さい。
    • mpdが起動しない
       pingコマンドが成功する場合はmpdの起動に失敗してます。原因としては以下 のものが考えられます。
      •  nasの設定に不備がある
        nasのマウントに失敗した為、tag_cache の読み込みに失敗した場合です。
        [debug]セクションのmountsをyesにしてstatus.txtを確認する事でマウントが正しくされてるかわかります。
      •  mpd.confの設定に誤りがある
        nasのマウントが正常に行われているのにmpdが起動しない場合はmpd.confの設定に誤りがあります。music_directory や playlist_directory に存在しないディレクトリやファイルを指定した場合はmpdはエラーになります。
    問題が解決しない場合は掲示板で相談して下さい。

    Tips

    mpod,mpadにおけるカバーアートの表示

    v0.03からhttpサーバーが使えるようになりました。httpサーバーを起動する事によりlightMPDからcover artイメージをダウンロード出来るようになります。
    ブラウザーでアクセスすると日本語(UTF_8)を含むディレクトリが文字化けしますが、cover artのダウンロードには影響ありません。
    cover artのダウンロードの確認はmpad,mpodおよびmpdroidで行いました。

    mpad,mpodの場合

    Local Cover Art設定のURLで以下の用に設定して下さい。
        http://lightmpdのipアドレス/Music

    mpdroidの場合

     Cover art settings の Path to musicを以下のように設定して下さい。
        /Music/


    下記の内容はv0.02以前に書いた物ですが、v0.03でもlightMPD上でhttpサーバーを起動したくない場合は以下の方法がつかえます。
    この方法はNASが1台の時に有効です。複数台のNASを使う場合には利用できません。

    ipod,ipadで動作するmpdのクライアントmpod,mpad(以下mpadと略します)にはのアルバムのカバーアートを表示する機能があります。

    mpadではこの機能を使用する為には音楽ファイルと同じディレクトリにそのカバーアート写真をjpg形式のファイルで置いておく必要があります。ファイル名は任意ですが、通常Folder.jpgを使う場合が多いようです。(以下カバーアートのファイルをFolder.jpgとして説明します)さらにこのFolder.jpgを取り込む為にhttpプロトコルでサーバーからGETします。サーバーはmpdが動作しているサーバーである必要はありません。

    私はVoyage mpdをつかっていた頃から、Voyage mpd上のHTTPサーバーは停止し、カバーアートはNAS上のHTTPサーバー経由で取り込んでました。lightMPDではHTTPサーバーが動作していないのでカバーアートはNASから取り込む事にします。以下にその方法を説明します。

    私が使っているNASはQNAP社の製品で、Webファイルマネージャーという機能があり、HTTPプロトコルでファイルの読み書きが行えます。この機能を使ってNASからmpadにカバーアートを取り込みます。

     NAS  QNAP TS-219PII
     NASのホスト名 nashost
     NASの共有ディレクトリ /share
     音楽の格納サレテイルディレクトリ /share/Music
     lightMPDのマウントポイント /audio   ->   \\Nashost\share
     mpd.confのmusic_direcotry /audio/Music

    上記の環境を例に説明します。

    QNAPのWebファイルマネージャーはhttp://nashost:8080/cgi-bin/filemanager でNASのルートディレクトリにアクセスできます。例えばlightMPD 上のファイル/audio/Music/atrist1/album1/Folder.jpg はqnapのWebファイルマネジャーではhttp://nashost:8080/cgi-bin/filemanager/share/Music/atrist1/album1/Folder.jpgになります。

    mpadでは再生中の音楽ファイルが/audio/Musci/atrist1/album1/title1.flac の場合、"Local Cover ArtのURL"/artist1/album1/"Local Cover ArtのCoverFilename"
    をGETしてカバーアートを取り込みます。

    以上の事からmpadのLocal Cover Art 設定で

    URL                       http://nashost:8080/cgi-bin/filemanager/share/Music
    Cover Filename       Folder.jpg

    とすることで再生中のカバーアートをnas経由で取り出す事ができます。

    qnap以外のnasでもWebファイルマネージャーのような機能があると思いますので、以上を参考にしてトライして見て下さい。

    beaglebone, beaglebone blackのケース

    beagleboneは基板剥き出しなので、オーディオを趣味とする人には敷居が高いかもしれません。
    Alix 3d2 がヒットしたのもまとまりのいいケースが用意されていたのも一因でしょう。
    beagleboneも知名度が上がってきためか、最近ケースが各種販売されるようになりました。

    Adafruit Bone Box

    Adafruit Bone Box
    このケースはBeaglebone, Beaglebone blackいずれにも使えます。私はbeaglebone用に使ってます。
    材質はアクリルで基板上のLEDが見えるのはいいのですが、オーディオ的にはどうなんでしょうか?
    amazonで購入できます。

    Audio GIS BeagleBone Black Case

    AudioGis BeagleBone Black Case
    オーストラリア製の金属製ケースです。私はこれを使ってます。
    名前の通りBeaglebone Black専用です。BeagleboneではSDメモリのスロットが隠れてしまいます。
    底板一面にゴムが貼り付けてあって、それが滑り止めになってます。
    見た目もなかなかいいのですが、基板上のLEDが見えないので電源が入っているかすら確認できません。
    以前、日本のアマゾンで買えたのですが、いまはカタログからも外されたようです。

    LGX BeagleBone Black Case

    LGX Beaglebone Black Case



    これも金属ケースです。このケースは使ったことがありません。
    米アマゾンで$17.95なのですが、残念ながら日本からは購入できません。
    ebayに似たようなケースが$36.68で出品されてます。
    手軽に買えるなら是非つかってみたいケースです。


    beagleboneの電源




    サブページ (1): v0.01conf