2013年6月5日水曜日

【音楽】高性能USBDAC INVICTAでDSDやハイレゾ音源をNetBookのAOD250で鳴らせたよ!

先日、別件でエミライ社の島取締役とお話をしていた時、
「いやー、LinuxでINVICTAは鳴らすの難しいらしいっすよ。」
という話が一瞬ありまして。

じゃー、動くようにセッティングしてノートPC持っていきますよー。

なんて話をしてたら
「いやー、まー、たのしみにしてますよー」
なんていうか、明らかに
まぁ程々に頑張ればー

的な感じだったのでちょっと気合入れました。

今日はその時の実験記録です。
2013/6/7 追記 jackdのセッティング

まず最初にお断りというか、のっけから言い訳というか。
DSDのネイティブ再生ではありません。
サンプリング周波数も96kまで落としています。
ネットブックという安価でATOMというローパワーな環境であること、自分がjackdを正しく設定できていない(理解も多分正しくない)ためです。

そのあたりはご容赦ください。

今回は我が家で一番非力なAOD250というネットブックを使いました。

モニタの発色は綺麗なのですが、何をするにもパワー不足で結局テキスト書き専用になってたものです。ブログ書き用だったり、勉強会やセミナーのメモ用だったり。

それも他の機種にとって変わってきて、それならオーディオ用のトランスポーターとして動かそうと思ったのがきっかけです。

以前Sonyが運営しているSony MusicUnlimitedというサービス用にカスタマイズをしていたので、それならもう一歩進ませてみようという試みです。

これについてはここに拙著の記事がありますので読んでみてください。大変よいサービスですよ。
【音楽】Sony Music Unlimitedを使ってみた


なにをしたのか

パソコンには音楽を再生するサウンドカードを搭載する方法がいくつかありますね。

  • オンボードサウンドカード
  • Busに増設するサウンドカードから
  • USBで接続するサウンドカード

皆さんご存知の通り、ぐりむのこのブログでは大体3つめのUSB接続が取り上げられています。
単純に進化が早い分野だから追っていて楽しいだけなんですけどね。

さて、本題。

その中でも上位機種と呼ばれるものがあります。
今回テストで使わせてもらったresonessence labs社のINVICTAもそのひとつです。

INVICTAの詳しい説明は、resonessencelabsから参照してみてください。


なぜこれが上位機種か。
世界最高と名高いDAコンバータ、SabreDACを作ったESS Technology社の中核メンバーが作り上げたメーカーであり、製品だからです。

まさにそのハードを知り尽くした人が、俺達ならこう作ると大人気ないことをしてきたわけです。

実際、ESS Technology社のDSD対応DACチップをヘッドホン出力用に1枚とアナログ出力用に1枚の合計2枚搭載しています。

USBサウンドカードでありながら、SDカードから直接データを読みだして再生するのでパソコンすら不要という。。。

ぐりむが苦心してパソコンを設定しなくても綺麗なサウンドが聴けるという、
初っ端からぐりむイラネ状態
なんですね。

あと、ヘッドホン端子とヘッドホンアンプがついています。
デジタルアンプのようですが他にアンプすらいらないというオールインワン状態です。

で、この手の上位機種はOSのシェアの問題なのと、ASIOが使えることもあり、動作報告はwindowsが多いんですね。
特にWin8って設定次第ですごく良い音がするらしいです。

じゃあ、Linux使ってる人は出来ないのか?という疑問から今回の検証になったわけです。

先に結論。

ResonessensLabsの皆さん。
AOD250を使ってDSDをINVICTAで再生できましたよ!
Dear ResonessensLabs.
I was able to listen to the DSD Music from the INVICTA using my AOD250.
It was very fantastical sound.

なんとなく作った人に
AOD250でセッティングすらちゃんとできてないかもしれないけど、すげーよ、この音!
って伝えたくて書いて見ました的な。
伝わるかな。
なんか文法が変だったら教えてください。


今回やったこと

  1. OSの導入(まあ当然だよね。今回はUbuntu gnome)
  2. ローレイテンシーカーネルの導入(RTでも良かったんだけどそんなにパワーもない)
  3. pulseの削除
  4. jackdのインストール
  5. audaciousオーディオプレイヤーのインストール
  6. mpdのインストール
  7. mpdクライアント、sonataのインストール
  8. Android版MPDクライアントのインストール
  9. 起動する順番(色々入れたので色々面倒)
  10. jackdの調整(これが一番厄介)
  11. もう一つの聴き方(なぜかUSB1.0しか出来なかった。要調査。)

OSをインストール

LiveCDなりでメディアをつくってインストールしましょう。今回はubuntu gnome 32bit版を使いました。
セッティングとしては高精度タイマーを使うのでそのへんの設定もしますが、最近の機種だと大体いきなりこれなので問題ないと思います。

$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource 
hped

と出てたら高精度タイマーです。

pulseを消す


まず、pulseを消します。
Synapticなりなんなりで。

理由
音源とドライバの真ん中に音を調整するソフトウェアがいて欲しくない。
DAC→ALSA→Pulse→Player
DAC→ALSA→jackd→Player
jackd入ってんじゃん、一緒じゃんとか言わないように。
この子は悪い子じゃないので。
いや、Pulseも悪い子じゃないですけど。

ちなみに、これをやると複数のオーディオコントロールはでコントロールはできません。
たとえばWebでYoutube見ながら、オーディオアプリで音楽聴くとかできなくなります。
しかも音量コントロールアプリとか消えます。
この時点でハードルがいきなり上がるので注意してください。

音量のコントロールは
$ alsamixer
と打ってCUIなんだけどGUIっぽい音量コントローラ使います。

使い方は画面をみてください。大体解ると思います。
あと、各ドライバが使うサウンドカードの設定も面倒になります。

覚悟してください。

jackdをインストールする

ビルドしてもいいですし、普通にSynapticあたりからいれてもいいと思います。
公式サイトはここです。

ぐりむはgithubからcloneしてbuildしています。
MakeとInstallが終わったら次の設定をしてRealtimeな設定を有効にします。
といっても公式サイト通りなのですが。。。

/etc/security/limits.d./audio.conf
の内容を
@audio    -    rtprio          99
@audio    -    memlock   unlimited
@audio    -    nice            -19 

で、audioグループを作ってユーザーを追加する。
$ sudo groupadd audio
$ sudo usermod -a -G [user] audio

こんな感じで。
ぶっちゃけ、ユーザーがひとつか自分しか使わない、テスト用途でしか使わないなら、@audioのところを*とかユーザー名に変えてもOKのはずです。
この時は@は取るように。

下がJackdのコントローラとそのセッティング画面です。
セッティングの値は割と適当です。

重要なのは

  • InterfaceでUSBに接続している機器を選ぶ(大体hw:1)
  • Realtimeにチェックを入れる
  • NoMemoryLockにチェックを入れる(らしい)
  • SampleRateは再生する楽曲にあわせて

くらいのようです。

ちなみにぐりむが自宅で使う場合、ほとんどがCDからの音源なので、44100です。
これに合わせると機材の性能にもよりますが、

  • Priorityに89
  • Frame/Periodに256(これ以下だとぶーんという音が聞こえます)
  • SampleRateは当然441000
  • Periods/Bufferに4

という数値になりました。

audaciousをインストールする

ubuntuを使うようになって多分一番良く使うオーディオプレイヤーソフトです。
公式サイトはここです。
synapticからインストールできるのは結構古いものなのでぐりむは自前でbuildしました。

本体とpluginともにbuildしないとダメなので注意です。

buildがどうしてもlibの依存関係でうまく行かない場合は、
$ sudo apt-get build-dep audacious
とか
$ sudo apt-get build-dep audacious-plugin
とかやるとうまく行くかもです。

詳細は内部のINSTALLドキュメントを参照しましょう。

mpdのインストール

音楽を再生するためだけにシステムに常駐するデーモンさんです。
あちこち見ると、Rootが云々という事もありますが今回はuserのlocalで動作させてます。

これもSynapticからだとバージョンが古いので自前でBuildします。
公式サイトはここです。

Build方法はinstallingなどなど情報があるのでそちらを確認してください。

configureをするときに、--disable-sndfileとか--enable-flacとかそんな感じのをやった記憶ですが、ぼんやりしてたので覚えてないです。
# 余談ですがmpdでDSDをネイティブに鳴らすPatchが公開されているようです。

今回のBuildにはMP3を含めてネイティブなDSDを組み込んでないので鳴らないです。

そのうちもう一回buildするのでこのあたりは直します。

sudo make installしたあとは設定ファイルを記述します。
ALSA→jackd→mpd
になるように設定ファイルを書きます。

今回、mpdはuserのlocalで動かしてるので各種設定は~/.mpd/に作成します。
で、mpd.confにはjackdの設定を追記します。
http://mpd.wikia.com/wiki/Configurationにあるjackの項目を参考にしてみてください。

重要なのは、
audio_output {
    type "jack"
    name "my jack device"
}
を追記することです。

その他、ログやプレイリスト、音楽ファイルの格納場所などなど、ちょっと面倒ですが割と適当でも動きます。。。

mpdクライアント、sonataのインストール

synapticからsonataというクライアントをインストールします。

mpdは音楽を再生するためだけのものなのでソレを視覚的に操作するアプリケーションが必要です。
sonataの設定に、mpd.confに設定したユーザーIDとパスワードを設定すると同期を始めます。

再生するためには、同期した楽曲をプレイリストに移して、そこから再生します。
DLNAともちょっと違ってて、mpdが動いているオーディオPCに再生しなよーという命令を送る感じですね。

Android版mpdクライアントのインストール

ちなみにAndroid版もあります。

#ようやくAndroidのネタになった。。。一応Androidの開発メモ系ブログなんですよ。ここ。

MPDroidというのを使っています。


使いやすいとかUIがカッコイイとか特に理由はないです

何が便利っていちいち本体触らなくても携帯からポチポチとプレイリスト作って音が鳴らせるんです。

マウスとかトラックポイントとか触らないのは便利。

セッティングとしては

  1. 接続するWifiのアクセスポイントを選ぶ
  2. どのIPアドレスでMPDを起動しているのか設定する
  3. MPDのパスワードを設定する

の3つです。

こういうアプリケーションでリモートな状態ではMPD機側のIPアドレスを固定するとよいかもしれませんね。

起動する順番(色々入れたので色々面倒)

これだけ色々なデーモンやらを入れると起動にも順番が出てきます。
  1. alsamixer(いきなりすごい音量で再生されないよう、音量を確認しましょう)
  2. jackd(設定を開いてちゃんとUSBサウンドカードが指定されているのを確認)
  3. mpd(ローカルならいきなりmpdと打ち込んでOKです)
  4. sonata(mpdクライアントならなんでもいいです)
の順です。

止める順はこの逆でやってください。

mpdの停止は
$ mpd --kill
です。

いきなり途中でjackdを止めようとすると怒られたりしばらく固まったりいろいろ面倒です。

もう一つの聴き方(なぜかUSB1.0しか出来なかった。要調査。)

今回の構成は1つのPCでスタンドアロンでもmpdを動かすので、特に面倒もないのですが、もうひとつの聞き方があります。
構成は単純で
ALSA→jackd→audacious
というALSA直じゃなく、間にjackdを挟んでデータの転送レイテンシーを調整してみようという試みです。

結果を先に言うとmpdを通して聞いたほうが個人的には好きでした。
が、キレイ系ですっきりした解像度で聴けるという意味ではこっちも良いのかもしれません。
好みの問題なのでもしもチャレンジする方がいればぜひこちらも。

設定は単純にaudaciousの設定で出力先をjackdにするだけです。

なぜかUSB1.0での転送しか出来なかったのでbuildでなにか有効にし忘れている可能性もあります。

44.1kHzの音源を聴くにはこれで十分ですが、ハイレゾ音源を転送するためUSB2.0が使えないという状態なので別途調査項目です。

結果の総括

INVICTA、めっちゃ音良いです。
# それか。ステマか。
が、SDCardから読み出した方が音の解像度は特に高い。

MDP経由だと少しボヤケる。

惨敗です。

ぐりむイラネとかいわないでください。

言い訳としますと、 
  1. 多分ケーブルを通しているため
  2. ぐりむがjackdの設定を煮詰めるところまで出来てない
  3. DSDの再生がネイティヴではなくてPCMへの変換であること
  4. テストで持ってった曲のビットレートが様々過ぎて(テストなので)適性のビットレートを設定出来てなかったこと
が多分原因。いや絶対そう。間違いない。

ぐりむイラネとかいわないでください。

でも、resonessencelabsのみなさん!
あなた達が世に送り出した子ども達はLinuxというステージでも躍動的に踊りましたよ!

0 件のコメント :

コメントを投稿