2014年3月4日火曜日

AudioQuest DragonFlyをLinuxで使用する。

USB-DACの超小型版、AudioQuest DragonFlyを購入してみました。
巷には24bit 96kHz出力可能なDACは幾つかあると思いますが、
これはUSBフラッシュ程度のサイズながら3.5mmフォーンプラグがあり
ヘッドフォンを十分駆動可能です。

さて、ここ見る人は上みたいな話はある程度知っているだろうから、
このくらいにして「果たしてどうやったら動くのか」ってのを検証します。

動作確認環境 Linux Mint 13・16

  • ハードウェアの認識確認
    さて、USBポートに接続してみます。
    lsmodでsnd_usb_audioが出てきたら、ハードウェアは認識されたということになります。
  • 音声出力デバイスの切替
    (Linux Mint16の場合について掲載します)。
    スピーカのアイコンを左クリックし、「サウンドの設定」を選択します。
    サウンドウィンドウの「出力」タブに「サウンドの出力」というリストが表示されていると思います。
    「アナログ出力
    Integrated Rate Matching Hub」という表示がDragonFlyです。
    これをクリックしてください。
    (挿入直後はスピーカのアイコンで表示されるメニューの「出力デバイス...」にはDragonFlyは表示されません)
  • 音量の調節方法
    いきなりヘッドフォンをつないで音を出すのはちょっと待ってください。PulseAudioで100%のボリウム設定の場合、凄まじくデカい音が鳴ります
    いろいろいじってみましたが、確実にボリウムを調整できるのは、実はalsamixerを使用する方法でした。
    端末でalsamixerと入力してください。
    その後、キャラクター表示でミキサーが表示されます。
    多分初期表示はPCの内蔵音源のミキサーが表示されると思います。焦らずにF6を押してください。
    画面中央にサウンドカードの選択メニューが開きます。
    AudioQuest DragonFlyを選択すると、ミキサーのボリウム表示が1本だけ中央に表示されると思います。
    あとは5%くらいから聞こえる音量の最適な部分を調節していきます。
  • DragonFlyでの最適な音量調節方法
    Alsaを使用すると、DragonFlyの特徴であるハードウェアボリウムで制御が可能になるようです。アプリ側のボリウム調整は最大にし、alsamixerで出力レベルを調整すると音質の劣化を防止できます。
  • トラブルシュート
    pulseaudioでintel HDA audio向けに24bit 96kHz出力の設定を行っている場合、DragonFly経由で音を鳴らそうとすると、ノイズが混じってまともにならない場合があります。
    この場合は~/.config/pulse/daemon.confの以下の部分を調節してください。
    resample-method = src-sinc-best-quality
    default-sample-format = s32le
    default-sample-rate = 96000
    alternate-sample-rate = 48000
    resample-method:pulseaudioでサンプリングレートを変換するアルゴリズムです。
    通常設定されているspeex-float-1はあまり良いアルゴリズムではないようなので、これを変更します。ただし、アルゴリズムを変更するとその分CPU負荷が増えます。
    default-sample-format:既定のデータ書式です。通常は16bit little-endianですが、32bit little-endianなどに変更可能です。
    default-sample-rate:既定のサンプリングレートです。通常は44.1kHzのはずですが、これでは96kHzに変更できます。
    alternate-sample-rate:既定以外のサンプリングレートです。通常は設定する必要がありませんが、うまく動作しない場合はこれを設定してみてください。