raspberry pi, raspberry pi 2用のlightMPD-v1.0.0を公開しました

投稿日: 2015/06/16 5:34:19

raspberry pi, raspberry pi 2用のlightMPD-v1.0.0を公開しました。

raspberry pi,raspberry pi 2用のlightMPDはI2S接続のDAC専用とします。

というのは私が所有するUSB DDC(ElectrArt製UDA_MINI,USBDACおよびAmanero Technologies社製 Combo384)ではノイズまみれになってまともに再生できません。

DoPモードで観測するとdsdとpcmのランプが交互に点滅するので、パケットがロストしているようです。

動作報告はしていただけるとありがたいのですが、動作しなくても対処できません。

I2S接続のDACは以下のボードでテストしました。

主な仕様

  • buildroot
  • buildroot-2015.05
  • kernel
  • linux-4.0.5rt3(Raspberry pi は Full rt, Raspberry pi は Low latancy)
  • mpd
  • mpd-0.19.9rt
  • mpd-0.19.9rt-native-dsd

旧バージョンとの相違点

  • WebUIのクライアントympdを実装しました。
  • lightmpd.confの変更
  • http,telnetd,ympd,webconsoleでポートの指定を行えるようにしました。

[http]

enable=yes

port=80

[telnetd]

enable=yes

port=23

[webconsole]

enable=yes

port=9000

portは省略可能ですが、省略した場合は http,telnetd,ebconsoleのポートはれぞれ80,23,9000 になります。

[ympd]

enable=yes

webport=8080

mpdport=6600

webportはympがリクエストを受け付けるポートを指定します。デフォルトは8080です。

mpdportはmpdがリクエストを受け取るポートを指定します。mpdがリクエストを受け付けるポートはmpd.confで指定できます。デフォルトは6600です。

  • mpd.confの変更
    • decoder_selectorを外しました。
    • samplerate_converterのデフォルトを"soxr very high"にしました。Raspberry PiでもX4のオーバーサンプリングは可能です。
      • Raspberry pi 2ではsoxrはopenmpをサポートしています。samplerate_converterには下記の指定が可能です。
      • Raspberry piではopenmpのサポートは行いませんので下記の指定をするとエラーになりmpdが立ち上がりません。
      • "soxr very high openmp"
      • "soxr high openmp"
      • "soxr medinum openmp"
      • "soxr low openmp"
      • "soxr quick openmp"
    • 拡張オーディオフォーマットにxnを追加
    • x(小文字)の場合、入力がDSDでもサンプリング周波数の変換を行います。
    • mpdのサンプリング周波数変換の動きについては近いうちに解説します。
    • 取りあえずは、dsdをpcmに変換して再生する場合(audio_outputでdsd_usbが"no"の場合)はx(小文字)を指定して下さい。
    • dsd_usb="yes"の場合はX(大文字)を指定して下さい。

DACの指定

Raspberry pi,Rasberry pi2 用のlightMPDではDACのタイプによって対応モジュールをロードする必要があります。

使用するDACのタイプをlightmpd.confの[mpd]で指定します。

[mpd]

dac=hifiberry-dac

dacとして指定出来るのは

    • bcm2835
    • 内蔵DAC
    • hifiberry-dac
    • TIのPCM5102x を使ったI2S接続のDAC
    • rpi-dac
    • TIのPCM1794aを使ったI2S接続のDAC
    • usb-audio
    • usb接続のDACまたはDDC
    • usb-hiface
    • M2TECHのhiface (初代のhifaceではノイズ混じりで実用になりません)

その他、hifiberry-dacplus,hifiberry-amp,hifiberry-digiがありますが、現ヴァージョンのlightMPDでは使用できません。

また、rpi-dacはテストを行っていません。

native-dsdの対応

mpd-0.19.9rt-native-dsdはhttps://github.com/lintweaker/xmos-native-dsdで公開されているdsdのnative転送に対応したmpdです。

DDC,DACが対応していればdsd native転送を使うことにより機器側が対応していればDSD256の再生が可能になります。

(現バージョンではUSB接続のDDC、DACは動作保証外ですし、I2S接続のDACでもDSDをサポートしてる物はみあたらないのですが、一応提供する事にしました。)

対応するDDC,DACは

  • iFi Audio micro/nano iDSD
  • Matrix Audio X-Sabre
  • Matrix Audio Mini-i Pro
  • DIYINHK DSD DXD 384kHz USB to I2S/DSD
  • Denon DA300-USB
  • Marantz HD-DAC1
  • Marantz SA-14S1

です。(上記全ての機器がDSD256に対応しているとは限りません。DSD256の為に機器を選択する場合は仕様を確認して下さい。)

当初、DIYINHKのDDCでテストする予定でしたが、タイムリーな事にエレクトロアートのデジタルオーディオ実験室上にて下記基板に対するnative dsdのパッチが公開されましたので、その対応を行いました。

  • ElectrArt USDA_MINI
  • ElectrArt USBDAC
  • ElectrArt UDA2

HDtte-onkyoから購入したDSD256ファイルをUSDA_MINIでテストしたところちゃんと再生できましたので、公開に踏み切りました。

[注意]

  • 但し、たまにプチノイズがでる時があります。buffer_sizeの調整やirqのプライオリティの調整が必要かもしれません
  • beagleboneの場合、USBへのデータ転送はPIO方式で行われ、データ量が増えればそれだけCPUの負荷が増えます。352.8Khzあたりが限界なのかもしれません。
  • USDA_MINI以外の機器ではテストしていません。
  • native-dsdの他機種への対応は順次行います。

dsd native転送を行う場合は、lightmpd.conf,mpd.confを以下のように修正して下さい。

  • lightmpd.conf
  • [mpd] -> load_module を mpd-0.19.9rt-native-dsdに変更。
  • mpd.conf
    • dsd_usbを "yes" から "no" に変更
  • 以下を追加

dsd_native "yes"

dsd_native_type "2"

ダウンロードおよびインストール

このバージョンからzip形式のアーカイブで配布する事にしました。

    • Raspberry Pi
    • lightMPDraspi-v1.0.0.zip
      • lightMPDraspi-v1.0.1.zip(2015.07.03 update)
      • mpd-0.19.9rt-native-dsd: 曲の終わりでmpdがハングアップしるバグを修正しました
    • Raspberry Pi2
    • lightMPDraspi2-v1.0.0.zip
      • lightMPDraspi2-v1.0.1.zip(2015.07.03 update)
      • mpd-0.19.9rt-native-dsd: 曲の終わりでmpdがハングアップしるバグを修正しました

ダウンロードしたファイル(zip)をFAT32でフォーマットしたSDメモリ上に解凍して下さい。