まとめ記事(コンテンツ)

2019/06/15

ネットワークオーディオ自作(2) lightMPD

前回のサーバーから続き、ネットワークオーディオを仕上げます。
サーバーにUPnPを採用したので、残りのレンダラーとコントローラもUPnP系(DLNA/OpenHome対応)のものが必要です。
レンダラーとして、lightMPDが面白そうなので試してみました。








digififanさんによる音楽再生専用LinuxディストリビューションのlightMPDはその名の通り超軽量に作られていて、OS含め全てRAM上で動作するのが特徴です。
起動後はディスクをアンマウントするため、電源をいきなり切断しても大丈夫。普通のオーディオ機器のように使えて便利ですし、音質的にも期待できそうです。
詳細は公式ページ(デジファイのおと)へどうぞ。

lightMPDはUSBメモリーなどローカルデバイスからの音楽再生はできず、NASをSambaやNFSでマウントして再生する仕様に特化して開発されました。その後バージョンアップにより動作モードの追加が行われ、UPnP(DLNA)サーバーからの再生にも対応しています。というわけで前回のMinimServerとつながります。

lightMPDにはCPUボードを2台使って高音質化するという動作モードもあって、これに至るまでの話が大変興味深いと思いました。ぜひ公式「ネットワークプレーヤ用ネットワーク」と「lightMPD/upnpgw」を読んでみてください。

今回は車載を考えコンパクトにシステムを作りたいので、1台でUPnPレンダラーを構成するモードで使います。
alt
こんなシステムとなります。

lightMPDはBeagleBoneというシングルボードコンピュータ(SBC)から始まり、現在はラズパイなどいくつかのSBCで動作可能となっています。それらの中から、スイスPC Engines社の
alt
APU. 2D4 (PC Engines)
というボードを使ってみました。APU1またはAPU2シリーズ、メモリは2GBでも4GBでも使えます。
経験上カニさんNICは嫌いなのでAPU2にしました。
(2019/12追記)APU2シリーズの最新バージョンは2E2(2GB)および2E4(4GB)に変わりました。APU1シリーズは間もなく終了です。

大きさはCDケースより一回り大きい程度。LANポートが3つもあることからわかるように、ルーターのようなネットワークアプライアンス向けの製品です。
SBCとしては比較的パワフルなx64アーキテクチャのAMD製プロセッサを搭載していて、USBオーディオやソフトウェアリサンプラを余裕をもって処理できる性能があります。
HDMIやWi-Fiを備えておらず(写真左下のD-subコネクタはVGAではなくシリアルポート)PC的な使い方には不向き、逆に余計な回路がない分オーディオ用途には有利という側面もあるのかも。

購入

PC Engines社の公式ショップ(PC Engines directの通貨USDを選択)で注文すると、後日メールで見積りが届きます。
メールに記載されたリンクを確認しPayPalで支払って10日程度で届きました。

自分は以下のパーツを購入しました。+ドライバーとナットドライバーを使う簡単な組み立てが必要です。

1 apu2d4 120.00 USD
APU.2D4 system board 4GB
(本体)

1 case1d2blku 10.00 USD
Enclosure 3 LAN, black, USB
(ケース)

1 apufix1a0 1.00 USD
Heat spreader placement template
(ヒートスプレッダの位置決め治具)※APU2用です。

1 ac12vus2 4.40 USD
AC adapter 12V US plug for IT equipment
(ACアダプター)

基板裏のCPUチップからヒートスプレッダ(アルミ板)を通してケースに放熱させる構造になっているため、ケースは必須です。
ACアダプターは12V/2A、DCプラグが外径5.5mm/内径2.5mmのセンタープラス。

APUはSDカードまたはUSBメモリーからブート可能です。
lightMPDはどちらにも対応していますが、SDスロットは純正ケースのカバーを開けないとアクセスできないのでUSBメモリーの方が便利です。別に入手しておきます。(容量は256MB以上)

MinimServerの設定変更

前回作成したサーバーの配信設定をlightMPD向けに修正します。
MinimStreamerのstream.transcodeの項目に設定を追加。
記述方法の説明はユーザーガイドにあります。

(2019/9訂正)dopwavを指定した場合、DSDの音源はwavに偽装する形で配信され、そのままDACに送ればDoPとして認識されます。しかしwavとdopwavは区別されないため、wavに対してリサンプルのような演算処理を行うとdopwav時も処理が入ってしまいDSDが正常に再生できなくなります。レンダラーで一切の処理を行わないならこれでも問題ありませんが、PCM音源のアップサンプリングやDoP以外のDSD再生も実行できるようにするためdopwavを外しました。これらはlightMPDのmpd.confで設定します。
(2019/9訂正)mp4/m4aファイルのトランスコード設定を追加。

flacはlightMPDでデコードできますが、この設定ではサーバー側でwavに変換させています。
ネットワークのトラフィックを減らす(flac)のと、レンダラーのCPU負荷を減らす(wav)のはどちらが高音質なのか試せるわけです。もちろんflacとwavなので、最終的にDACに届く「データ」としては変わらないはず。これで音が変わるとしたらデータ以外に何か影響する要素があることになり、それは何でしょうと。ディープな次元の話です。

lightMPDでは、APUを固定IPアドレスで運用します。対するサーバー側のIPはUPnPなので動的でも問題ありませんが、後日車載でDHCPが無い環境で動かすことも考えMinimServerのIPアドレスも固定しました。(結局これは不要でしたけど。)
$ cd /etc 
$ sudo cp dhcpcd.conf dhcpcd_conf.bak 
$ sudo nano dhcpcd.conf 
#でコメントアウトされたテンプレート行があるので、#を外し自分の環境に合わせて修正します。
interface eth0 
static ip_address=192.168.1.91/24 
static routers=192.168.1.1 
static domain_name_servers=192.168.1.1 

ルーターのDHCP機能を使っている場合は、割り当てアドレスが重複しないように設定を変更しておきます。

ブートローダーおよびパッケージの書き込み

ここからlightMPDのインストールです。
公式ページから「ブートローダー」および「パッケージ」をダウンロード。APU用の最新バージョンはv1.2.0でした。
ブートローダーを解凍してできたイメージファイルをUSBメモリーに書き込み。
FAT32でフォーマットし、Win32DiskImagerで書き込みます。
書き込むとPCからドライブとして認識されなくなるので、いったんUSBメモリーを取り外して再度挿入します。

次にパッケージを解凍。こちらはイメージ書き込みソフトでなく普通にzipファイルをUSBメモリーに上書き解凍すればOK。

設定

lightMPDでは、前回のラズパイのようなSSHコンソールとは異なり、起動ディスク(今回はUSBメモリー)内のテキストファイルをPCで直接編集して設定を行います。

lightmpd.confおよびmpd.confの2つの設定ファイルは、lightMPDの動作モードに応じて選択します。/lightMPD/confディレクトリにテンプレートがあります。
/lightMPD/conf/upnpmode(UPnPのレンダラーとして使用するモード)のファイルを/lightMPDにコピー。
テキストエディタ(TeraPadなど、文字コードUTF-8・改行コードLFに設定できるもの)で修正します。

/lightMPD/lightmpd.confの設定
自宅のネットワーク環境に合わせて修正。

[network]
interface=eth0
address=192.168.1.92
gateway=192.168.1.1
netmask=255.255.255.0
nameserver=192.168.1.1


[ntp]
server=ntp.jst.mfeed.ad.jp
ntpd=no
timezone=Asia/Tokyo

/lightMPD/mpd.confの設定
(2019/8訂正)DSDの扱いをここで設定できます。使用するDACがDoP形式によるDSD入力に対応しているので、DoP伝送を指定しました。このバージョン(mpdの0.20系以降)から指定方法が変わっているので注意。DoPを指定せずMinimServerでもdopwavを指定しない場合、カーネルが対応するDACのみネイティブ(マーカーレス)伝送、それ以外はPCM変換再生となります。

audio_output {
    ...
    dop     "yes"
}


他にもリサンプラーなど楽しそうな設定がたくさんありますが、ひとまずこらえてデフォルトのままで。

/boot/grub/menu.lstの設定
システムタイプをAPU2、ブートデバイスをUSBメモリーに指定。

kernel /boot/bzImage-5.0.3rt1 root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=81920 rootfstype=romfs rootdelay=5 clocksource=tsc idle=poll processor.max_cstate=1 isolcpus=1 nohz_full=1 rcu_nocbs=1 lightmpd.systype=apu2 lightmpd.bootdev=/dev/sda1

最低限これだけで音が出せます。NASモードより簡単です。

動作確認

設定が終わったらUSBメモリーをAPUのUSBポート(上段)に挿して電源ON。
その昔MS-DOSをフロッピーディスクから起動していた感覚に近いかも。
今回は幸い一発で動作してくれたものの、モニター出力もSSHコンソールも無いので動かなかったときの調査は厄介です。あまり設定を弄らず、まずは確実に動く「ベースキャンプ」を確保することをお勧めします。
alt
基板むき出しでないので、市販のオーディオ機器と並べても遜色ありません。
USBポートに接続しているDAPはUSB-DACの役です。
写っていませんが前回のMinimServerからLAN越しに再生しています。
なりは小さくとも、サーバー・レンダラー(トランスポート+DAC)・コントロールと、いっちょまえのネットオーディオ"フル"システムです。
スマホやDAP1台で済ませるより、オッサンはこういうコンポーネント構成に反応するわけさ。
電源ONから20秒ほどで再生可能となりました。


コントロールはスマホから。UPnP/DLNA/OpenHome対応アプリが使えます。
Android版のアプリをいくつか試したので紹介しておきます。
基本的な使い方は共通で、サーバーとレンダラーを最初に選択する以外は普通の音楽再生アプリと同じ。アルバム・アーティストなどナビゲーションツリーに従って選曲します。

BubbleDS(BubbleUPnPのOpenHome専用バージョン)
オーソドックス。安定感あり。
alt

Hi-Fi Cast
動作軽快。全曲シャッフルが使いやすい。
※UPnP/DLNA対応ですがOpenHome対応ではないので他のと挙動が少し違います。
alt

LINN Kazoo
シンプル。我が家にLINNがやって来た!
alt

LUMIN App
Kazooと対照的な多芸タイプ。タブレット映え。我が家にLUMINが(略)
alt

機能の違いこそあれど、どのアプリも表示は日本語含め問題ありませんでした。ハイレゾロゴなど並べなくても普通に再生するオトナな対応でよろしい。

OpenHome陣営にはLINN、それ以外で以前取り上げた(現在も愛用中の)roonもあり、ネットオーディオのソフトウェアは英国勢が強い。サーバーとレンダラーはそのまま、したがって音質に影響なく使い勝手でアプリを選べるのは良いですね。




以上で完成です。
動作確認できたら、lightmpd.confの[debug]セクションの項目を「no」に変更してログ出力を抑制しておきます。

MPDはマニア向けのイメージがありますが、UPnP、というかOpenHome対応を身につけたlightMPDは使い勝手の良さも注目されてよいと思います。

音質も良好です。自宅オーディオでリニア電源と組み合わせてみたところ、ラズパイのroonブリッジを超える音が出てきて「おっ?!」となりました。
Linuxのオーディオは「ラズパイ」に「HAT」を載せて「I2S」で接続するパターンばかりかと思っていたので、こんなシステムが組めるのは全くのノーマークでした。市販のUSB-DACやDDCを使う場合でも音質にケアしたディストリビューションやハードウェアが選べるのはありがたいことです。

欠点はやってみるまでも無く、システム全体の立ち上げめんどい。ホームならサーバーを常時稼動させておくことが(ラズパイの消費電力はごくわずかなので)できますし、lightMPDの起動も早いので気になりませんが、車載となるとネットワークの準備から始まるわけで、起動時間と環境整備の二重の意味で「立ち上げ」めんどい・・・



このレベルでサクサクとブラウズできて、エンジンONですぐ立ち上がり、音の良い車載デジタルトランスポートはいつ出ますか・・・?
数百枚のアルバムを持ち運べるようになったのだから、それを一瞬で見渡せるような操作系が欲しい。旧態依然としたインターフェースではもう困るのです。もちろんそれ以前のタグ理解しないとか無理。

まもなく登場の
alt
が気になりつつ、今年の残り半分はこっちで行こうかと検討中。
そういえば、LINNとロゴマーク似てますね。OpenHome対応しませんかオーテクさん?



(2019/6/22追記)
安定動作を確認できたので車載運用を開始しました。
顛末は整備手帳にて。

(2019/7/7追記)
主力音源として正式採用しました。
車載運用は面倒ですが、それでも使いたいと思わせる音質です。

(2019/8/4追記)
USB-DAC/DDCはオーテクHRD500のまま、変わったのはUSBから手前だけなのに、何で?という位の変化がありました。
S/N感、分解能、空間再現に優れた、目の覚めるような音が出てきます。
逆に「まったり」とか「色気」とか「芳醇」とかを求める人には合わないかも。方向性の明確な音です。

(2019/11/26追記)
OpenHomeでは複数のコントロールポイントが共存できます。
車載時に同乗者のスマホにもアプリを入れておけば、それぞれのスマホから自由に選曲できて楽しいです。例えるなら、人数分リモコンがあるカラオケBOX。市販カーオーディオには見当たらない便利さで、こんな応用もありますよということで。

(2020/2/17追記)
独自のパルスアレイDACでお馴染み、CHORDから2go/2yuという製品が発表されました。2goはmicroSDスロットを備える多機能サーバー、2yuは同軸・光・USBのデジタル出力インターフェースで、この2つを組み合わせると機能的には今回製作したサーバーとレンダラーを一体化したようなデジタルトランスポートとなります。果たして音質的にはどんなものか、CHORDユーザーの自分には「刺さる」アイテムです。



(2020/6/20追記)
車載導入から1年経ちました。当初その発熱の多さからすぐ壊れるかもと疑っていたリニア電源も、ノートラブルで夏冬乗り切ってくれました。
自分としては1年もオーディオシステムを変更しなかったのは珍しく、それだけ不満の少ないものだということかと。MinimServerとLightMPDの組み合わせは、音質・操作性・安定性とも優れたレベルにあると結論してよいと思います。
(立ち上げの面倒さはやはりあるのですが・・・慣れましたw)

あえて現状の課題を挙げるなら、
・真夏の高温下で、MinimServerを動かしているラズパイの動作がちょっと怪しくなる
・オーテクのDACが、DoP入力の仕様上DSD256を再生できない
の2点で、対策を考えています。




ネットワークオーディオ関係の記事をまとめてみました。よかったらこちらもご覧くださいませ。
ネットワークオーディオを楽しもう
Posted at 2019/06/15 17:58:52

イイね!0件

はてブに送る
はてブに送る

オススメ関連まとめ

マイページでカーライフを便利に楽しく!!

ログインするとお気に入りの保存や燃費記録など様々な管理が出来るようになります

まずは会員登録をしてはじめよう

みんカラ+新登場

リンレイ
リンレイ

カーグッズ

ニュース