MPDでCyberDrive CLARITY FEATHER DACを使ってみる2016/06/11

Fedora の Wine上のFoobar200 でCyberDrive の DACをDSDネイティブで鳴らそうとしてましたが、
ASIO入れてCyberDriveからWindows用のドライバをインストールしようとしたらエラーになってしまいました。
とりあえず断念しました。そんな面倒なことしなくてもMPDでいけそうなのをネットで見たのでやってみました。
 
 mpd --version で再生可能ファイルを見てみると、dff dsf とあります。

$ mpd --version
Music Player Daemon 0.19.14

Copyright (C) 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright (C) 2008-2014 Max Kellermann <max@duempel.org>
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Database plugins:
 simple

Storage plugins:
 local

Decoders plugins:
 [mad] mp3 mp2
 [vorbis] ogg oga
 [oggflac] ogg oga
 [flac] flac
 [opus] opus ogg oga
 [audiofile] wav au aiff aif
 [dsdiff] dff
 [dsf] dsf
 [faad] aac
 [wavpack] wv
 [modplug] 669 amf ams dbm dfm dsm far it med mdl mod mtm mt2 okt s3m stm ult umx xm
 [mikmod] amf dsm far gdm imf it med mod mtm s3m stm stx ult uni xm
 [ffmpeg] 16sv 3g2 3gp 4xm 8svx aa3 aac ac3 afc aif aifc aiff al alaw amr anim apc ape asf atrac au aud avi avm2 avs bap bfi c93 cak cin cmv cpk daud dct divx dts dv dvd dxa eac3 film flac flc fli fll flx flv g726 gsm gxf iss m1v m2v m2t m2ts m4a m4b m4v mad mj2 mjpeg mjpg mka mkv mlp mm mmf mov mp+ mp1 mp2 mp3 mp4 mpc mpeg mpg mpga mpp mpu mve mvi mxf nc nsv nut nuv oga ogm ogv ogx oma ogg omg opus psp pva qcp qt r3d ra ram rl2 rm rmvb roq rpl rvc shn smk snd sol son spx str swf tak tgi tgq tgv thp ts tsp tta xa xvid uv uv2 vb vid vob voc vp6 vmd wav webm wma wmv wsaud wsvga wv wve
 [pcm]

Output plugins:
 shout null fifo pipe alsa ao oss pulse jack httpd recorder

Encoder plugins:
 null vorbis opus lame wave flac

Archive plugins:
 [bz2] bz2
 [zzip] zip

Input plugins:
 file alsa archive curl ffmpeg mms cdio_paranoia

Playlist plugins:
 extm3u m3u pls soundcloud cue embcue

Protocols:
 file:// http:// https:// mms:// mmsh:// mmst:// mmsu:// gopher:// rtp:// rtsp:// rtmp:// rtmpt:// rtmps:// cdda:// alsa://

で、USB DACで鳴らすべく /etc/mpd.conf を書き換えました。
今までは pulseaudio だけ有効にしてましたが、
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
#
audio_output {
type "pulse"
name "My Pulse Output"
## server "remote_server" # optional
## sink "remote_server_sink" # optional
}

以下を追加しました。
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:4,0" # optional
## mixer_type      "hardware" # optional
## mixer_device "default" # optional
## mixer_control "PCM" # optional
## mixer_index "0" # optional
}

device "hw:4,0" はDACの番号です。以下のコマンドで調べました。
$ cat /proc/asound/cards
 0 [SB             ]: HDA-Intel - HDA ATI SB
                      HDA ATI SB at 0xfbcf4000 irq 16
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI
                      HDA ATI HDMI at 0xfbdbc000 irq 29
 2 [UCAMDLK130T    ]: USB-Audio - ELECOM UCAM-DLK130T
                      ELECOM ELECOM UCAM-DLK130T at usb-0000:00:13.2-1, high speed
 3 [Audio          ]: USB-Audio - YAMAHA AP-U70 USB Audio
                      YAMAHA Corporation YAMAHA AP-U70 USB Audio at usb-0000:00:12.1-1, full speed
 4 [Driver         ]: USB-Audio - Cyberdrive Audio Driver
                      Cyberdrive Cyberdrive Audio Driver at usb-0000:00:13.2-3, high speed

おきまりのMPDデーモンのリスタートをして、MPDクライアントを立ち上げます。
#systemctl restart mpd
MPDクライアントは Gnome Music Player Clientを使いました。
メニューのMusic->設定のServer Settings でALSAに切り替えます。

これはメニューのServerからも切り替えられます。
すんなりと再生できました。ただこのDSD256のものはたまにブツッと音がとぎれたりします。

DSD256でないものは手元のものはすべてきれいに再生できました。

でもこれで本当にDSDネイティブで再生してるのかよくわかりません。DACにインジケータないですし。。
PCMにデコードされてたりして。。。

追伸:DSD再生してるときの状態をみてみました。
どうもPCMになってるっぽいですね。
MPDのユーザーマニュアルだとDSDの再生方は3通りあって
1,DACが対応していれば自動でDSDネイティブで再生
2,DoPはDACが対応してるかどうか判別する手段がないのでオプション設定すればそれで再生
3,最終手段としてPCMに変換再生
みたいなことが書いてあるようです。
他のDSD対応DACだとSPECIALのところにDSD_XXXみたいなのがあるみたいです。
ドライバがこのDACに完全には対応してないのかもしれないですね。

$ cat /proc/asound/card4/stream0 
Cyberdrive Cyberdrive Audio Driver at usb-0000:00:13.0-3, full speed : USB Audio

Playback:
  Status: Running
    Interface = 1
    Altset = 1
    Packet Size = 582
    Momentary freq = 96002 Hz (0x60.0080)
    Feedback Format = 18.14
  Interface 1
    Altset 1
    Format: S24_3LE
    Channels: 2
    Endpoint: 1 OUT (ASYNC)
    Rates: 44100, 48000, 88200, 96000
  Interface 1
    Altset 2
    Format: S16_LE
    Channels: 2
    Endpoint: 1 OUT (ASYNC)
    Rates: 44100, 48000, 88200, 96000
  Interface 1
    Altset 3
    Format: SPECIAL
    Channels: 2
    Endpoint: 1 OUT (ASYNC)
    Rates: 44100, 48000, 88200, 96000