デジタルオーディオあれこれ

半田ごての人。紙と鉛筆だけではちょっと。

THDでなくてIMD。濡れ落ち葉ではないにしろ、黄昏るPCM。

THD(高調波歪)は単一の正弦波での測定値なので、昔との比較という意味を除くならば、些か時代遅れ。IMD(混変調歪)はCDのテスト信号にもあるけれど、二つだけの信号なのでこれまた現実との乖離は大きい。もっと実態に近いものが、DACの測定値などを乗せているHPにあった。15Hzから20kHzぐらいまでの32トーン。これは良さそうなので一つの標準として、その信号を少しだけアレンジして作ってみた。変えたのは、サンプリング周波数と位相。192kHzを96kHzにして、位相は特にこだわる必要はないので全てゼロに。オリジナルは、ここの#44にある。

https://www.audiosciencereview.com/forum/index.php?threads/review-battle-of-schiit-audio-dacs.5487/page-3

 

自分用はこんな感じ。

f:id:xx3stksm:20191204195427j:plain

どうしてこんな半端な周波数なのかは、FFT(正確にはDFFT)の本質に深く関わる難しい問題。結果論としては、DFFTの解像度が低い方では低下して細かい所が見えなくなるので、rectangularを使えるように同期サンプリングをするから。DFFTはそもそもフーリエ変換(FT)ではなくてフーリエ級数(FS)だから、窓関数のrectangularだけは窓関数ではない。窓関数を使わないというのが、FSにおけるrectangularの意味。rectangularは、ないよと言う意味だとして、noneと表示している親切なソフトもある。FSとFTでは決定的にrectangularの意味が違うし、rectangularを有効に使わないと、DFFTは片肺になってしまう。

 

普通、rectangularを使う事はない。使えないので使わない。WaveGenで1kHzと999.0234375Hzを作って、表示するとこうなる。ちょっと周波数ずれてるけど、正しくは、1kHzと999.0234375Hz。

f:id:xx3stksm:20191204200549j:plain

999.0234375Hzは正しく表示されるけど、1kHzはダメ。なので仕方なくhannを使うとこうなる。そこそこ1kHzも出るようになる。でも正しいのは線一本だけの、上の999.0234375Hzのようなお姿。デジタルの領域なので、線一本が正しい。

f:id:xx3stksm:20191204200724j:plain

窓関数とは、FSでは必須の(FTではそうでない)周期性を確保するために、始まりと終わりがゼロの関数を測定対象に掛け算して、始まりと終わりを強制的にゼロにして周期性を確保するもの(FTでは違う)。当然ながら誤差は出る。スカートの広がりはその一例。元の信号にはないので誤差。でもrectangularよりは遥かにまともなので、誤差は甘んじて受け入れるしかない。その誤差が嫌な時に、rectangularを使う。

 

rectangularとは窓関数なしなので、周期性の確保は、使う人がしなければならない。体に合った服ではなくて、服に体を合わせるというようなもの。この場合の服とは、サンプリング周波数とFFT長で決まるBINのこと。96kHzサンプリングで64k長ならば1.46484375Hz。この服に合った体(周波数)にしておけば、BINの整数倍なので、常に周期性は確保されていて窓関数は不要。rectangularでもちゃんと表示が出来て、スカートのすそが広がったりはしない。正確にBINの1.46484375Hzの整数倍のみで、対象の信号は展開される。デジタルの領域に限るのであれば。

 

現実にはDACの出力をADCでサンプリングするので、上の約束を守っても両者のクロックが同期していないと不可。どちらがマスターでも構わないけれど(DACマスターが普通)、同期できるDACなりADCが必要。うちの環境では、DACはトランスポートに同期する形なのでDACは可能。ADCも似たような構造なので外部同期可能。という訳で、ESSのようなspdifにASRCが入るような場合を除いて、大抵はrectangularが使える。

 

元のHPは、どうやって周期性を確保しているのだろうか。IISを受けてくれるDACならば比較的簡単だとは思うけど。ChordのQutestがこれ。1bitDSM系では、Chordがどうやら一番良いみたい。32tone distortion testがそれ。

https://www.audiosciencereview.com/forum/index.php?threads/review-and-measurements-of-chord-qutest-dac.5981/

 

これはどうもBINのばらつきから推測するに、192kHzサンプリングで128k長のFFTだとおもう。なのでBINは、96kHzサンプリングで64k長と同じ。他のDACを見ても、個々の信号とノイズレベルの差が120dBぐらいあれば、かなり良好。Qutestもそんな数字。窓関数の表示はないけれど、rectangular以外でこの解像度にはならないのでrectangular。

 

個々の信号レベルは-16dBVぐらい。ノイズレベルは低い方で少し上がるけれども、-140dBV程度。かなり良い。但しこのノイズレベルは、所謂ノイズフロワーではなくて、IMDが主体と考えるべき。こういうマルチトーンを入れた時、俗に言う基本波は、2.9296875Hz(32の周波数の最大公約数)になる。この周波数の整数倍でマルチトーンを作るので、非線形のアナログ領域ではそうなる。アナログ回路その他のノイズはそれよりも大抵は小さいので(まともな設計ならば)、IMDが支配的。低い方では-130dBVで少し悪くなるのは、要は低次のIMDは高次よりも大きいから、だと思う。

 

こういう実態に即したテストでは、PCMは厳しい。特にディスクリートの場合。これはきっと、その一番割に合わない方法論を選んでいる。なので壊滅的な数字。

https://www.audiosciencereview.com/forum/index.php?threads/massdrop-airist-r2r-dac-

review.9565/

最近の海苔波形を聞くのであれば、これでも何とかなるかなとは思うけど、クラシックのピアニシモはおろか、ピアノも再現不可でしょう。フォルテ専用。

 

という訳で、うちの過去のDACも含めて比べてみた。まずは3bitDSM。同期サンプリングできるので、rectangular。BINはHPのものと同じなので、そのまま比較できる。信号のレベルが少し違ってたけれど、差はだいたい120dBぐらいなので、かなり良好。これは調整してからかなり時間が経っているけれど、そんなに特性は狂っていないみたい。低い方のロールオフはADC側の問題。

 

f:id:xx3stksm:20191204210543j:plain

条件のきつくなる低音側を、二つの信号だけで出すとこれ。110dBぐらいのIMDになるので、悪くはない。かなり良いと思う。これはrectangularの解像度でないと確認不可。

f:id:xx3stksm:20191204211010j:plain

この同じハードウエアを、PCMの16bitで出すとこうなる。ノイズフロアと言うのかIMDは、15dBぐらい悪化する。とは言っても、モノリシックなのでPCMの割には健闘していると思う。実際暫くはこれで聞いていて、過去のpcm1704と比べて特に不満はなかった。上の3bitDSMと比べたら、ゴボー抜きされて後塵を拝すのみだったけんじょ。

f:id:xx3stksm:20191204211353j:plain

低い方も。94dBぐらいのIMD。だいたい低い方は高い方よりも悪化するので、PCMにしては立派なもんと思う。高い方のTHDで、PCMはだいたい100dB前後だから。

f:id:xx3stksm:20191204211855j:plain

最新型の、まだ試作中のxc6slx25とデイスクリート部品の1bitDSM。上の3bitDSMよりは少しだけ良いかも。これは36tapなので最終的に48tapになると、2dBぐらいは良くなる。ディスクリートなのでやはり驚き。まあ、Chordもディスクリートだけど。

f:id:xx3stksm:20191204212310j:plain

低い方。3bitDSMとだいたい同じ。でも再現性はこっちの方が遥かに良いと思う。調整は全てデジタル的に解決するから。

f:id:xx3stksm:20191204212532j:plain

うちにある市販品で一番良いmade in e-BayのES9038。これはASRCが入ってしまうのでrectangularには出来ない。結果として、低音側の解像度が低下する。IMD自体は上の3bitDSMとか1bitDSMと似た数字。なのでコスパは高い。ESSは両面の中華基板でもかなりの特性になる。但し、この中華製は日本のメーカーよりもデジタルの意味を分かっているので、両面の基板を使い倒している。電界てんこもる日本のメーカーだと、この数字はまず出ない。

f:id:xx3stksm:20191204210419j:plain

低い方。DSMにしては悪いけれど、低音側ではかなり悪化することが多いので、この基板でこの数字ならば合格。悪くない。中国語では、何故か最上級の褒め言葉が「悪くない」。これは日本語の意味での「悪くない」。hannの解像度低下が良く分かるFFT

f:id:xx3stksm:20191204213300j:plain

そして本命は、マルチトーンの他の使い方。1bitDSMはデイスクリートでも再現性の高いDACが作れるけれど、あまり知られていない欠点が一つある。-40dBFSから-70dBFSぐらいの信号に対して、かなり特性が悪化する。これは1bitDSMの本質的欠陥だと思う。ある程度の信号レベルがあればよいけれど、このぐらいに下がって来ると、1bitしかないデータで細かく追いかけるのが難しいからだと思う。

 

そういうデータはほとんど見ないけれど、ソフトウエアのPCM2DSDも悪化すると思う。同じ原理で出来ているのだから。これは1kHzのTHDでも分かる。でもなかなか一発で分かるとはいかない。マルチトーンだと、実際の使用環境に近いし、悪化が一発で分かる。こんな具合になる。

f:id:xx3stksm:20191204214229j:plain

これは現実問題としてかなり拙い。ピアニシモならば、このぐらいのレベルは珍しくない。更に耳の感度が高い領域。聞いて分かるレベルだと思う。中高音用の場合、最大振幅を抑えてSNを稼ぐのだけれど、60dB前後のSNはちょっと。3bitDSMならば、こんな悪化はない。そこで少しDSMに細工をするとこうなる。

f:id:xx3stksm:20191204215208j:plain

15dBぐらいは良くなった。1kHzの正弦波では、ここまでハッキリとは分からない。もう少し詰めていけば、もうちょっと良くなるかと思う。それやこれやと、なかなか使えそうなマルチトーンのテスト信号。外部同期可能なADCが必須ではあるけど。