MPDをバージョンアップ(0.16→0.17)

「Voyage MPD」をアップデートすると、なぜか肝心の「MPD」だけは保留扱いになってバージョンアップがされません。
私がインストールした「Voyage MPD」には「MPD 0.16.0」が組み込まれているのですが、「MPD 0.17.0」にバージョンアップされても、通常の
# apt-get update
# apt-get upgrade
というやり方では、なぜかアップデートされません。
実は、「されている」と思っていたのですが、なぜか「されていない」ことに最近になって気がつきました。

これは気分的にあまりよろしくないのですが・・・、

# apt-get innstall mpd

と言う形で、個別に指定してあげるとアップデートされるようです。

ところが、一部で、ソースコードからコンパイルしてインストールした方が音がいいという話が出ています。
ただでさえ、「Voyage MPD」は導入のための敷居が高いと言われているに、ますます高くなるなと思いつつ、「音がいい」と言われると試してみないと気がすまなくなります。
困った性分です。

詳しくは、みみず工房さんの
「MPDの最新版をビルド」をご覧ください。
詳しく解説がされていて、私もこのページを参考にインストールしてみました。

導入への敷居が高い「Voyage MPD」

Googleの検索窓に「Voyage MPD」と放り込んでみると、新しい記事が次々と追加されているのが分かります。その大部分は、「Voyage MPD」の音質の素晴らしさについて言及しているのですが、同時に「導入」の敷居の高さについても随分とぼやかれています。
ある程度Unix系のPCをコマンドラインからいじった経験のある人間なら何とかクリアできるのでしょうが、WindowsのGUI画面からしかPCを操作したことがない人にとってはやはり「異次元ワールド」のようです。
他の再生システムとは一線を画すほどの高音質と、使い勝手の良さを考えればもっと広まってもいいはずなのですが、それを阻んでいるのはこの「導入」のための敷居の高さなのでしょう。

しかし、この敷居をだれでも越えられるための取り組みは少しずつ進んでいるようです。
それが、「Votage MPD」の作者が運営している「Voyage Store」です。ここで、「Voyage MPD Starter Kit」と言うものの販売を始めています。

今まで随分と苦闘しながらもどうしても「音が出なかった」という人も、このキットを使えばすんなりと「音出し」までいけたという報告がちらほらとあらわれています。価格的にも1万円程度ですから、「どうしてもダメ」だった人には一つの選択肢にはなりそうです。(ただし、支払いは「PayPal」only・・・とのことです)

とは言え、それでもまだまだ敷居が高いです。

しかし、思い出してみれば、私が初めてソースからビルドしてLinuxにインストールしたソフトは全文検索システムの「Namazu」でした。その時も、あれこれ「解説」してくれる文章は結局は理解できなかったのですが、とにかくコマンドだけをコピーして端末に貼り付けることでインストールまでたどりついたものです。
その経験から考えると、いらぬ「解説」よりは、端末にコピー&ペーストできる形で呈示した方が「親切」ではないかと思うようになってきました。
そして、結局この世界は理屈よりは「動いてなんぼ」ですから、「Namazu」で作ったシステムで初めて検索結果が表示されたときの嬉しさは今でも忘れられません。
そして、そう言う「物まね」を続けているうちに、何となく「コマンドライン」の世界が分かっていったように感じます。

ですから、「MPD」をソースからコンパイルしてインストールしてみたいが、コマンドの世界は苦手だという人はとにかくコピー&ペーストでチャレンジしてみてください。
また、このやり方は「既存のMPD」を壊すことはありませんので、元に戻すのは簡単にできますから、「危険性」は低いやり方です。

コマンドだけ紹介しておきます

# 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をソースからコンパイルしてインストールする上で必要なライブラリ群です。事前にインストールしておきます。

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

Wave・FLAC・mp3を再生するだけならこれくらいインストールしておけば大丈夫なのではないでしょうか。

# mpdの最新版をインストールする
git clone git://git.musicpd.org/master/mpd.git
cd ./mpd
./autogen.sh
CFLAGS=”-O2 -mtune=`uname -m`” ./configure –disable-ipv6
make
make install

ここが一番時間がかかりますので、あわてず様子を見ましょう。特に「./configure」や「make」では訳の分からない文字列が端末の画面にずらずらと表示されるのではじめは驚きますが、気にしないで終了するのを気長に待ちましょう。

# 起動させるmpdを変更する
echo DAEMON=/usr/local/bin/mpd >>/etc/default/mpd

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

/etc/init.d/mpd start # MPDを起動する。
mpc version # MPDのバージョンを確認する。

これで「mpd version: 0.17.0」と表示されればアップデート成功です。

ところが・・・音が出ない・・・(^^;

さて、これで「ソースからコンパイルしたMPD 0.17.0」の音はいかに・・・と言うことで再生してみたのですが・・・何と、音が出ません・・・<(→.←)アチャー しかしながら、こういう事はよくあることなので、あれこれと設定を調べてみたり、Google先生に聞いてみたり・・・と最初は気楽に構えていたのですが・・・、どうしても埒があきません。<(^ー^ι)困ったな? 不思議なのは、クライアントソフトからは問題なくMPDに接続できて、再生させてみると、何のエラー表示もなく再生のバーが動き出す事です。 にもかかわらず音だけが出ません。

最初は「ALSA」のボリューム設定がアップデートすることで勝手に変更されたのかと思ったのですが(ALSAの初期設定はミュートなので)、これまた不思議なことに「MP3」は問題なく再生できるのですから、この線は消えました。
mpd.confの設定を変えてクライアントソフトからボリュームの調整ができるように変更しても音は出ません。
「apt-get」でバイナリからインストールしたときは音が出るのに、ソースからコンパイルしてインストールしたときは音が出ないというのは、実にもって理解しがたい挙動ですが、出ないものは出ないので、これでは困ります。

そこで、やむなく

vi /etc/default/mpd

としてmpdファイルを開き、その最後に記述されている

/usr/local/bin/mpd

という一行をコメントアウトしてから

#/usr/local/bin/mpd

既存のMPDを再起動しました。

/etc/init.d/mpd stop
/etc/init.d/mpd start

これで、恐る恐る再生してみると、何の問題もなく音が出るではないですか。
バージョンはどちらも同じ「MPD 0.17.0」です。
違うのは、ソースからコンパイルしてインストールしたか、バイナリからインストールしたかの違いです。
実に不思議と言うしかない現象ですが、こうなると、PCに接続しているフェーステックの「UDIF7」と「MPD 0.17.0」との「相性」が「微妙」に悪いとしか思えません。
そう思って、またGoogle先生に聞いてみると・・・ありました!!

なんと、これもまた「みみず工房」さんの記述で、「MPD 0.17.0」+「ALSA」+「フェーズテック」の組み合わせは「相性」が悪いらしいと言うのです。
そして、「ソースからコンパイルしたMPD 0.17.0」+「OSS」+「フェーズテック」の組み合わせならば問題なく音が出るとのことです。
そんなわけで、つい最近に「私は当分の間「ALSA」で突っ張りたいと思います。」と書いたにもかかわらず、しばらくは宗旨替えをして「ALSA」→「OSS」に移行しました。
この移行の仕方は

「Voyage MPD」にOSSを導入

を参考にしてください。
結果は無事に音が出ました。

と言うことで、今日はここまでで、「ソースからコンパイルしたMPD 0.17.0」+「OSS」+「フェーズテック」の組み合わせによる音質はもう少し聞き込んでから報告してみたいと思います。


8 comments for “MPDをバージョンアップ(0.16→0.17)

  1. koroneru
    2011年4月26日 at 7:39 PM

    どうもお世話になっております、コロネルです。
    ユングさんのブログを参考(というか全部^?^;)にして自分も070>017にしてみました。同じUDIF7ですので、やはりALASAでは無音のままでした。OSSにしてみたところ、テストでもOKとなり、無事に入ったようでした。

    しかしなぜかMPD.confのALASAをコメントして、OSSのコメントだけを外した状態ではmpdに接続できませんでした。
    ALASAのコメントも外すとプレーヤーに接続でき、Audio outputsにもALASAとOSSが出てきます。ALASAのチェックを外して音が出る事を確認し(ALASAとOSSの両方にチェックが入っていても音は出る)、しばらく聞いてみたのですが、ランダムにブツッとノイズが入ります。

    ユングさんのとこではノイズとか出てないですか?070の時は無かったので、varupまであきらめるしか無いかとは思っているとこです。

  2. ユング君
    2011年4月27日 at 8:41 PM

    >ALASAのチェックを外して音が出る事を確認し(ALASAとOSSの両方にチェックが入っていても音は出る)、しばらく聞いてみたのですが、ランダムにブツッとノイズが入ります。

    はい、確かにこの現象は私も確認していました。しかし、「mpd.conf」の設定を弄れば解決するだろうと思っていましたので、あえて触れませんでした。
    しかし、「audio_buffer_size」を大きくしても、「buffer_before_play」を小さくしても、この音切れによるノイズが解消しません。

    ソースからビルドした「mpd」とバイナリからインストールした「mpd」でこんなにも「挙動」が変わるというのは考えられないので、おそらくは何らかのライブラリが不足しているのではないかと睨んでいます。
    このあたり、もう少し突っ込んでみる必要があるかな?と思っています。

  3. koroneru
    2011年4月27日 at 9:21 PM

    あーやはりそうですか、うーむ仕方ないですね。
    自分もmpd.confでさんざん調整してみたのですが、結局改善しませんでした。

    とりあえず自分は070に戻してapt-getでVarUPして使う事にします。
    いままでは/dev/sdaしか作らずにmpdを入れていたので、今度はfdiskでドライブを分けて入れてみます。wavファイルを同じPCに入れておりますので、再インストールすると、また全部のwavファイルを共有で接続したwin機から落とさないといけないので。

    そのままwin機も起動して共有フォルダから直接再生してもいいのですが、なんだかそのためだけにPCを2台とも起動させておくのも我慢できなくて。同じ部屋にあって動作音が気になるのもありますが。

  4. yo
    2011年4月27日 at 9:36 PM

    ユングさん、こんにちは。

    MPD 0.17.0 + Alsa でフェーズテックが不思議な動き方をする件はバイナリだとOKですか。
    となるとbuildのパラメータの設定が原因ですかね。17のバイナリで設定情報(/usr/bin/mpd -V)がどんな具合に表示されるか教えてもらえますか。
    僕の環境ではapt-get install mpd とやっても 0.16.1 になってしまい 17にはならないのですよね。/etc/apt/source.listで特別な設定をされていますか ?
     
    あと僕のサイトの新しい記事でyanさんのパッチを紹介しています。これで、かなり強力なチューニングが可能になりますので、お勧めします。
    http://kubotayo.web.fc2.com/articles007.html

  5. doctordyper
    2011年4月28日 at 6:49 AM

    お世話になります。PTのinoueです。
    UDIF7をご愛用いただいてありがとうございます。
    ビルド版のMPDで音が出ないのは私も前に0.16を
    ビルドした時に同じような症状がありました。

    試しにmpd.confのALSAの項目にオーディオデバイスの
    hw番号を設定する行がありますが、(hw:0.0とか)
    この行をコメントアウトしてみてください。
    するとMPDがALSAにデーターを渡すルートが
    変わるようで なぜか音が出るようになりました。
    (但しサンプリングレートが固定されます。
    音質は???になりました)確かめて頂けると幸いです。
    これからするとビルドの時に何か違いがあるように思います。

    こちらでもOSSでは音が出ていますが
    プチプチが出るのはOSSがアシンクロナスモードに
    対応していないのが原因のようです。
    OSSの開発元に問い合わせてみましたが
    手を入れる予定はないとのことでした。

  6. yo
    2011年4月30日 at 7:57 PM

    MPD 0.17.0 + Alsa でフェーズテックが不思議な動き方をする件、原因が分かりました。
    「–disable-sndfile」をビルドのパラメータに加えて下さい。詳しくは、暇が出来たら僕のサイトに書き込みます。

  7. ユング君
    2011年4月30日 at 9:00 PM

    なるほど、「sndfileを有効化してビルドするとsndfileのdecoderが32bit出力にて使われてしまう」ということかな?
    私も一度試しにやってみます。

    報告感謝します!!

  8. ユング君
    2011年4月30日 at 9:19 PM

    cd ./mpd
    make clean
    ./autogen.sh
    ./configure -disable-ipv6 -disable-sndfile
    make
    make install

    はい、確かにこれでMPD 0.17.0+ALSAで音が出ました。
    音質に関しても問題はありません。
    mpd.confでコメントアウトするやり方は、おそらくデコードしたものをもう一度エンコードすることで音が出ていた可能性が高いですね。
    そうだとすると、音質が劣化するのは当然ですね。

Comments are closed.