yanさんのパッチファイルを適用して優先度を弄る方法

この情報は2013年1月の段階ではかなり古くなっています。最新事情はこちらをご覧ください。

yanさんが解明してくれたMPDの秘密

再生ソフトであるMPDを動作させるための一連のスレッドの優先度はデフォルトではこうなっています。

# ps -eLo pid,lwp,rtprio,priority,time,cmd | egrep “mpd”
2128 2128 – 20 00:00:00 /usr/local/bin/mpd /etc/mpd.conf
2128 2130 – 20 00:00:00 /usr/local/bin/mpd /etc/mpd.conf
2128 2131 – 20 00:00:00 /usr/local/bin/mpd /etc/mpd.conf
2128 2249 – 20 00:00:00 /usr/local/bin/mpd /etc/mpd.conf
2251 2251 – 20 00:00:00 egrep mpd

上から全て「/usr/local/bin/mpd /etc/mpd.conf」となっているのですが、それぞれ順に「main thread、player thread、decoder thread、output thread」の優先度を表示しています。
見れば分かるように、全てのスレッドが「- 20」となっていますから、通常のLinuxのプロセスと同じ設定です。どのスレッドも特別に優先的な扱いを受けるようにはなっていません。
そこで、できることならば、この一連のスレッドに関しても優先度を弄ってみたいと思うのですが、残念ながら今までは手出しができませんでした。

と言うか、もっと正確に言えば、MPDという再生ソフトがこのようなスレッドで構成されていることは、全く知られていませんでした。ですから、そう言うスレッドの優先度を変更してみるという「発想」自体がなかったというのが正直なところです。

事の起こりは、yanさんが、MPDのソースコードを読み解いて、MPDが「main thread、player thread、decoder thread、output thread、update thread」というスレッドから成り立っていることを明らかにしてくれたことから始まります。
そして、MPDの設定ファイルである「/etc/mpd.conf」から上記のスレッドの優先度を設定できるようなパッチファイルを公開してくれたことで、私たちのようなド素人でも手を出すことが可能になったわけです。

ですから、ここの設定を変更したい方は、「みみず工房」さんのサイトへ行って、yanさんが公開してくれているパッチファイルを落としてきて、それを適用することが必須となります。ただし、これもまた、いささかハードルが高いのですが、yanさんが提供してくれているパッチは「mpd 0.17」にしか適用できません。
ですから、yanさんのパッチファイルを適用して、上記スレッドの優先度を弄ってみようと思えば、まず最初にソースコードを落としてきて「mpd 0.17」にバージョンアップする必要があります。

まずは、「mpd 0.17」にバージョンアップ

ソースコードを落としてきて、自前でコンパイルしてインストールする手順は既に報告してありますので、まずはそちらを参考にして、バージョンをアップしてください。

MPDをバージョンアップ(0.16→0.17)
MPD 0.17.0+ALSAで音が出ないという問題が解決しました。

以下には、とりあえずバージョンアップのためのコマンドだけ列挙しておきます。

# mpdを停止
/etc/init.d/mpd stop

# 基本ライブライリのインストール
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

# 個別のライブラリをインストール
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ファイルなどをサポートします。(必須)

# mpdの最新版をインストールする
git clone git://git.musicpd.org/master/mpd.git
cd ./mpd
./autogen.sh
CFLAGS=”-O2 -mtune=`uname -m`” ./configure -disable-ipv6 -disable-sndfile # -disable-sndfileを忘れると、ALSAで音が出ないトラブルが起こるときもあります。
make
make install

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

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

パッチファイルを適用する

次に、yanさんが公開してくれているパッチファイルを適用して、再度コンパイルしてインストールし直します。
まずは、みみず工房さんのサイトに行ってyanさんのパッチファイルを落としてきて適用します。

cd ./mpd # mpdのソースコードが展開されているディレクトリに移動する。
wget http://hpcgi3.nifty.com/yo_kubota/downlog.cgi?data/mpd-rtopt-2.tgz #パッチファイルをダウンロードする
tar zxvf mpd-rtopt-2.tgz # 解凍する
patch -p1 < mpd-0.17-0414-rtopt.diff # パッチファイルを適用する これで、MPDのソースコードにパッチファイルが適用されましたので、再度コンパイルし直してインストールします。 ./autogen.sh CFLAGS=”-O2 -mtune=`uname -m`” ./configure -disable-ipv6 -enable-rtopt -disable-sndfile # -enable-rtoptを追加することで「realtime_option」が有効になるので必須。 make make install 「realtime_option」は「memlock」と「audio_output」以外のスレッドの優先順位を指定するものなのでこれを忘れるとパッチファイルを適用した意味がなくなります。 configureのMPD CONFIGURATIONメッセージのOther features:欄に(+rtopt)となっていればrealtime_optionは有効になるので、その時点で必ずチェックしてください。 なお、「memlock」については私もあまり理解できていないのですが、これは、「Ubuntu」のコミュニティで音楽再生の論議が行われていて、その中でこれをオンにした方が音がいいという議論がなされているので適用されたみたいです。 ただし、ネット上の情報を見ていると、必ずしも「memlock」をオンにすれば音がよくなると言う単純なものではないようですので、最終的には自分の耳による判断が必要になると思います。 どうも、それぞれのPC環境によってかなり左右されるようです。

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

パッチファイルが適用されれば、「/etc/mpd.conf」を編集することで、

main thread:MPDを起動し、クライアントとの通信を行う
player thread:プレーヤーのコマンド(再生、ストップなど)を管理する
decoder thread:音楽ファイルを読み込みPCMへ変換する
output thread:PCMデータをドライバーに受け渡す
update thread:tag_cacheのアップデートを行う

のスレッドの優先度を弄ることができるようになります。
やり方は、以下のような書式で追記するだけです。

vi /etc/mpd.conf

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

main_priority “OTHER:0”
player_priority “FIFO:51”
decoder_priority “OTHER:0”
update_priority “OTHER:0”
}

これは全く存在しない記述ですので、これをコピーして「/etc/mpd.conf」の頭の部分に貼り付ければいいと思います。

最初の3行は「memlock」に関する記述です。

memlock “yes” //「memlock」をオンにする。
stack_reserve “1024” //「memlock」のパラメータ。
heap_reserve “10240” //「memlock」のパラメータ。

stack_reserveとheap_reserve の数値に関してはまあこんなものでしょうから、ポイントは「memlock」をyes(オン)、no(オフ)にして聞き比べればいいかと思います。no(オフ)の方が好ましいと思えば、そちらを適用してください。

次の4行はMPDの「audio_output」以外のスレッドの優先順位を指定する記述です。

main_priority “OTHER:0″
player_priority “FIFO:49″
decoder_priority “OTHER:0″
update_priority “OTHER:0″

“OTHER:0″はlinuxの通常のプロセスと同じ扱いで言いと言うことを示しています。
“FIFO:49″は優先度を上げることを意味していて「1~99」の数値が割り当てられます。数値は大きいほど優先度が上がります。

次に、「audio_output」の優先度は、それぞれの「audio_output」ごとに割り当てます。
私の場合は「ALSA」しか使っていませんので、

audio_output {
type “alsa”
name “My ALSA Device”
device “hw:0,0”
priority “FIFO:52”
}

としています。

「priority “FIFO:52″」というのが優先度の設定です。
つまり、私の場合は「player thread」の優先度を「49」、「output thread」の優先度を「52」に変更して、それ以外のスレッドはデフォルトのままという設定です。

最後に設定ファイル(/etc/mpd.conf)の編集が終われば、MPDを再起動させて新しい設定を反映させます。

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

次に設定が反映しているかどうか確認します。

ps -eLo pid,lwp,rtprio,priority,time,cmd | egrep “irq/16|irq/19|mpd|cifsd”

1151 1151 50 -51 00:00:00 [irq/19-ata_piix]
1159 1159 52 -53 00:00:00 [irq/19-uhci_hcd]
1161 1161 50 -51 00:00:00 [irq/16-uhci_hcd]
1504 1504 50 -51 00:00:00 [irq/16-i915]
1839 1839 53 -54 00:00:00 [irq/16-eth0]
1899 1899 53 -54 00:00:00 [cifsd]
2132 2132 – 20 00:00:00 /usr/local/bin/mpd /etc/mpd.conf
2132 2134 49 -50 00:00:00 /usr/local/bin/mpd /etc/mpd.conf
2132 2135 – 20 00:00:00 /usr/local/bin/mpd /etc/mpd.conf
2132 2203 52 -53 00:00:00 /usr/local/bin/mpd /etc/mpd.conf
2209 2209 – 20 00:00:00 egrep irq/16|irq/19|mpd|cifsd

優先度の設定がきちんと反映されていることが分かります。

肝心なのは優先度の設定をどうするかです

ここで、一番問題となったのは、「decoder thread」の優先度をどうするかという問題なのですが、基本的には再生ファイルとして「Wave」しか使わないので、これは静かにしておいてもらった方がいいだろうと判断したわけです。これが、「FLAC」が主体だと判断はまた異なってくるのではないかと思われます。

次に頭を悩ませたのが、「player thread」と「output thread」の優先度をいくつに設定するかです。
これは、前回設定した「irq/19-uhci_hcd」「irq/16-eth0」「cifsd」の優先度とも兼ね合いを考える必要があります。

個人的には

「irq/16-eth0」(53)=「cifsd」(53)>「output thread」(52)=「irq/19-uhci_hcd」(52)>「player thread」(49)

としたのですが、今もいささか悩んでいるところです。
音楽データが川上から川下にスムーズに流れていくためには、川上重視と言うことで

「irq/16-eth0」(54)>「cifsd」(53)>「output thread」(52)>「irq/19-uhci_hcd」(51)>「player thread(49)

という設定もあるのかなと言う「考え」がひらめいたりもします。(理論的根拠は全くなくて、私の直感だけですが・・・)
しかし、試してみましたが、これはダメでした。音が痩せてしまって明らかにまずい方向に向いてしまいました。
やはり、音の出口を優先した方がいいのかもしれません。
しかし、これもまた、それぞれが使っている環境によってこのあたりの数値はずいぶん変わってくるのではないかと思われます。
ですから、最終的には自分の耳を信じて「カットアンドトライ」を繰り返して自分なりの「最適値」を探し出すことが重要なのだと思います。

まさに、趣味性満点の試みだと思います。

現時点での私の設定(追記)

そんなこんなで、いろいろな方の情報も参考にして、自分自身も試行錯誤を繰り返して、現時点では以下の設定が一番納得のいくものかと考えています。

[/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 “My ALSA Device””
device “hw:0,0”
priority “FIFO:99”
}

[/etc/rc.localの設定]

chrt -f -p 99 `pgrep irq/19-uhci_hcd`
chrt -f -p 52 `pgrep irq/16-eth0`
chrt -f -p 52 `pgrep cifsd`

基本的な考え方は「出口」優先です。理由はよく分かりませんが、「入り口」優先よりは「出口」優先のほうが音質が改善されます。それも、じっくり聞いてみて「何となく」というようなレベルではなく、だれが聞いてもはっきりと分かるほどに違いがあります。

そこで、
まず、全プロセスの中で一番優先度が高いのは[migration/0]と[posixcputmr/0]で、それぞれ「99」が割り当てられているので、音の出口にあたる「irq/19-uhci_hcd」にも「99」を割り当てます。
次に高い優先度が与えられているのが[irq/14-ide0]などの「50」ですから、優先度を上げたいプロセスには「51~98」の間で数値を割り振ればいいと言うことになります。
そこで、音の出口に近い方から高い数値を割り当てていきます。「audio_output」に「53」を割り振っていますが、この「53」という数字には大きな意味はありません。

「output thread」(53)>「irq/16-eth0」(52)=「cifsd」(52)>「player thread」(51)

となるように「51~98」の間で適当に数値を割り振っただけです。
ですから、何か別のプロセスが高い優先度で動いているような環境ならば、それにあわせて数値を変えればいいと思います。

さて、この設定で再生される音楽なのですが、デフォルトの状態と比べると全ての要素でワンランク以上グレードアップした感じです。
まずは、この手のシステムの一番の得意分野である「透明度」「解像度」ですが、明らかにワンランクアップしています。まさに「検聴器」という言葉を呈したいほどで、アナログ初期の録音だとテープの編集箇所まで指摘できるほどです。
また、往々にしてこのような「高解像度」とバーター関係にあるように思われる「音色」についても、全くきつさや固さは感じません。それどころか、一つ一つの楽器の音像はよりしっかりとして太さを増したようにすら感じられます。特に、チェロやコントラバスのような低弦楽器の響きは出色です。ピアノの低音部の深々とした響きも同様です。
つまり、本来ならば、同時に成り立つことは考えにくいようなことが起こっているわけです。

ただ、楽器の持っている「色気」みたいなものを描き出すのはあまり得意ではないようです。
つまり、このシステムはデフォルトでもそうなのですが、基本的には蒸留水のような「淡泊」さが持ち味で、音楽を濃厚に描き出すようなことは絶対にしません。
ただし、それは録音の中にそのような「濃厚さ」を演出するような要素がもともと含まれていないためだと私は考えています。
しかし、オーディオというのは基本的のは趣味の世界ですから、音楽をそのように濃厚に描き出してほしいと思う人がいてもそれは当然のことであって、そのような方にとっては物足りないシステムだと思われるかもしれません。

あと、「音場」の広がりですが、これはデフォルトの状態とあまり大きな違いは感じませんでした。
おそらく、デフォルトの状態でもその三次元的な広がりの素晴らしさは感じていましたから、頭打ちと言うことでしょうか。

ざっと、こんな感じですが、やはり「音」を言葉で表現するというのはもどかしいですね。
ただ、このレベルを実感すると、やはり「チューニング」は必須と思われます。

17 comments for “yanさんのパッチファイルを適用して優先度を弄る方法

  1. まさし
    2012年1月28日 at 4:53 PM

    どうも参考にさせてもらっております、どうしても進まない所があって悩んでおります。

    CFLAGS=”-O2 -mtune=`uname -m`” ./configure -disable-ipv6 -disable-sndfile のところなのですが、なぜかこれを打つと。
    -bash: -mtune=i686”: command not found
    となってしまい先に進めません。スペースを詰めたり、oをゼロに変えたり色々としてみたのですが、command not foundになってしまいます。

    voyageのヴァージョンは0.8.0の新しいものです。mpdは016と表示されます。
    もし何か分かれば教えてもらえないでしょうか?SSHはPoderosaで、windows7から繋げております。

  2. ユング君
    2012年1月28日 at 5:36 PM

    >CFLAGS=”-O2 -mtune=`uname -m`” ./configure -disable-ipv6 -disable-sndfile

    これがエラーになるようでいsたら、

    ./configure -disable-ipv6 -disable-sndfile

    だけで試してみてください。それでも、エラーになるようだと、その時の一度エラーコードを教えてください。

  3. まさし
    2012年1月28日 at 10:55 PM

    あれから自分なりにいくつか試してみたのですが
    ./autogen.shをすると以下のメッセージが出ます。

    checking for autoconf … checking for autoheader … checking for automake … checking for aclocal … You must have the following installed to compile mpd:
    autoconf (>= 2.60)
    autoheader (from autoconf) (>= 2.60)
    automake (>= 1.11)
    aclocal (from automake) (>= 1.11)
    Download the appropriate package(s) for your system,
    or get the source from one of the GNU ftp sites
    listed in http://www.gnu.org/order/ftp.html

    どうやら基本パッケージが足りないので、一番最後のサイトからインストールしろ、と言われている?ような。。。

    基本パッケージのインストールでもエラーらしき表示が出ますので、そもそも そこからつまずいているかなーと感じております。

    apt-get install git binutils gcc make subversion autoconf automake autotools-dev libtool pkg-config

    をしてみると、一番最後に

    Do you want to continue [Y/n]? y
    Abort.

    と出て終わっています。

    apt-get install build-essential libncurses5-dev libncursesw5-dev linux-headers-`uname -r` libglib2.0-dev

    をしてみると、一番最後に

    E: Unable to locate package linux-headers-3.0.0-voyage
    E: Couldn’t find any package by regex ‘linux-headers-3.0.0-voyage’

    と出ていますので、カーネルに合ったファイルが見つからないと出ている?

    うーん、どうやらもう少しLINUXを勉強したほうがいいみたいです、、、

    ./configure -disable-ipv6 -disable-sndfile

    を試してみたのですが、
    ”-bash: ./configure: そのようなファイルやディレクトリはありません”
    と表示されます。

    ./mpdの中には configure.acというファイルなら存在しています。

  4. まさし
    2012年2月5日 at 4:52 PM

    なんとかパッチのインストールが出来ました。
    やはりエラーメッセージはよく読まないといけませんね、、、
    gzファイルの解凍の仕方も分かりましたし、ちょっとだけlinuxのスキル?も上がった気分です。それでは?

  5. まさし
    2012年2月5日 at 4:53 PM

    なんか最後の それでは の後ろになぜか疑問符が。ほんとはチルダを入れたのですが
    それだけです。

  6. Phoenicia
    2012年2月6日 at 10:47 PM

    ユング様

    今晩は
    優先度を変えようとトライ中です。
    MPDバージョンを0.17.0に変更するところまで行いました。
    この状態でで再生すると
      XMOS:歪の多い音で使用に耐えず
      エレアトさんUDA基板:フルボリュームでのホワイトノイズ
    となってしまいました。
    取り敢えず/etc/default/mpdからDAEMON=/usr/local/bin/mpdをコメントアウトして0.16.0に戻しています。

    0.16.0でも十分満足できる音でしたので当分はこれで我慢しようと思います。

    そこで質問なんですが

    デフォルトのMPDは/etc/defaultディレクトリにあるmpdなのでしょうか。ls -lで見るタイムスタンプが最終makeを行った時刻になっていてビビっています。
    今回の作業で既存のmpdに何か改変が加ったのでしょうか。
    悩むぐらいなら、もう一回まっさらからクリーンインストールした方が無難でしょうか。インストールだけは慣れましたので1時間ほどで済みます。
    因みに現在の/etc/default/mpdは下記の様になっています。

    ## Defaults for the MPD init script, sourced by /etc/init.d/mpd on Debian
    ## systems. Uncomment (remove the leading ‘#’) and change values as needed.

    ## Change this to prevent MPD from being started as a system service (for
    ## example, if you want to run it from a regular user account)
    START_MPD=true

    ## The configuration file location for mpd:
    # MPDCONF=/etc/mpd.conf
    #DAEMON=/usr/local/bin/mpd

  7. yan
    2012年2月7日 at 12:09 AM

    Phoeniciaさん

    > デフォルトのMPDは/etc/defaultディレクトリにあるmpdなのでしょうか
    mpdのロードモジュールは/usr/bin/mpd です。
    /etc/defaultはmpdのデフォルトの状態を指定するための定義ファイルです。
    インストール時に/etc/default/mpdを書き直しているようなのでタイムスタンプも変わります。
    もとに戻しておけば問題ありませし、再インストールの必要もありません。

    今、確認したら最新版のmpdでは一部パッチがエラーになります。
    パッチを当てると Makefile.am.rejがあると思います。
    これがある場合はMakefile.amのパッチに失敗しています。

    音が歪む件はちょと調査しますので、すこし待って下さい。

  8. Phoenicia
    2012年2月7日 at 12:29 AM

    yan様

    コメントありがとうございます。
    >/etc/defaultはmpdのデフォルトの状態を指定するための定義ファイルです。

    ですね。
    焦ってました。一瞬頭の中が真っ白になっていたもので。

    まだパッチを当てるまでは進めていません。
    やったのは
    1.Voyage MPD 0.8.0をLive CDからインストール
    2.grub 2.0 にアップデート
    3.下記プロセスの起動抑止
      avashi-dae$,cron,dnsmasq,hostapd,klogd,lighttpd,lirc,
      nfs-common,portmap,pppd-dns,rsync,sysklogd,watchdog,wd_keep$
    4.MPDバージョンを0.17.0に変更

    までです。この状態で正常に音が出なければ次には進めそうにありません。

  9. yan
    2012年2月7日 at 10:00 PM

    Phoeniciaさん こんばんは

    > 4.MPDバージョンを0.17.0に変更
    これは、gitから最新のバージョンをダウンロードしてコンパイルしたんですか?

    みみず工房さんでコンパイル済みの0.17がダウンロードできるので一度それで試したらいかがですか?
    これでOKなら最新版に問題あるか、コンパイル方法に問題があると思われます。

  10. Phoenicia
    2012年2月7日 at 11:03 PM

    yanさん

    ありがとうございます。
    ユングさんの本エントリの手順に従ってgitから最新バージョンをダウンロードとコンパイルしました。(したつもりです)

    本日Alixそのものが起動しなくなり、再度1から3迄をやり直したところです。
    途中、mpd.confに
    decoder {
    plugin “sndfile”
    enabled “no”
    }
    を記述するのを忘れ、何故か44.1k音源が88.2kにアップサンプリングされたりと散々でした。
    悪い時には悪いことが重なるようで、使ったCFカードがDDWinで認識されずバックアップが取れない状態です。

    ひょっとしたらCFカード自体にも障害があるのかも知れません。

    コンパイル済みの0.17で一度試してみます。

  11. Phoenicia
    2012年2月8日 at 12:56 AM

    yanさん

    再び失礼します。

    みみず工房さんのサイトからmpd017g-rtopt-build.gzをダウンロードさせて頂き
    試したところ正常に再生できました。
    ありがとうございます。

    実は最初にインターネットラジオ版を試したんですがエラーでmpdが起動しませんでした。

    次は、リアルタイムカーネルやXFS等...

    身の程を弁えて暫くはこのままで使用することにします。

  12. Phoenicia
    2012年2月8日 at 7:37 PM

    XFS化を行ってしまいました。

    別途Voyage MPDをインストールしたUSBメモリでノートPCを立ち上げ、2台のCFカードリーダに接続したCFカード間で全ファイルコピーを行った後、SuperGrubでgrub情報を書き込むと言う、みみず工房さんの手順に従って問題なく終了しました。

    XFS化による音質の向上は今までで一番効果があったように思います。

    yanさん、みみず工房さん、どうもありがとうございました。

    リアルタイムカーネルは少しハードルが高いのでLINUXに習熟してからトライしようと思います。

  13. yan
    2012年2月9日 at 12:07 PM

    Phoeniciaさん

    動いてよかったですね。
    rt対応のカーネルはシンさんのところでalix用にコンパイル済みの物がダウンロードできます。

    また、”Ama Ama Audio Visual”さんの情報によるとシンさんのところにはシンのチューニングしたCFのイメージ(alix用)がダウンロードできるようです。(私はまだ見つけてません)
    これだと、ddだけでインストールできるのでお手軽かもしれません。

    また、xfsは試していないのですが、評判はいいようですね。
    以前の議論を蒸し返してしまうかもしれませんが、nasに音楽データをおいた場合、mpdは再生中にはdiskのioは一切行わないんですよね*1。それで、ファイルシステムによって音が変わるのが疑問でしたので実施は見合わせていたのですが、時間ができたらシンさんのイメージで確認しようと思ってます。

    *1 /tmp/statusとかに再生中の曲が保存されますが、/tmpはxfsではないんですよね。

    シンさんの所にはalixの改造情報もあってなかなか有用です。
    usbコントローラのチップセット用の48MHzのクロック交換は結構効果がありました。
    もし、まだでしたら一度読まれることをお勧めします。韓国語がメインですが日本語の情報もあります。

  14. Phoenicia
    2012年2月9日 at 1:38 PM

    yanさん

    シンさんのHPはちょくちょく覗かせていただいています。
    色々面白いものがありますね。
    韓国語なのとコンパイルは私にとって鬼門の様なので、コンパイル済みのイメージファイルなら何とかできるかも知れません。

    XFSで音が良くなるのは、或いは良くなったと感じるのは、理由が良く判りません。

    /tmpはtmpfs形式ですね。

    CFカードがXFSになってもmpdのサイズは400KB程度なのでmpdがメモリにロードされたままで実行されるのなら、CFカードのフォーマットには無関係であるように思います。linuxの構造はそうなっていないのでしょうか。
    更に、そもそも音が変わるとは何なのでしょうか。
    DDCから出力されているPCMデータを取り込んでXFSの場合とext2の場合とで比較すれば何らかの違いがあるのかないのか。
    奥が深いですね。

    48MHzのクロック交換もアシンクロナスなら関係ないと思ってやってませんが、その内試してみます。そもそも今はDAC直前のメモリバッファで高精度クロックで叩き直してますので変わらないだろうと思っていました。
    しかしXFSで音が良くなって聞こえてしまったので、いいと思われることは貪欲にトライすべきかも知れません。

  15. yan
    2012年2月9日 at 10:16 PM

    Phoeniciaさん

    > XFSで音が良くなるのは、或いは良くなったと感じるのは、理由が良く判りません
    XFSを試された方はみんな効果ありといっています。(もっとも、Phoeniciaさんを含めて4人ほどですが)
    ですから、確かに効果はあるのだと思います。

    > 48MHzのクロック交換もアシンクロナスなら関係ないと思ってやってませんが、その内試してみます。そもそも今はDAC直前のメモリバッファで高精度クロックで叩き直してますので変わらないだろうと思っていました。

    私がテストしたときはlindemannの24/96というDCCでこれはadaptiveモードで動作しています。
    確かに、アシンクロナスモードでは効果はないかもしれません。

    > linuxの構造はそうなっていないのでしょうか。
    仮想メモリを経由しますが、メモリに余裕がある場合はメモリ内にすべて取り込まれているはずです。

    > 奥が深いですね
    本当にそう思います。

  16. Phoenicia
    2012年2月10日 at 8:17 PM

    シンさんのチューニングされたCFカードイメージをダウンロードして、DDWinでCFカードにコピーしました。

    すんなり起動しました。
    シンさんのチューニングされたmpdは手持ちのDDCではXMOSでしか適用できないので、先のみみず工房さん作のインターネットラジオ版、何もチューニングされてないオリジナルの3種を切り替えて聞いています。
    OSはLinux version 3.0.14-rt31 (root@voyage) (gcc version 4.6.2 (Debian 4.6.2-9) )
    でリアルタイムカーネル、ファイルシステムはxfs、mpdは0.17.0でyanさんパッチ(だと思いますが)適用済み、インターネットラジオ可、とやりたかったことは全て実現できました。

    シンさんにはお礼を言いたいものの韓国語はできないので、もしこの掲示板をご覧になっていたら、

    「ありがとうございました」。

    私のようにlinuxに疎くコンパイルで躓く人間でもイメージファイルを配布してくださる方がいらっしゃることで、mpdの素晴らしい世界を堪能することができます。

    改めて、皆様ありがとうございます。

  17. takumi
    2012年5月24日 at 4:22 PM

    度々申し訳ございません

    パッチファイルを適用する
    の、下記リンク先が無いようなのですが
    http://hpcgi3.nifty.com/yo_kubota/downlog.cgi?data/mpd-rtopt-2.tgz
    分かりませんでしょうか

    また、mpdinstall.tgz を実行する方法が簡単なようなのですが
    どの方法がいいのかが分からずに悩んでいます。
    いろいろサイトは見ているのですが、理解に苦しんでいます。

    現在の状態です
    VoyageMPD Starter Kit
    VoyageMPD 0.8.0
    ALSA driver (1.0.24)
    kernel 3.0.0
    MPD 0.16.5

    アドバイスいただけないでしょうか

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です