ECS LIVAでもmpd-dsd最新版をmakeする

作成日2014年6月13日
更新日2014年6月15日 追記あり


晴れて私の主力Mobile DSD Music PlayerとなったLIVAは、
「VGA無接続での起動が怪しい」など細かな問題はありつつも、ほぼ満足できるレベルで実運用できています。
VGAについてはダミープラグ差しっ放しと言うワークアラウンドで済ませちゃいます。

巷ではLIVA 2などの発表もあり、次なる工作材料の登場に期待は高まる一方です。
まぁ、それまでは今のLIVAを弄りまくる事にしましょう。

工作面では前回から大きく変更は無いので今回は写真無しです。

違いはフロントパネルに起動LEDを増設した位です。
やはり起動状態を示すLEDは重要です。shutdown完了も判るので安心ですしね。

これで内蔵ストレージのアクセスランプも有ればもっと満足度高いんですけどね。



さて、ubuntu 14.04LTS Desktop editionで開発を始めたLIVAですが、
ubuntuにはubuntu studioと言う、ソソラレル名前のeditionもあります。

どうせなら使ってみたいと思いつつ、どれ程違うのかも疑問ですし、今動いている環境を破壊してしまうのも躊躇されました。
でも、「使ってみたい」なんて思いは、結局は断ちきれないに決まってます。あきらめが肝心です。
あきらめる=さっさと試す。です。

今の環境をそのまま残しつつubuntu studioも入れる為、外付けSSD(但しUSB接続)へ入れてみる事にしました。

インストール自体は普通にできましたが...
grubのインストール先として外付けSSDを指定したにも関わらず、なぜか予告無く内蔵ストレージに入れられてしまいました。
もっともこれはEFI bootにおけるディスク構成を良く判っていない私が悪かったんだと思います。
外付けSSDにEFI用のパーティションを用意しなかったのが原因と思いますが、未確認のまま。

ちなみに480GBの外付けSSDを、sda1にubuntu用100GB, sda2をswap用2GB, sda3を音楽data用として380GB程度に割り振りました。
ubuntu用に100GBも割り当てれば相当好き勝手できるのは良いのですが、今日時点ではあまりお勧めできないと考えています。
と言うのも外付けSSDからOSがbootするので、当然起動時にはSSDへフルアクセスします。
ただでさえデカい起動電力への影響は大きく、ACアダプタによっては起動に失敗することもあります。
まぁ、失敗しても2回目で起動できてるので...良いんですが。

取りあえずバッテリからの起動では問題無いので...。

また、同じデバイスにOSとdataを入れるのもやめた方が良さそうです。これも今思えば当たり前の事かもしれません。
システム領域への読み書きと音楽データの読み込みが重なると、当然どちらかにディレイが発生します。
実際にはmpdのバッファを最小限にしてたら絶滅したはずの音飛びが発生しました。
LIVAでは初めての音飛びだったのでかなりアセリマシタ。後にも先にも1回だけでしたが...
バッファを適当に大きくしたところ二度と音は飛ばなくなったので、これもまた目を瞑ることができちゃうのですが...。


どのみち内蔵ストレージに入っているubuntuもWindowsも、もはや使うことは無いので、さっくり入れ直すことになると思います。

6/15 追記:
さっくり入れ直し完了です。
全領域をUbuntu Studioに割り当てて7GB使用済み/19GB弱がフリーです。すっきりした。
でもやっぱり内蔵ストレージはアクセスランプが無い点がイマイチだなぁ。。。



話を戻してstudio版とDesktop版の違いですが...確かに音は違いました。これがlowlatency kernelの効果でしょうか。

但し私の場合、ubuntu studioでも音の再生方法はmpd-alsa-DACの流れです。もっともシンプルです。
これに対しubuntu studioではmpd-alsa-jack-DACと、jackを挟む事が可能です。
latencyの面ではjackを挟んだ方が良いと思われますが、色々と問題があります。

jackは基本的にdbusが無いと動きません。つまりXwindowが動いていないと使えません。

解決策としては

(a) Xwindow動かせばいいじゃん。
(b) dbusを使わないjackもあるのでそれを使えばいいじゃん。

と言う状況の中、さらに...

(a)Jackを挟むとmpdからはDACは直接見えなくなるのでHWボリューム制御は難しそう。
(b)そもそもmpdのDSD対応プラグインも使えなくなりそう。これは致命的。
(c)更にはjack起動時にサンプリングレートを指定する必要があるのも実運用に無理が出そう。

と言うネガティブな材料が増えてしまい、jackについては意欲が潰えてきました。



さて、気分を変えてmpd-dsdの最新版でもmakeしてみましょうか。

既にmpd-dsd 0.18.10まではテスト済みでしたが、今はmpd-dsdは0.18.11が最新版です。

makeの方法はRaspyとほとんど同じです。
しかしubuntu 14.04 desktopもstudioもライブラリの開発用パッケージが全く入っていないので、これをinstallしてやる必要があります。

#original mpd and mpc
#for ssh server and full function vim
オリジナルのmpdとmpc,sshdは必須でしょう。ちゃんとしたvimも私は入れます。

apt-get install mpd mpc openssh-server vim

#for make full feature mpd-dsd
まずはRaspyと同じです。

apt-get install build-essential gcc automake1.9 libtool flex bison gdb git

ところが、普通のPC(LIVAですよ)の場合、automakeはこっちのバージョンが無いとエラーになります。

apt-get install automake

そして一番大変な部分です。結果としては下記のパッケージを入れました。
ubuntu 14.04のdesktop/studioどちらも同じでしたが、dev無しの本体は全て最初から入っていました。
一つづつ入れないと途中でエラー起きても分からなくなりそうな気がします。

また、実際問題これらすべてが必要な訳ではありません。
mpdのconfigure要件に合わせて必要なものだけ選択すれば良いのです。
でも、devパッケージの中身は殆どヘッダーです。大した容量にもなりませんので、まぁいいかと。

apt-get install libglib2.0-dev
apt-get install libsystemd-daemon-dev
apt-get install libmpdclient-dev
apt-get install libwrap0-dev
apt-get install libid3tag0-dev
apt-get install libavahi-client-dev
apt-get install libnss3-dev
apt-get install libsqlite3-dev
apt-get install libsamplerate0-dev
apt-get install libcurl3-dev
apt-get install libyajl-dev
apt-get install libcdio-paranoia-dev
apt-get install libmms-dev
apt-get install libbz2-dev
apt-get install libadplug-dev
apt-get install libaudiofile-dev
apt-get install libfaad-dev
apt-get install libavformat-dev libavformat-extra-54
apt-get install libflac-dev
apt-get install libfluidsynth-dev
apt-get install libgme-dev
apt-get install libmad0-dev
apt-get install libshout3-dev
apt-get install libmpg123-dev
apt-get install libmodplug-dev
apt-get install libopus-dev
apt-get install libmpcdec-dev
apt-get install libsidplay1-dev libsidplay2-dev
apt-get install libwavpack-dev
apt-get install libwildmidi-dev
apt-get install libresid-builder-dev
apt-get install libmp3lame-dev
apt-get install libtwolame-dev
apt-get install libroar-dev
apt-get install libao-dev
apt-get install libopenal-dev
apt-get install libsidutils-dev

上記を纏めると下の一行になりそうですが...おすすめできません。
6/15 追記: 一気にやっても大丈夫でした。実績はある。と言う事だけですが。

apt-get install libglib2.0-dev libsystemd-daemon-dev libmpdclient-dev libwrap0-dev libid3tag0-dev libavahi-client-dev libnss3-dev libsqlite3-dev libsamplerate0-dev libcurl3-dev libyajl-dev libcdio-paranoia-dev libmms-dev libbz2-dev libadplug-dev libaudiofile-dev libfaad-dev libavformat-dev libavformat-extra-54 libflac-dev libfluidsynth-dev libgme-dev libmad0-dev libshout3-dev libmpg123-dev libmodplug-dev libopus-dev libmpcdec-dev libsidplay1-dev libsidplay2-dev libwavpack-dev libwildmidi-dev libresid-builder-dev libmp3lame-dev libtwolame-dev libroar-dev libao-dev libopenal-dev libsidutils-dev

ここまでくれば後はRaspyと同じです。

mpd-dsdの最新ソースをゲットします。

# cd /root
# mkdir temp
# cd temp
# git clone git://github.com/lintweaker/mpd-dsd-018

これでmpd-dsdをmakeする準備は整いました。

更に私はここでdsdのid3tag対応パッチを入れています。
これが無いとdsdだけアーティストも曲名も何も無しで悲しいです。
但し、このパッチではmpdデータベース更新の際、曲データのファイルサイズと同じ容量のメモリが必要になります。
つまりRaspyなどで1曲のサイズが500MBクラスの曲をmpdに登録しようとすると...かなり無茶な結果が待っています。
でもLIVAではswapも普通に使えるし、メモリも余裕なので大丈夫でした。


パッチはここにあります。

/root/temp/にdsdlib-id3tag.patchを置いた場合、
# cd /root/temp/
# patch -p1 -d mpd-dsd-018 < dsdlib-id3tag.patch
patching file src/decoder/DsdLib.cxx

3行目のpatching file...が出れば成功。

6/15 追記:
自分も毎回失敗する注意点を追記しておきます。
このパッチを追加したら、mpdのデータベースを綺麗に入れ替えないとダメです。
普通にupdateしただけだと、「データベースに何も変更ない」扱いされてdsdのtagは登録されません。
一旦音楽データの入ったデバイスをunmountするなどした上でmpc updateコマンドでmpd databaseを空っぽにし、
再度mountしてから再びmpc updateコマンドで全曲登録するのが時間掛かるけど手軽です。


最後のmake手順はRaspyと同じです。

# service mpd stop
# sh autogen.sh
# ./configure
# make
# make install
# cd /usr/local/bin
# strip mpd
# mv mpd mpd-dsd-0.18.11
# cd /usr/bin
# mv mpd mpd-org
# ln -s /usr/local/bin/mpd-dsd-0.18.11 mpd
# service mpd start

以下オマケです。ご参考まで

#for CONCERO-HP HID device control
apt-get install triggerhappy

#for your convenient
apt-get install sysv-rc-conf sysfsutils

#for get cpu temperature
apt-get install lm-sensors


戻る

inserted by FC2 system