Voyage MPDのチューニング(最新事情)

hiFace EvoがVoyage MPDで認識できたので、次は専用強化電源の「EVO SUPPLY(M2TECH)」、クロックジェネレーターの「EVO-CLOCK(M2TECH)」を導入しようと考えています。

「EVO-CLOCK(M2TECH)」
CLOCK

「EVO SUPPLY(M2TECH)」
EVO SUPPLY
しかし、その前に気になるのが肝心のVoyage MPDのチューニングです。

あれこれ弄った状態ではhiFace Evoのドライバが上手く組み込めないのではないか?という懸念もあったので(実際、現時点ではシンさんヴァージョンのVoyage MPDには組み込めていない)、Voyage MPDの0.85ヴァージョンをクリーンインストールした状態で事に臨みました。
しかしながら、これでは音質的にはかなり不十分なことは明らかなので、ここを出発点として、最低限、

(1)ソースコードからMPDを組み込み
(2)yannさんのパッチをあてて優先度を最適化する

くらいは必要だろうと考えました。

ところが、これがやってみると、意外なほどにくせ者で大汗をかかされました。
何故かというと、私が以前に報告した「MPDをソースからコンパイルしてインストールする方法」及び、「yanさんのパッチファイルを適用して優先度を弄る方法」は内容的にかなり古くなっていて、そのままのやり方ではうまくいかなくなっていたからです。

ですから、hiFace Evoを新たにVoyage MPDに導入した人だけでなく、古い情報を頼りにMPDのソースコードからのコンパイルやyanさんのパッチファイルの適用にチャレンジしてうまくいかないという人にとっても有用だと思いますので、あらためて勘所をまとめておきます。

何故うまくいかない?

まず、最初に、古い情報では何故にうまくいかないのかを説明しておきます。
最大の問題は、MPDの開発者とVoyage MPDの開発者が全く別人だと言うことにつきます。そして、この両者の間には何の連絡もないばかりか、もしかしたらあまり関係がよくないのではないか?とすら思うほど齟齬が生じています。(私の思い過ごしかもしれませんが・・・)

ソースコードからコンパイルしようとすると当然のことながらコンパイルするためのソフトであるコンパイラーが必要です。Linuxの場合は「gcc」というコンパイラーを使うのが一般的です。MPDも当然のことながらこの「gcc」を使ってコンパイルします。
そして、この「gcc」のアップデートが早くて、新しいヴァージョンでコンパイルされる事を想定したソースコードは古いヴァージョンの「gcc」ではコンパイルできないという「互換性のなさ」が最大の問題点となっているのです。(当然といえば当然です)
そして、MPDの開発者は新しいヴァージョンの「gcc」がリリースされるたびに乗り換えを行っているのに対して、Voyage MPDの開発者は安定性を重視して少し古い目の「gcc」を使っているのです。もう少し具体的に書きますと、gitで入手できる最新版のMPDをコンパイルするには、最新の「gcc 4.7」が必要ですが、Voyage MPDの方は未だに「gcc 4.4」を使っています。
ですから、最新版のMPDを入手してVoyage MPDでコンパイルしようとするとことごとくエラーとなってしまうのです。

これが、古い情報のままではうまくいかない原因です。

解決法はgitを使って最新版のMPDを使わないこと

さて、そうなると基本的な解決法は2つです。

  1. MPDの開発者に寄り添って、最新の「gcc」を導入している別のOSに乗りかえる
  2. Voyage MPDの開発者に寄り添って、少し古い「gcc」に対応した少し古いMPDを使う

もちろん、Voyage MPDに最新の「gcc」をインストールするという手もありますが、意外なほどにこれが大変です。やってやれないことはないのですが、それだけの手間をかける値打ちが見いだせません。少し古いヴァージョンのMPDでもオーディオ的には充分すぎるほどの音質ですし、それを最新版のMPDに乗りかえたからといって音質的な差異はほとんどありません。
何よりも、MPDはVoyageに積まれてこそその真価を発揮します。
ですから、個人的な結論としては(2)の「Voyage MPDの開発者に寄り添って、少し古い「gcc」に対応した少し古いMPDを使う」を採用したいと思います。

となると、gitを使って最新版のMPDのソースコードを入手するという方法は捨てると言うことになります。

安定版の「Stable – 0.17.2」を使う

結論から言うと、MPDのサイトから安定版の「Stable – 0.17.2」を使うのが一番いいようです。これならば、「gcc 4.4」で問題なくコンパイルが可能です。

# 安定版の「mpd-0.17.2.tar.bz2」をダウンロード解凍します。

root@voyage:~# cd /usr/src/
root@voyage:/usr/src# wget http://sourceforge.net/projects/musicpd/files/mpd/0.17.2/mpd-0.17.2.tar.bz2
root@voyage:/usr/src# tar -xjf mpd-0.17.2.tar.bz2

# yanさんのパッチファイルを適用する

次にyanさんのパッチファイルを落としてきます。yanさんのパッチファイルは「みみず工房」さんで配布されています。
ここでも重要なのは「gcc」のヴァージョンにあわせたパッチファイルを落としてくることです。必要なのは「mpd-0.17git-20120226rtopt.diff」です。

root@voyage:/usr/local/src/mpd-0.17.2# wget http://www.symphonic-net.com/kubotayo/cgi-bin/downlog.cgi?edata/mpd-0.17git-20120226rtopt.diff.gz

何故か私の環境ではへんてこな名前でダウンロードされてしまいますので、リネームをしておきます。

root@voyage:/usr/src/mpd-0.17.2# mv downlog.cgi\?edata%2Fmpd-0.17git-20120226rtopt.diff.gz mpd-0.17git-20120226rtopt.diff.gz
root@voyage:/usr/src/mpd-0.17.2# gzip -d mpd-0.17git-20120226rtopt.diff.gz

パッチファイルを適用します。

root@voyage:/usr/src/mpd-0.17.2# patch -p1 < mpd-0.17git-20120226rtopt.diff patching file Makefile.am Hunk #1 succeeded at 221 (offset 1 line). Hunk #2 succeeded at 402 with fuzz 2 (offset 10 lines). patching file configure.ac Hunk #3 succeeded at 1584 (offset 8 lines). patching file src/conf.c Hunk #1 succeeded at 102 (offset -1 lines). patching file src/conf.h patching file src/decoder_thread.c Hunk #2 succeeded at 464 (offset 4 lines). patching file src/main.c Hunk #2 succeeded at 314 (offset -3 lines). Hunk #3 succeeded at 324 (offset -3 lines). Hunk #4 succeeded at 381 (offset -3 lines). Hunk #5 succeeded at 487 (offset -3 lines). patching file src/output_internal.h patching file src/output_thread.c Hunk #1 succeeded at 32 with fuzz 2 (offset 1 line). Hunk #2 succeeded at 584 (offset 5 lines). patching file src/player_thread.c Hunk #2 succeeded at 1075 (offset 15 lines). patching file src/rt_opt.c patching file src/rt_opt.h patching file src/update.c Hunk #1 succeeded at 33 (offset 2 lines). Hunk #2 succeeded at 76 (offset 5 lines).

必要な個別及び基本ライブラリの組み込み

忘れずに必要な個別及び基本ライブラリを組み込んでおきます。
詳しくは「MPDをソースからコンパイルしてインストールする方法」をご覧ください。ここは古い情報がそのまま使えると思います。

まずは念のために

root@voyage:/usr/src/mpd-0.17.2# apt-get update
root@voyage:/usr/src/mpd-0.17.2# apt-get upgrade

# mpdを停止

/etc/init.d/mpd stop

まずは、MPDを停止しておきましょう。

# 基本ライブライリのインストール

apt-get install aptitude wget
apt-get install git binutils gcc make subversion autoconf automake autotools-dev libtool pkg-config
apt-get install build-essential libncurses5-dev libncursesw5-dev linux-headers-`uname -r` libglib2.0-dev

MPDをソースからコンパイルしてインストールする上で必要なライブラリ群です。
そして、必要に応じて個別のライブラリも組み込んでおきます。

# 個別ライブライリのインストール

root@voyage:/usr/src/mpd-0.17.2# apt-get install libflac8 libflac-dev # flacをサポートします。(必須)
root@voyage:/usr/src/mpd-0.17.2# apt-get install libogg0 libogg-dev libvorbis0a libvorbis-dev # Ogg Vorbisをサポートします。
root@voyage:/usr/src/mpd-0.17.2# apt-get install libid3tag0 libid3tag0-dev libmad0 libmad0-dev # id3タグをサポートします。
root@voyage:/usr/src/mpd-0.17.2# apt-get install libcue-dev libcue1 # cue sheetをサポートします。
root@voyage:/usr/src/mpd-0.17.2# apt-get install libasound2 libasound-dev libasound2-dev # ALSAをサポートします。(必須)
root@voyage:/usr/src/mpd-0.17.2# apt-get install libsamplerate0 libsamplerate-dev # サンプリングレートの変更をサポートします。
root@voyage:/usr/src/mpd-0.17.2# apt-get install libavformat52 libavformat-dev libavcodec-dev libavcodec52 libavutil49 libavutil-dev # mp3、apeなどをサポートします。(必須)
root@voyage:/usr/src/mpd-0.17.2# apt-get install libsndfile-dev libsndfile1 libaudiofile0 libaudiofile-dev # WAVEファイルなどをサポートします。(必須)

ここまでくれば終わったも同然です。

# MPDをコンパイルする

root@voyage:/usr/src/mpd-0.17.2# ./autogen.sh
root@voyage:/usr/src/mpd-0.17.2# ./configure -disable-ipv6 -enable-rtopt -disable-sndfile # -enable-rtoptを追加することで「realtime_option」が有効になる。
root@voyage:/usr/src/mpd-0.17.2# make
root@voyage:/usr/src/mpd-0.17.2# make install

ここで、「gcc」のヴァージョンやyanさんのパッチファイルのヴァージョンが会っていないと「make」の段階でコンパイルエラーが出て止まってしまいます。このあたりがややこしいのですが、「gcc」のヴァージョンに関わる問題をよく注意して間違いなくファイルを落としてくることが大切です。

最後の一手間

# 起動させるmpdを変更する

echo DAEMON=/usr/local/bin/mpd >>/etc/default/mpd

起動時に自動起動させる「MPD」は「/etc/default/mpd」というファイルに記述されているので、新しくインストールした「MPD」が起動するように書き直します。

# /etc/mpd.conf(設定ファイル)を編集する

root@voyage:/usr/src/mpd-0.17.2# vi /etc/mpd.conf

以下をコピー&ペーストする。

realtime_option {
memlock “yes”
stack_reserve “1024”
heap_reserve “0”

main_priority “OTHER:0”
player_priority “FIFO:49”
decoder_priority “FIFO:48”
update_priority “OTHER:0”
}

audio_output {
type “alsa”
name “Hifacs Evo”
device “hw:0,0” # optional
priority “FIFO:99” ←追記する
format “44100:16:2” # optional
mixer_device “default” # optional
mixer_control “PCM” # optional
mixer_index “0” # optional
}

# MPDを起動する

root@voyage:/usr/src/mpd-0.17.2# /etc/init.d/mpd start

これで完了です。
音質的には、いかにも「デジタル」という雰囲気だったのが「アナログ」的な音に変わります。その変化は非常に大きいので、「Voyage MPD」を使用する場合はこのチューニングは必須と考えるべきです。


9 comments for “Voyage MPDのチューニング(最新事情)

  1. old boy
    2013年7月6日 at 7:03 PM

    hifaceのキーワードでこのサイトを読みました。
    MPD-EVOのレベルとは全く関係ないのですが、VortexBoxにhiface twoが簡単に認識できるなら試してみようと思うのですが、どなたかご経験ありませんか。
    現在はUSB-DAC(DAC-1000)に直接つないでいます。

  2. 2013年7月7日 at 4:58 PM

    メーカのサイト見てみると
    http://www.m2tech.org/hiface2.html

    「hiFaceTWO
    Windowsではドライバーによって従来のhiFaceが対応していたDirect Sound、Kernel Streaming、WASAPIに加えてASIOドライバーにも対応しました。
    Mac OSはUSB Audio Class 2.0対応のため、お使いのパソコンがMacならばインストール作業さえ必要ありません。」

    と書いてあります。
    「USB Audio Class 2.0対応」であるならば、何もしなくても認識するはずです。きっと。
    特別な「相性問題」さえなければ、一般論としてはそうなります。

    と言うことで、本家のサイトを見てみると
    http://www.m2tech.biz/hiface2.html

    「Highest quality digital audio up to 192kHz/24bit S/PDIF audio format available from your PC, MAC or Linux computer.」

    これで認識しなければ詐欺ですね。
    もちろん、導入するときは自己責任でお願いしますよ。(^^;

    • old boy
      2013年7月7日 at 8:24 PM

      yungさん

      早速教えていただきありがとうございます。

      m2techサイトに、
      「Highest quality digital audio up to 192kHz/24bit S/PDIF audio format available from your PC, MAC or Linux computer.」
      とあるのに気がつきませんでした(気がついても理解できない?)。

      確かにDAC1000の接続でドライバを必要としないと云うことは、
      VortexBoxがUSB Audio Class 2.0に対応しているためで、
      そうであればhiface twoもドライバなしでつながるわけですね。
      いろいろ分かってきました、試してみます、おもしろい世界ですね。

      • old boy
        2013年7月8日 at 2:29 PM

        いやー驚きました!
        PCとUSB-DACとの間にDDを入れてどんな意味があるのかと思っていましたが、
        VortexBox-hiface two-DAC-1000とつないでみたら一段とくっきりとした音になりました。
        当分これでPCオーディオは完結です。
        これからはアンプ、スピーカーのグレードアップでしようが、PCオーディオのように小遣いの範囲では無理ですね。

  3. 2013年7月8日 at 9:53 PM

    >PCとUSB-DACとの間にDDを入れてどんな意味があるのかと思っていましたが、
    VortexBox-hiface two-DAC-1000とつないでみたら一段とくっきりとした音になりました。

    個人的な感想の域を出ませんが、おそらくはUSB-DACとDACの間にDDCを噛ませることで、USB-DAC由来の様々なノイズがシャットアウトできているのではないかと睨んでいます。

    まあ、こんな事を書くとまたオカルトだという批判が出てくることは承知の上なのですが、聴感上の違いは歴然としているので、個人的にはUSB-DACをDACに直結する気にはなれませんね。

    • old boy
      2013年7月8日 at 10:40 PM

      私はいわゆるオーディオマニアというレベルではなく、オーディオ装置もアンプが10万円、スピーカーが20万円といったクラスですが、音の変化には敏感だと思っています(20歳頃から始めて、70に近い年になっていますが)。
      PCからDDCを介してDACに入力したら音が良くなるというのに気づかないオーディオマニアは、やっぱり音への感受性が低いことを認めているように思えます。
      それにしてもこんなに簡単に音が良くなるのであれば、どうして日本のメーカーはそういうものを作らないのか不思議です。
      DAC-1000(ONKYO)にも当然DDCはあるはずですが、やはりyungさんがおっしゃるようにDDCとDACの分離に意味があるのかな、PCとDACの分離で音が良くなるように。

      • old boy
        2013年7月10日 at 8:52 PM

        USB-DDCの効果を知って、他にどんなものがあるのかと調べてみたら、アマゾンで
        Fan Music USB-DDC Coaxial OUT FM-6011 16Bit 32K 44.1K 48K  ¥3280
        という安価なものがあったので試してみたら、音質的にはhiface two(¥24000)とあまり変わらない。
        16Bit 32K 44.1K 48K と狭いですが、VortexBox用には問題なく機能したので、hiface twoはハイレゾ用PCに使用することにしました。
        世の中、ピンからキリまであっておもしろいです。
        真空管ラジオの時代からこんな世界がくるまで生きてこられたのは幸せです。

  4. 2013年9月12日 at 6:26 PM

    いつも楽しく拝見させていただいています。

    今回、Stable – 0.17.2を使おうと思い、いつも通りコピペを繰り返し、
    makeしようとした所、makefileがも見つかりませんと怒られます。

    makeの直前まではコピペなので間違ってないと思うのですが、どこが悪いのでしょうか?
    ちなみに、makeとls -aはこんな具合です。

    make: *** ターゲットが指定されておらず, makefile も見つかりません. 中止.
    root@voyage:/usr/src/mpd-0.17.2# ls -a
    . Makefile.am UPGRADING config.log depcomp mpd-0.17git-20120226rtopt.diff
    .. Makefile.am.orig aclocal.m4 config.sub doc mpd.service.in
    AUTHORS Makefile.in autogen.sh configure install-sh scripts
    COPYING NEWS config.guess configure.ac m4 src
    INSTALL README config.h.in configure.ac.orig missing test

    よろしくお願いします。

    • 2013年9月13日 at 9:42 PM

      おそらく、makeの前の段階、「./configure -disable-ipv6 -enable-rtopt -disable-sndfile」の部分でエラーコードをはき出しているはずです。
      そのエラーコードを情報提供しないと神様でもサポートは不可能だと思います。

      なお、老婆心ながら、「音楽を少しでも良い音で聴く」事が目的ならば、自分の力でコンパイルするよりは、シンさんヴァージョンの「Voyage MPD」を組み込んだ方がいいかと思います。

      http://www.yung.jp/bony/?p=2138

      Linuxk絡みのノウハウがほとんど必要がありません。
      または、「Cubox」にみみず工房さんのイメージファイルを書き込むのもお勧めです。

Comments are closed.