いや、知らんかったというだけの話しなんですが、Volumio2がネイティブDSDに対応してました。これによる恩恵はといいますと、
・・・・・・すでに鳴ってれば、特にないのですが。(´・ω・`)
ネイティブDSDとDoP
言葉ややこしいですが、USB接続でDSDをDACに送り込む通信手順の話しです。
USB接続の時点でネイティブとはこれいかに?というツッコミはさておき、余計な情報無く送れる方式がネイティブ、PCの標準ドライバ都合でPCMの仕様の箱に詰めて送る方式がDoP(DSD over PCM)となります。DoPは、コントロール情報として、DSDデータ以外にも情報が付加されており、USB通信量は単純に増加します。
USB-DACのDDCはDoPで送られてきた情報からDSDの情報を取り出してDSD信号を再構築します。つまり、どちらでも、同じDSDデータになります。そういう意味では、結局どちらもネイティブと言えるかもしれません。
補足ですが、Windowsでは、ASIOドライバを使うと、ネィティブDSDを扱うことができるようになります。
また、DoPでも標準ドライバのPCMでの上限がそのまま影響し、2.8MHz(DSD64)が上限になります。
じゃ、ASIOでDoP使えば・・・・・(ry)
Volumioでは
USB-DAC前提ですが、VolumioでDSDを扱う場合、DoPを使うかPCMに変換するかの2択でした。このPCM変換は、如実に音が薄くなる感じがして、私は好きじゃなかったりします。
幸いなことに、ラズパイを使う限り、DoPを使っても、Windowsのような上限はなく(あるかもしれないけど、データを持ってない。。)DSD128やDSD256も扱えていました。
なので、何も困っていませんでした。(´・ω・`)
しかし、ふと、DoPをOFFしてDSD音源を鳴らしてみたら、
USB-DAC側が、DSDで認識したままやし
予定では、変換されてPCMデータとして認識されるつもり。
あれあれ?と、グーグル先生に質問してみると、どうやら最新のVolumio2でネイティブDSDに対応したとのこと。
マジか!?というような、流れです。
方法
そう、前述のとおり、DoPの設定をOFFして、DSD音源再生するだけ。
以下、確認対象
- Volumio2は、Ver2.175(2017-05-16版)
- ラズパイ3で確認
- USB-DACは、以前組み立てたものを使用。記事はこちら。
DSD256 DoP
DoPの場合(いままでできてたこと)
- DoPをONしてSAVE
- DSD256の音源を鳴らす
- USB-DACの受信フォーマットを確認
- hw_paramsの内容を確認
formatが、S32_LE(たぶん32ビットリトルエンディアン)
rateが、705600
DSD256(11.2896MHzで1bitデータだから) 、32で割ると352800。ん~倍。
DoPの仕様、実DSDデータが1フレームに16ビットとあったから、32ビットフレームのようなので、無駄データも16ビットということかな。
- ちなみに参考、PCM、CD音源の場合のhw_params
rateが、44100(いわゆる44.1k)
そして、DSD256 ネイティブ
- DoPをOFFしてSAVE
- DSD256の音源を鳴らす
- USB-DACの受信フォーマットを確認
hw_paramsの内容を確認
formatが、 DSD_U32_BE
たぶん、32ビットビッグエンディアン。DSDって書いてあるし。UとかSは、サインありなしか。
rateが、352800
DSD256(11.2896MHzで1bitデータ) 、32で割ると352800。ぴったり!つまり、無駄なし。これがネイティブということか!
それでも、PCM変換したい!
いままでどおり、DSDをPCM変換したい場合。USB-DAC側がDSD対応していなければ、選択肢はこれしかないわけで。
しかし、DoP OFFでは、PCM変換されなくなった。
でも、だいじょうぶ。
リサンプリングの設定を有効にすれば、効く模様。PCM変換された。
ただ、ラズパイ3でも、処理追いつかずプチプチ途切れるけど。(´・ω・`)
最後に
中華のフルデジタルアンプを買って、そのレビュー記事書こうと、Volumio2の最新ゲットして、比較でいろいろ試していたら発見。最初、不具合かと思ったし。
ラズパイの進化は止まらないなぁ。
2017.6.9 以下追記
補足
DSD非対応のUSBDACにDoPオフで、DSDデータ再生してみた。
予想では、「ピギャッ!!!」みたいな音が出るかなと思ってたら、いままでの仕様のように、自動でPCM変換された。
これもgoogle先生に聞いてみると、この機能の対象となるDDCのチップが決まってるらしい。ネイティブDSDのテストで使っていたUSBDACは、XMOSです。
それか、ネイティブ対応か事前にわかるしくみがあるのかな?