lightMPD を使ってみる
lightMPD という MPD(Music Player Daemon)を動作させることに特化したディストリビューションが気になっていました。もともとは BeagleBone 用に開発されたようですが lightMPD の利用者から Raspberry Pi 用の開発を強くお願いされて Rapsberry Pi、Raspberry Pi 2 用がこの2月にリリースされました。Raspberry Pi A+/B+ ハイレゾ DAC カードの利用者の方が I2S DAC の可能性を感じ開発者にお願いしたことがきっかけのようで、多少なりとも筆者の開発した I2S DAC が lightMPD の Raspberry Pi 用の開発の後押しをしたというのはうれしい事です。
lightMPD はネットワークストレージ上にある音楽ファイルの再生を前提としていて Volumio や RuneAudio のようにローカルの USB メモリや SD カードに保存された音楽ファイルを再生する機能はありません。個人的にはローカルストレージ機能があった方が使い勝手は良いのかなと思いますが。さて、ここでは Rapsberry Pi 2 にlightMPD をインストールして音を聞いてみます。
この記事は lightMPD の本家はもちろん IrBerry DAC の開発者であるたかじんさんのこのページを参考にしています。
lightMPD-v0.09 のインストール
Rasbperry Pi 2 用の lightMPDrpi2-v0.09.tgz をデジファイのおとからダウンロードし、FAT32 でフォーマットしたマイクロ SD カードに展開します。CentOS 6.6 マシンにマイクロ SD を挿入し /media/<label name>にマウントされたとして、lightMPDrpi2-0.09.tgz が置いてあるディレクトリで
tar xvfz lightMPDrpi2-0.09.tgz -C /media/<label name>
を実行します。
Volumio や RuneAudio ではダウンロードしたイメージファイルを SD カードに書き込めばあとは WEBUI から NAS のマウントの設定等が行えますが lightMPD では設定ファイルをテキストエディタで編集する必要があります。
設定ファイルの編集
展開してできた lightMPD ディレクトリの lightMPD.conf ファイルを自分の環境に合わせて編集します。設定するのは network セクションと nas セクションと mpd セクションです。
ネットワークの設定
lightMPD をインストールする Raspberry Pi 2 の IP アドレス、ネットマスク、ゲートウェイ、ネームサーバーを指定します。DHCP を動かしている場合は DHCP の指定範囲外のアドレスを指定しましょう。
[network] interface=eth0 address=192.168.***.*** netmask=255.255.255.0 gateway=192.168.***.1 nameserver=192.168.***.1 domain=mydomain.jp
NAS の設定
NAS の設定になりますが、今回は Wiindows 7 の共有フォルダ(share)に音楽ファイルを置いた環境で設定をしています。
デフォルトでは nfs で接続する設定の NASID1 が有効になっていますが、Windows との接続になるので nfs を無効にして cifs の NASID2 を有効にします。そのため [nas:NASID1] セクションをコメントアウト(各行頭に # を追加)して [nas:NASID2] をアンコメント(各行頭の # を削除)します。
host には NAS (今回の場合は Windows 7 PC)のホスト名または IP アドレス、remotedir には NAS の共有フォルダ名、remoteuser にはログインユーザー名、remotepass にはログインパスワードを指定します。
なお、nas:NASID2 セクションの最終行の sec=ntlm は mount.cifs のセキュリティモードの設定のようで windows 用の NAS ではこれが必要なようです。ご多分にもれず、当初この設定をしていなかったので Windows 7 PC の共有フォルダにアクセスできなかったのですが、参考にさせてもらったたかじんさんのブログのコメントに記載されていたのを見つけてこの記述を追加したらあっさり接続ができました。
#[nas:NASID1] # type=nfs # host=nashost1 # remotedir=audio_data # proto=tcp # rsize=65536 # wsize=65536 [nas:NASID2] type=cifs host=192.168.***.*** remotedir=share remoteuser=***** remotepass=******* iocharset=utf8 file_mode=0644 dir_mode=0755 rsize=61440 wsize=65536 sec=ntlm
mpd 関連の設定
mpd で使用するファイルを指定します。NAS の共有フォルダ(share)配下には音楽ファイルを置くフォルダ(Music)のほかにlightMPD 用のフォルダ(mpd、mpd/playlists)を作成しておきます。mpd セクションではこれらのフォルダをそれぞれ music_directory、playlist_directory に指定します。また sticker_file、db_file の path のディレクトリの変更も忘れずに。
[mpd] # dac=bcm2835 dac=hifiberry-dac # dac=rpi-dac # dac=usb-audio # dac=usb-hiface load_module=mpd-0.19.8rt music_directory=NASID2/Music playlist_directory=NASID2/mpd/playlists db_file=NASID2/mpd/tag_cache sticker_file=NASID2/mpd/sticker.sql # log_file=NASID1/mpd/mpd.log log_file=/dev/null
DAC の指定もここで行います。RBD-02+/HG の I2S DAC カードを使う場合はデフォルトのまま dac=hifiberry-dac をアンコメント状態で OK です。
lightMPD を起動
lightMPD.conf の設定が完了したら Raspberry Pi 2 に SD カードを挿して電源を入れます。楽曲の再生は MPD クライアントで行いますが、ここらへんも Volumio や RuneAudio とは違ってます。というかこういう使い方が普通かと思います。人気の MPD クライアント GMPC で NAS の音楽ファイルのあるフォルダを表示しています。テスト信号ばかりで味気ないですが・・・。

さて、音質の評価はある程度聴きこんだ後にすべきですが、CD の音源を聞いたときには一瞬おっという感じです。Volumio ではハイレゾ音源を聴くのに最適と考えていましたので resampling 機能は使っていませんでした。lightMPD はリサンプリング機能を強化したとのことですので聴き比べてみました。Volumio ではそれなりに解像度が上がった感じではありますが lightMPD のそれとはまた違います。なにか今まで聞こえなかった音が聴こえてくるような・・・。明らかに Volumio 1.55 の音とは違って聞こえました。lightMPD-v0.09 ではアップサンプリング機能が強化されたとのことなのでこれが効いているのかもしれません。
mpd.conf ファイルのオーディオ出力のフォーマットとリサンプリング精度の指定が
audio_output_format "X4L4:24:2" samplerate_converter "soxr very high"
となっていて入力周波数の4倍でアップサンプリングされていますが、Volumio では 384kHz/32bit でのリサンプリングが可能(少なくても選択は可能)なので、audio_output_format を "X8L8:32:2" としてみました。Volumio では音がとぎれてしまいますが lightMPD ではそのようなことはなくさらに解像度が上がった気がします。
このときの I2S 信号を確認しました。MPD のアップサンプリングの上限が 192kHz なのでしょうかサンプリング周波数(LRCK)は 192kHz でしたがデータは 32bit に変換されているのようです。LRCK の High 期間 Low 期間のクロック数は 32 個ですがその最下位ビット(LSB)のデータが変化しているのが確認できます。筆者のオシロスコープは重ね書きができないのでその瞬間を single トリガで捕えています。

しばらくは "X4L4:32:2" の設定にして聴いてみます。
lightMPD で "X8L8:32:2" の設定を試したのは I2S DAC が384kHz を受けられるかとの質問がきっかけでした。Volumio なり lightMPD が 384kHz の出力ができないようなので結局確認はできませんでしたが、PCM5102A は384kHz/32bit まで対応しているので受けられる*はず*ではあります。