「Voyage MPD」にOSSを導入

「Voyage MPD」の正式版がリリース

まず本題に入る前に、ニュースを一つ。「Voyage MPD」の正式版が2月8日の日付でリリースされたようです。
なぜ気づいたかというと、今朝方久しぶりに

# apt-get update
# apt-get upgrade

をすると、何だか山ほどアップグレードされました。
これはいったいどうしたことかと、「しんさんのサイト」を見てみると

「voyage MPDの正式版が2月8日の日付でリリースされました。

 その間、自分のものは勝手にアップデートしましたのであまり変わった所はないようですがとりあえず気付いたところは
 1.何となく動きが落ち着いたように感じます。
 2.ALSAの最新版1.0.24がビルドできるようになりました。」

と報告されていました。(素早いね)

updateとupgradeで最新版に変わったのかは分かりませんが、まあ大丈夫だと思っておきましょう。(一般的にそれが普通ですから)

「OSS」の導入

さて、本題は、最近一部で話題になっている「OSS」の導入についてです。
その話題というのが、どうも「ALSA」より「OSS」の方が音が良さそうだというのですから無視できません。正直言って、ただでさえ敷居の高い「Voyage MPD」が、さらにニッチな世界に踏み込んで、その敷居が棒高跳びでもしないと越せないような高さになると困るな・・・と思いつつも、まあ、私もやってみました。

導入のしかについては「みみず工房」さんが分かりやすくまとめてくれていますので、Linuxにある程度慣れている人なら簡単に実行できると思います。
詳しくは

Voyage MPD インストールリファレンス(追補)?OSSを導入

をご覧ください。
ポイントを引用させていただくと

必要なパッケージの導入

root@voyage:~# apt-get install -y binutils libgtk2.0-0 sed gcc libc6
root@voyage:~# apt-get install -y build-essential linux-headers-`uname -r` gawk libtool libgtk2.0-dev
root@voyage:~# apt-get install -y libesd0 libsdl1.2debian-oss

OSS ソースのダウンロード

root@voyage:~# apt-get install -y mercurial
root@voyage:~# cd /opt
root@voyage:/opt# hg clone http://opensound.hg.sourceforge.net:8000/hgroot/opensound/opensound oss-devel

ビルド用のディレクトリを作成

root@voyage:~# cd ~/
root@voyage:~# rm -rf oss42build  //初めての時は不要
root@voyage:~# mkdir oss42build
root@voyage:~# cd oss42build/

さて、問題は次の手順で、普通はこの後で「configure」に移るのですが、わたしがUSB-DDCとして使っているオンキョーの「ND-S1」では最後の場面(osstest)でエラーが出てしまいました。もちろん、エラーのでない「USB-DDC」や「USB-DAC」もあります。そして、どれがエラーになってどれがセーフなのかはやってみないと分からないようです。

そして、不幸にもエラーになった時の対処法も「みみず工房」さんには紹介されているのですが、やや分かりづらいので簡単に補足しておきます。

まずは「configure」する前に「ossusb_audio.c」というファイルを編集します。

root@voyage:~# vi /opt/oss-devel/kernel/drv/oss_usb/ossusb_audio.c

まずはじめに

static int
read_control_value (ossusb_devc * devc, int endpoint, int ctl, int l)
{

という記述があって、それが終わると今度は

static int
write_control_value (ossusb_devc * devc, udi_endpoint_handle_t * endpoint,
int ctl, int l, unsigned int v)
{

という記述があります。
この「write_control_value」の記述の最後に「return 1;」というの一行だけ追記して保存します。

static int
write_control_value (ossusb_devc * devc, udi_endpoint_handle_t * endpoint,
int ctl, int l, unsigned int v)
{
return 1;

まあ、おまじないみたいなものですが、通常のやり方で音が出なければ、一度ここに戻って「ossusb_audio.c」を編集してから「configure」すると幸せになれそうです。(私は幸せになりました。

OSSのビルド(configure と make)

root@voyage:~/oss42build# NO_WARNING_CHECKS=yes /opt/oss-devel/configure –enable-libsalsa=NO
root@voyage:~/oss42build# make
root@voyage:~/oss42build# make deb

OSSのインストール

root@voyage:~/oss42build# ls -l ./
root@voyage:~/oss42build# mv ./oss-linux-4.2-2004_i386.deb ../
root@voyage:~/oss42build# cd ..
root@voyage:~# ln -s /usr/src/linux-headers-`uname -r` /lib/modules/`uname -r`/build
root@voyage:~# dpkg -i oss-linux-4.2-2004_i386.deb
root@voyage:~# dpkg-reconfigure linux-sound-base

OSSの動作確認

root@voyage:~# ossinfo
root@voyage:~# osstest

問題はここです。
この「osstest」を実行すると、スピーカーの左チャンネル、右チャンネル、そしてステレオで両方のチャンネルからテスト用の短い音楽が再生されます。

そして、コンソール画面には

Sound subsystem and version: OSS 4.2 (b 2004/201102130122) (0x00040100)
Platform: Linux/i686 2.6.33.7-rt29-voyage #1 SMP PREEMPT RT Sun Dec 26 04:17:30 GMT 2010

*** Scanning sound adapter #-1 ***
/dev/oss/usb08bb2704-1/pcm0 (audio engine 0): USB sound device play
– Performing audio playback test…
OK OK OK

*** All tests completed OK ***

と表示されればOKです。
しかし、「osstest」としても音楽が再生されず、コンソール画面にエラー表示が出たときは、何をやってもダメです。
そう言うときは、面倒でも「configure」の前に戻って、「ossusb_audio.c」を編集してから「configure」をし直す必要があります。

MPDの設定とリブート

root@voyage:~# emacs /etc/mpd.conf
audio_output {
type “oss”
name “My OSS Device”
device “/dev/dsp0” # optional
# format “44100:16:2” # optional
# mixer_device “/dev/mixer” # optional
# mixer_control “PCM” # optional
}
root@voyage:~# reboot

mpd.confを編集して再起動すれば完了です。

OSSの実力や如何?

確かに、音質的には「ALSA」よりも「OSS」の方が一枚上手なような気がします。しかし、そう言うことよりは、アナログ時代のカートリッジのような雰囲気で「ALSA」と「OSS」を使い分ければいいのではないかと思います。

PCオーディオは、その黎明期にあって多くの人を引きつけたのはその解像度の高さだったように思います。
CDプレーヤーだと一つの固まった響きとしか聞こえなかったものが、一人一人のプレーヤーが音を出しているんだと言うことが分かるようになったときの驚きは今も忘れることができません。しかし、そのような美質と引き替えに、音が固くなったり金属的な響きが付随するような側面も否定できませんでした。

そこで、リッピングの仕方から始まってPCの徹底的なチューニング、再生ソフトの吟味、さらにはオーディオインターフェイスのグレードアップなどという涙ぐましい努力を積み重ねていくことで、美質をのばし弱点を少しずつ克服してきたのがPCオーディオの歴史だったと言えます。
そして、誤解を恐れずに言い切ってしまえば、この美質と欠点の天秤は「Voyage MPD」の登場で完全に終わりを告げました。
その突出した解像度の高さと3次元的に広がる音場の素晴らしさはまさにPCオーディオの独壇場です。そして、驚くべきは、そのような美質を極限にまでのばしながら、個々の楽器の響きは決して固くなることもなく金属的な響きなどは微塵もなく消えてしまっているのです。
そして、この「みっちりと中身の詰まった感」が明らかに「ALSA」よりも「OSS」の方が上手のように思えるのです。

また、「audio_buffer_size」を現状では「512」にしていたのですが、これをもう少し下げても「つま先だった不安定さ」は「OSS」では感じなくなりました。これは理由はよく分からないのですが、今朝からあれこれ数字を弄って聞き比べをしてみたのですが、最終的にはしんさんが採用されている「buffer_sizeが320、buffer_before_playが90%」というのが絶妙なさじ加減だと言うことがよく分かりました。

いやぁ、これはまさに絶妙のさじ加減です。→「buffer_sizeが320、buffer_before_playが90%」

みみず工房さんのところでは「audio_buffer_sizeが1024、buffer_before_playが100%では不安定になり、2048、50%位にしないとダメですね。」と書かれていますので、これはおそらく「Voyage MPD」につないでいるインターフェイスとの相性が大きな要因となっているのだと思います。
実は、気分的には「仕方なく」つないでいるオンキョーの「ND-S1」なのですが、もしかしたらこいつ、意外なほどの優れものかもしれないと思うようになってきました。(もちろん電源の強化と振動対策はしています)

と言うようなわけで、今回もしんさんやみみず工房さんのおかげで一歩前に進むことができました。

<大阪にも珍しく雪が積もりました。>


3 comments for “「Voyage MPD」にOSSを導入

  1. yo
    2011年2月13日 at 9:08 PM

    ユングさん、こんにちは。大阪は大雪だったのですね。こちら(神奈川)はそれほどでもなかったのですが、寒かったです。

    丁寧にフォローして頂いてあたがとうござます。Cのかなり乱暴な修正だから、分かる人だけだけで十分だろうと考えて、省略したのですが、ユングさんのハードでもアウトとなると、あのパッチはなかなか有効だということですかね。
    OSSの音についてはほぼ同感です。
    不安定になる件に関しては、僕のパソコン部屋のPS AudioのUSBDACでは発生していませんのでハードに起因するのかなと思っています。

  2. ユング君
    2011年2月13日 at 9:22 PM

    yoさんの報告はずいぶん参考になりましたが、例の変更の件は勝手に補足させていただきました。
    確かに「乱暴」ではありますがLinuxの世界は昔から「動いてなんぼ」の世界ですからあれで十分だと思います。

    ほんとにしんさん、yoさんには感謝感謝です。

  3. yoko
    2011年2月21日 at 3:14 AM

    はじめまして。
     先人の方々のお陰で、楽をさせて貰っています。
    この様な有益な情報もありがとうございます。
    また、楽をさせて貰いました。(爆)

    VoyageMPDは、去年の12月に別なPC(セレロンSU2300)+SSDで組んだのですが、・・・。
    現在は、N270マザーボード(Genius GS-L11と同じ)を使っています。
    (なんだか、真似の様ですが・・・。汗)

     去年の12月では、PCショップのN270マザーボードの在庫が「在庫切れ」。
    諦めていた所・・・年明けM/Bが再入荷していたので買いました。
    (CPUのパワーと消費電力比からATOMのN270は気になるCPUでしたので。)
    ただ、マザーボードの電源関連は少し手を入れて変更をしています。
    DDコンバーターは、自作(爆)と時々ND-S1です。(ND-S1はマネしました。)

     諸事情で1ヶ月程、VoyageのPC関連を外したままでしたが、
    先日、再設置してOSSを試してみました。
    VoyageMPDのパーティションを500MBにしていたので、パッケージ導入中に空き容量がゼロに・・・。
    GPartedを使ってリサイズしましたが、空き容量に注意ですね・・・。

    個人的にALSAの方が好みの様な感じです。まだ聴きこみ不足でもありますが。
    (一旦、ALSAに戻してしまいしたが・・。)
    ただ、、OSSだけでなく各設定値の変更も、今ひとつ私にはピンとこない点が多いのですが・・・。
    機材の問題?ソース?好み?の違い?
    やっぱり、ピンとこない一番は聴き手の問題かな・・・。(苦笑)

Comments are closed.