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

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

SSRCの功徳。AD7768にもAD7960にも勿論DACにも必須。

 AD7768の場合、とことん使い倒すためにはSSRCが必須。128kHzとか256kHzを96kHzに落とす必要がある(6/8倍と3/8倍)。6/8は3/4であるけれど、3/8との共用の関係で6/8にする。SSRCは、オーディオの迷信番付の関脇ぐらいには入ると思う。分数倍のSSRCは好ましくないという話がある。横綱は定在波とアースグランドで、ジッタとオーバーサンプリングが大関ぐらいかな。張り出しにインターサンプルオーバー(ISO)とプリエコーとか。

 

 SSRCとは標本化定理の裏街道みたいなもので、表を知らないと裏では迷子になるのも道理。分数倍も整数倍も同じ。違うのは有理数無理数か。無理数の場合をASRCと称しても、ほぼ問題なし。標本化定理は簡単じゃない。デルタ関数という超関数で説明されるのが普通だから。今はyoutubeで超関数の説明をしてくれる人がいて、中々分かり易い。

 

 数学的には、デルタ関数は異界に存在するらしい。普通の関数の埒外にあるので超関数という分類を新設して、辻褄を合わせたらしい。ついでに、フーリエ変換youtubeも見た。工学では無限を扱わないので、というか扱えないので、フーリエ変換の出番は基本的にないと思ってる。FFTだってフーリエ級数にしかなりえないし、フーリエ級数だからトコトン周期に拘る必要がある。フーリエ変換ならば、周期という概念はない。そこでFFTに対する小結ぐらいの迷信も生まれる。

 

 平たく言ってしまえば、確かに超関数だとかフーリエ変換は理論的説明には適しているし、かっこいい。華麗なボレーシュートみたいで。工学はもっと泥臭くて、泥沼亀次郎な腹で押し込む執念の一点。工学に超関数はいらない。それっぽいので代用した方が間違いがない。コサインの無限級数もどきで十分使える。百ぐらいの項があれば、何を意味しているかは分かる。こういうの。これで十分。少々のリンギングには目を瞑る。

f:id:xx3stksm:20200323200738j:plain

 AD7768の128kHzでのサンプリングとは、このナンチャッテδ関数と対象信号との掛け算。三角関数同士の掛け算なのでその周波数成分は、FFTしなくても差と和が出るのだなと分かる。δ関数は生真面目に無限にそれを繰り返しているだけで、本質は百ぐらいの項で十分に分かる。

f:id:xx3stksm:20200323200952j:plain

 この場合は元信号を16kHzとしているので、差と和のイメージが延々と繰り返す。FFTして確かめればこうなっている。全部出せないので途中で打ち切っているけれど、勿論、無限にこれが続いている。デジタルサンプリングとは、永劫に続く輪廻なので。これが、fs=128kHz時の周波数スペクトル。理論的には零次ホールドではないので、全ての成分は同じレベル。称して表街道スペクトル。

f:id:xx3stksm:20200323201247j:plain

 6/8倍のSSRCでは、まず6倍のオーバーサンプリングをする。つまり、128*6=768kHzサンプリング。この時、裏街道からスペクトルを眺めるとこう。両者は同じ。何も引かない、何も足さない。上の図は、fs=128kHz時の周波数スペクトルに間違いはないけれど、同時にfs=768kHz時の周波数スペクトルでもあるというのが、裏から見た標本化定理。一般的に言うならば、(n)*128kHz時の周波数スペクトル(nは整数)。768kHzはn=6の時。これだから。

f:id:xx3stksm:20200323201947j:plain

 両者の違いは、対象となっている周波数として現れる。fs=128kHz時は、16kHz。それはイメージの出方から推測できる。fs=768kHz時も、同じくイメージから推測できて、16kHz、112kHz、144kHz、240kHz、272kHz、368kHzの六個。何故かと言えば、fs=128kHz時は、128-16=112、128+16=144。fs=768kHz時は、768-16=752,768-112=656,768-144=624,768-240=528,768-272=496,768-368=400,768+16=784,768+112=880,768+144=912,768+240=1008,768+272=1040,768+368=1136。

実際のサンプリングではこうなる。

f:id:xx3stksm:20200323203640j:plain

オレンジ色の-cos(x)がfs=128kHz時の対象信号。これに対して6倍のオーバーサンプリングのfs=768kHzとは、勿論点の数が6倍になって、その対象信号はもうオレンジではなくて薄い灰色の方に移る。何故移るのかは単純な理由。移らないと両者のスペクトルは同じにならない。fs=768kHzは6倍の密度になるので、点の数がx00,x01,x02,x03,x04,x05というように増える。ここもサンプリング対象になるので、ここではサンプリングする信号の方にゼロになって貰わないと、上の青のようなfs=128kHzと同じ波形、すなわち同じスペクトルにならない。

 

 見ての通り、fs=128kHz(青の波形 )もfs=768kHz(青の波形 )も同じだからスペクトルは同じ。でもfs=768kHzにした時点で増えてしまったサンプリング点がゼロにならないと両者は同じ波形にならない。なので、実際にサンプリングしている波形はもう16kHzだけではなくなったとして、仮想的に辻褄を合わせる。スペクトルもそう言っている。

 

 SSRCとは、完全に同じ周波数スペクトルを持ちながら、サンプリング周波数だけを変える操作。例えば、128kHzから768kHzに。128kHzと768kHzのサンプリングで、同じスペクトルを持たせることは上のFFTのように可能。では、その時に768kHzで増えた点にどんな値を持たせるかは、0しかないよ、という話。SSRCで増えた点にゼロを挿入するのは、そういう理由。同じスペクトルにするための、多分唯一の方法論。

 

見た目からして、同じスペクトルになるには、ゼロの挿入しかないというのも一つの理屈。或いは、fs=768kHzの側から見た対象信号(上のFFTのイメージで推測できる仮想信号)をサンプリングすると、やっぱり増えた点には0しか入らないのね、とも言える。不思議な事に、乱雑に足したように見えるcos(x)+cos(7x)+cos(9x)+cos(15x)+cos(17x)+cos(23x)というのは、fs=768kHzでサンプリングすると6回のうち5回はゼロになっている。表から見るか裏から見るかだけの違いなので当然ではあるけれど、やっぱり不思議。100倍のオーバーサンプリングしても、99回はゼロになる。

 

そういう訳で、6倍のオーバーサンプリングでもスペクトルは完全に維持される。ASRCでは維持されない。誤差はアナログでの熱雑音以下なので無視できるけれど。6倍になってしまったならば、もうほとんどSSRCは完成。欲しいのは fs=128kHz時の16kHzのみなので、cos(x)+cos(7x)+cos(9x)+cos(15x)+cos(17x)+cos(23x)からcos(x)、つまりは16kHzのみをデジタルのLPFで取り出せばよい。最終形が96kHzサンプリングなので、45kHzカットオフぐらいの線形位相のブリックウォールを使う。標本化定理に従って96kHzサンプリングで折り返しが出ないLPFという話。こうなる。

f:id:xx3stksm:20200323210936j:plain

LPFを通すと、128kHzの6倍で96kHzの8倍のデータが揃っているので、単純に8個に1個の割合で間引いて行けば96kHzサンプリングになる。誤差の可能性は、LPFの精度のみ。入力の24bitに対して、普通は32bitぐらいの係数を使うから、完璧にサンプリング周波数のみが変わる。これはつまり、理想DACでfs=128kHz再生をして、理想ADCでfs=96kHzサンプリングをするのと同じ。それをデジタルの計算のみで実現するので、誤差の余地はない。処理がn/mの有理数である限り。160/147で44.1kHzを48kHzに上げるのも同じ話。

 

m=1で整数倍のSSRCは理想DACで、これが標本化定理での 信号複製に対する、工学的最終回答(所謂オーバーサンプリングフィルター)。やっている事は単純。まずは、ハードウエアが許す最大のnで、オーバーサンプリング。具体的には、(n-1)個のゼロの挿入。元のfsで想定される帯域での、デジタルの線形FIRのLPFを通す。それだけ。俗に言うsinc関数の出番はない。元々sinc関数は有限世界の住人ではないし。

 

 sinc関数が出て来るのは、多分超ブリックウォールを想定しているから。超ブリックウォールとは、96kHzサンプリングならば、47.9999999999999kHzまでが通過帯域というような設定。現実的には、45kHzまでが通過帯域で何処からも苦情は来ないよ。つまり意味不明な超ブリックウォール、超関数と同じく現実世界の埒外な所に引っかかっているから、sinc関数が出てきてしまう。挙句には、だから元信号の再生は不可能なんて話になってしまう。

 

最初の問題設定を間違えているので、敗着は初手。そこからは何も生まれない。現実的な45kHzカットオフであれば、FIRは2k程度のタップで足りる。後は、可能な限りnを大きくする事。n=8で768kHzでは、圧倒的に足りない。n=256にすれば、ほぼ問題なし。輪廻からの解脱の完成。最初のイメージが24.576MHZ辺りになる。明示的に6dB/octのアナログLPFがなくても、DAC出力はもうアナログとしか見えない。2kを超えるタップは必要なくて、高いサンプリング周波数が正しい復元に必須の要件だと、SSRCは教えている。そういう意味で、デジタル処理のキモはSSRC。SSRCが全てを支配する世界。SSRCにルビを振るならば、デジタル輪廻世界閻魔大王。 

 

 

 

 

 

 

 

 

No ADC, no DAC. まずは隗よりでなくて、まずはADC。

 THDの測定にはSARADCではなくてDSMADCが向いている様なので、一度検討してEVA boardも持っているAD7768を試した。こんなの。QFP144のXc6slx09で対応できるから、ステンシルなしで基板も安い。航空便代払っても、海外(ドイツ)発注した方が得。因みに、ステンシル作っても数千円。国内でこの値段はないと思う。真中の小っちゃい方がAD7768で、最大256kHzサンプリングのDSMADCが8個入ってる。

f:id:xx3stksm:20200323181344j:plain

 これは多分ADの一押しでないかと思う。元々八個は、ライン検査での大量処理を確保するためのようだけど、パラにしてSNRを上げる事も可能なので、SNRに劣るDSMADCの欠点を補えるから好都合。¥4000ぐらい。Digikeyは一万円以下の場合、消費税がかからない。Mouserは取られる。法律的解釈はともかくとして、¥6000以上は送料タダなので、この間がスイートスポット。

 

 総額で¥10万近くの部品を買う事は珍しくない。分割するならば、10%の節約になるという寸法。AD7768の欠点は、オーディオ専用ではないので、SPI類似のデータ列を普通のI2Sのような並びに変換する必要がある。更に、SNRを上げるためには256kHzとか128kHzサンプリングが有利なんだけど、これを192kHzとか96kHzにSSRCする必要がある事。なので、SPDIF出力や外部同期のためにXc6slx09が必須。リモコン、OLED、動作モード変更用マイコン(LPC1347,cortex-M3)とかも。

 

 基板設計してブツが海を越えてやって来て、全て手付け出来る基板なのでFPGAマイコン、ADCのドライブ段とかを作るのに約一月。製作費は五万もしないのかな。自分の手間賃はタダという計算なので。結果は思いの外に良好。少し良過ぎるかもしれないが、ADCが出すのはデータ列でしかないので改竄はほぼ不可能。FFTを良くするためにどんな改竄が必要かなんて、遥かに人知を超えている。

 

 設計が悪くて本来の性能が出ない事はあっても、逆はない。作ってみて思ったのは、APの測定器などの数字は素人造りのADCよりは良いだろうという事。実際よりも悪い数字を出すのは簡単。嘘ではなくて限りなく良い数字を出すのは難しい。この手の高性能ADCの場合、DSMかSARに関係なく差動のドライブ段の性能や、ADC固有の設定で大きく数字は変わる。勿論、良くするにはピンポイントでの調整が必要。

 

 本来の意味でのSNRで120dBを超えたシーズン3の1bitDSM基板の、かなり正しいであろうTHDは、このぐらい。DAC出力を-0.5dBFS(9.5Vpp)にした時の数字。おそらく、APならほぼ同じか、もう少し良い数字になるはず。121dBぐらい。残念ながらSARADCでは、ここまで測れない。AD7768だと10kHzを超えると、もう「草」は消える。そこそこのDACの場合、APの結果も大体そうなっている。多分、それが正しい姿。

f:id:xx3stksm:20200323183940j:plain

 ノッチフィルターを入れるのが常識なのでそれも試したけれど、最大振幅を-3dBFSぐらいに抑えるならば、AD7768の場合は特にノッチの必要がない。データシートでもそう見て取れる。無くて済むならその方が色んな周波数での対応が可能なので楽。AD一押しのDSMADCは、さすがに良く出来ている。高い周波数でのノイズ上昇もない。

 

 DAC一般の特性として、フルスケール近辺ではどうしてもTHDは悪化する。SNRは落ちるけれど、THDの限界値という事で-3dBFSにするとこれ。128dBぐらいになる。美人過ぎるなんとかみたいで、美し過ぎるFFTディスクリートの所謂ブティックDACで、1bitDSMならばここまで行けるのはやはり驚き。理論的に予想できる事ではあるけれど。

f:id:xx3stksm:20200323185245j:plain

 マルチビットの経験として、120dBを超える数字は出なくはないけれど、再現性はなくて揮発性。草原という言葉には、些か気体を感じさせるものがあるというように、120dBは本来長続きしない数字。1bitDSMの凄味は、理論通りに驚異的な再現性。熱的にトランジスタが安定するための時間として10分を許容するならば、120dB越えでも、ほぼ同じ数字になる。128dBという数字自体にはそんなに意味がなくて、圧倒的な再現性が全てを物語る。

 

 ESSやAKMの最新チップであれば、APでの測定値は130dBを超えるし、再現性も完璧のよう。但し、彼等がそこまで辿り着くために要した時間と設備投資を考えるならば、1bitDSMの馬力は異次元。もしかして、隕石に乗って宇宙からやって来たとも言われる納豆菌のように。ロームがマルチビットに拘るのであれば、所詮は二番煎じなので、何時まで経っても芽は出ない。後塵を拝するのみで、先行者に追いつくのは無理。1bitDSMをモノリシックでやるのならば、その時先行者のマルチビットに勝ち目はないと思う。まあ、想像力の問題ね。

 

 0dBFSまで振ると、流石に少し劣化する。これは、0とか1が連続的に出るようになって、あと一押しで制御不能の発振状態になる寸前なので、どこを最大振幅と決めるかの問題。少し草が生えてくる。-0.5dBFSを最大値とすれば、0.5dBのS/N悪化。-3dBFSならば、3dBのS/N悪化。モノリシックならばもう少しSNRは良くなるので、最大振幅でのTHDは良くなる。数字のお遊びになるだけの話だけど。

 

f:id:xx3stksm:20200323191306j:plain

 AD7768の八個のADCを総動員すると、当然ながらSNRはかなり改善する。データシートでは基準電圧を4Vとしている。これは絶対最大定格が6.5Vなので、5Vぐらいは問題なく使える。256kHzサンプリングで基準電圧を5Vにすると、20kHz帯域で118dBぐらいのSNRになる。これは同種のADCと比べて、相当に良い数字。これを八個パラにするので約9dBの改善で、126.6dBぐらいになった。

 

 実際の所、最大値を-3dBFSぐらいに抑える必要があるので、実力としては少し落ちる。としてもSARADCのAD7960を5MHzサンプリングで二個使っても125dBぐらいなので、ほぼ同等の性能になる。以前検討した時も、同じぐらいにはなるかなあと思ってた。THD用とSNR用は、FPGAの中身とマイコンのプログラムだけの違いで、基板は共用してる。なので、AD7768を使う方が賢明なのかもしれない。256kHzを超えるサンプリングが不要ならば。製作費も少しだけ安いし。

 

 という訳で、SNR仕様のAD7768でのSNR結果はこれ。正確なノイズ電力はAudio Testerでは無理なので、RX4とかRX7で高調波をノッチで落として計算する。120dBを超えるようなTHDとかSNRを、一種類のADCで測るのは困難。APも別系統なっている。AD7960での測定値は、121dBに少し欠けるぐらいだったので、ほぼ両者は一致。一致しないと困る。

f:id:xx3stksm:20200323192627j:plain

 Lchはノッチ前のデータ。これだとTHDは110dBぐらい。0dbFS時なので、THD用ならば119dB程度になる。SNRとTHDの両取りは中々難しいという話。AD7768にはAD7768-4というADCが四個の下位版もある。THD用は二個しか使わないので、AD7768-4でよし。値段は半分。フットプリントは同じ。ドライブ段とか内部レジスタの設定に凝れば、もう少し良くなりそうな感じ。老舗の一押しは、思うにサランラップの所とは一味違う、というのが偽らざる感想。


 

 


 

 

 

シーズン3の1bitDSM基板。♪ 120dB越え~~ ♪

 大河ドラマじゃないけれど、PCMがDSMにゴボウ抜かれて「時は今」と思ったのが去年の五月。理論的には1bitDSMの可能性はとても高く、PCMとは違ってディスクリートであっても優位性はそれほど落ちないので、試す価値はありと基板を作ってみた。そして、あれこれ試行錯誤をしながら終にシーズン3までやって来た。

 

 1bitDSMはChordが有名で、詳しくは分からないものの原理としてはSignalystの改良版でないかと思う。1bitDSMのデジタル信号を74HC595のようなシフトレジスタの出力でドライブする。これはアナログ領域でのFIRとして機能するので、SNRを上げつつTHDも改善していく。

 

 問題は、74HC595のような論理ICの出力は、決してopアンプのような高いSNRを期待できるものではないので、SNRはあまり高くならない。基本的なSignalyst方式だと、100dBを超えるのは難しい。このぐらいの数字になると思う。

https://www.diyaudio.com/forums/digital-line-level/345385-star-pure-dsd-dac-signalyst.html

 

 Chordの場合、THDもNも117dBぐらいになっている。

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

パルスアレイという言い方をしているけれど、どんなトリックを使っているのかは企業秘密と思う。上のHPではDynamic rangeが117dBとなっている。これは2Vppでの測定値で3Vppにしても同じとか。このあたりは、ESSとかAKMの4Vppで出してくる高SNRDACとは、些か趣が変わる。基本原理の違いか、若しくは測定機側の問題でなかろうかと。

 

 いずれにしても、デジタルICの出力で変換を行っているのであれば、これは驚異的な数字。この方式はシーズン1の基板で少し試したけれど、脈なしとして諦めた。相性悪かった。エソテリックの300万ぐらいのも基板の写真から判断するに、Signalystの改良版と思う。デジタル側との間に何がしかのアイソレーターを入れているみたいだけど、所詮はデジタルICでのドライブになる。さて、どんな数字なんだろうか。

 

 更にその上を行くのがMola Mola。

https://www.audiosciencereview.com/forum/index.php?threads/mola-mola-tambaqui-dac-and-streamer-review.10770/#post-299950

Chordのような既成のDACチップを使わないのを、boutique DACと言うらしい。あつらえ品というような意味だろか。こちらはどうやらカスタムの変換ICを作っている。ロゴからすると、AD製。PWMと書いてあるけれど詳しくは分からない。ノイズレベルの低さからすると、Signalystの亜種ではなさそう。フルスケールでは、125dBを超えている。値段が張るのは、カスタムICだからなのかな。正に、boutique。

 

 変換に際してリニアリティという概念が存在しない1bitDSMが、究極の方法論であるのは事実。後は如何にして実現させるか。シーズン1の基板が形になったのは、差動アンプでデジタル側を絶縁したから。差動アンプは、アナログ領域では温度特性に優れたアンプ。デジタル領域ではスイッチとして機能するので、デジタル側からのノイズは遮断する。特に音声帯域であれば、完璧な絶縁となるから1bitDSMでも有力

 

 問題なのは、かなりの数のタップを用意する必要があるので、ディスクリートでは場所を取るし、負荷容量も増えるのでスイッチング速度が遅くなる。おまけに浮遊容量その他で不安定になって、300MHzぐらいで強烈に発振する。ドライブするデジタル側のFPGAも、完全にスキューのない信号を出してくれないと困る。スキューはそのままスイッチングの乱れで、THD+Nは悪化する。

 

 シーズン2の基板はその魑魅魍魎との関ヶ原で、敵は闇の中に隠れているので中々実態がつかめない。まさかの小早川の寝返りみたいなのもある。川の主のイトウを釣り上げる様なもんだから、運の要素が強い。幸運を期待して持久戦に持ち込むしか手はない。デジタルのように、簡単に最適解を見つけるという訳にはいかない。快刀乱麻を断つ、とはいかない。

 

 シーズン3で最終決着したかったけれど、やっぱり積み残しはチラホラと出てきて、実用になるのはシーズン4まで持ち越し。まあ、そこで終わる目途はついたけど。川の水はせき止めたから、後は干上がるのを待つという寸法。備中高梁の逆。必ず大イトウは干上がってくる。シーズン5はやりたくないなあ。

 

 シーズン3の基板はモノラル。ステレオでは、両者の熱的結合が宜しくない。差動アンプのスイッチングはトランジスタのVbeに依存するから、全てが均等な温度になって貰わないと拙い。5mVぐらいの誤差つまりは2℃程度の温度差ぐらいにしたい。FPGAが主な熱源で、そこそこトランジスタとは均等な距離にあるので、他からの熱がなければ5mVは妥当な数字。Vbeで簡単に確認できる。

f:id:xx3stksm:20200216203924j:plain

  VMT3のトランジスタを基板の両面に実装すれば何とかなる。これは0603ぐらいの大きさ。0402よりは大きいけれど、半田付けの難易度は0402より高いかも。0.5mmのQFP程度。BGAは手付け不可なので、手付けの中ではQFNが一番難しい。それに比べれば、VMT3は数の多さに閉口するぐらい。48tapだと144個になる。一個10円程度なんで、QFNなんかよりはずっと気楽。
 

 今使っているAD9717の3bitDSMも決して悪くはなくて、「私はこれでPCMを辞めました」という、平成製ながら完全な昭和ギャグかました因縁のDACこれはまだモノラルながら 、一番の目的のNならば天城越えならぬ120dB越えで10dB程良くて、THDはほぼ同等(117dBぐらい)の性能になった。AD9717は調整できるので調整直後であれば120dBは超えている。でも蝉程度の命だから、光秀の如く三日天下。暫くすると115dBぐらいまで落ちる。

 

 1bitDSMは調整箇所がないので、基板とFPGAのデータが同じであれば、5分のウォーミングアップでほぼ同じ特性に戻る。ディスクリートであっても。基板のレイアウトも良くなって、動的な 無信号時のSNRは122.5dBぐらい。フルスケール(-1.5dBFS)でのSNR、オーディオ業界のNに相当するのが121dBぐらい。0dBFSはADC(AD7960)の都合で11Vpp。静的な無信号時のSNRは130.5dBぐらい。

 

  静的な無信号というのは、Dynamic rangeと言っているのに近い。DSMDACの場合、無信号には2つの意味がある。静的は完全にDSMが停止している時で、出力に変化はないのでほぼアナログアンプの残留ノイズに相当。動的は、入力がゼロだけれどもDSMが動作している状態なので、パルストレインが音声帯域に及ぼすノイズが静的に加わる。厳密に分けている場合は皆無だろうけれど、原理としては2つある。

 

 静的であっても1bitDSMはデジタル側とつながっている場合が多いので、マルチビットのDSMよりは悪い数字になる。上のChordとかMola MolaのDynamic rangeは動的な方でないかなと思う。確証はないけど。市販品のマルチビットのDSMDACの場合は、無信号を検出するとDACを切り離す信号を出すので、多くの場合これで見かけのノイズを下げている。静的な無信号になる。

 

 但し、検出はDSDのゼロ「11010010」に対して動作するので、SACDからの場合でないと機能しないと思う。今時のHQplayerだとか外部の1bitDSMからの信号は、特定のゼロと言うパターンを含まない。これを含む場合は特定のアイドルパターンが出る可能性もあって好ましくない。なので最新の1bitDSMならば含まない。うちの1bitDSMも特定のゼロは出さないから、検出は出来ない。

f:id:xx3stksm:20200216212003j:plain

 これが最新版の48tapの特性。四次で128OSR。ここまで来ると、Nは簡単には測れない。ADCの残留ノイズとの2乗平均となるので、実際の数字は補正して求めるしかない。AudioTesterのS/N表示も、ここまで来るとかなり怪しくて不正確。115dBぐらいまでならば大丈夫だけど。なのでRX7で基本波と高調波を除外したノイズ電力を計算して、基本波との差を取る。この場合だと121dBぐらい。APで測ると少し違うかもだけど、基本波の除去の時のノッチの深さなどが誤差となる。誤差はせいぜい0.5dBぐらいと思うけど。

 

 THDはもう少し良い筈。AD7960のようなSARADCは、内部にC2CのラダーDACが入っている。その誤差がどうしても出るのでないだろうか。というのは、少なくとも125dBぐらいのTHDのアナログのオシレーターでもこんな感じ。

f:id:xx3stksm:20200216212752j:plain

 アナログ型なので、10kHzを超えた所にはもう高調波は出ないと思うのに、消えない。C2Cの誤差でないかと疑ってる。SARADCの利点は高いSNRで、DSMADCは高いTHD。現実論として、4個のAD7960を使うと127.5dBのSNRを問題なく確保できる。THD用はDSMADCを使えば良い。APが2つ使っているように、DIYならばSARとDSMの二刀流が正解。基板の製造も含めて十万以下で出来る。127.5dBのSNRとノッチ併用で140dBぐらいのTHDで、悪くない。

 

f:id:xx3stksm:20200216213335j:plain

 うちの使用環境では、とにもかくにもSNR優先だけど、測定用として考えるのであれば八次で64OSRと言うのはあり。八次の64OSRだと、今のADCでも120dBのTHDで、実際はもっと良い筈。但しSNRでは四次の128OSRに負ける。変調度を上げられなくてSが低くなるので、SNRは少し悪い(2dBぐらい)。25kHzぐらいから量子化ノイズが上がって来るのは、96tapにしてやると32kHzに最初のゼロが来るようになるので、激減する。

 

 最終的なステレオ仕様では、二つのDSMをリンクして倍の96tapに出来るようにしておけば宜しい。ポストアナログLPFも24dB/octぐらいをオプションで。今は6dB/octだけなのでほとんど素通し。線形位相のFIRが入るので、SACDよりはこれでもずっと小さな帯域外ノイズであるけど。 

f:id:xx3stksm:20200216214354j:plain

 八次を使ってしまうと、128OSRにしたとしても帯域外ノイズはそこそこ残る。

f:id:xx3stksm:20200216214521j:plain

 SACD(多分七次の64OSR)はメディアに書き込むという制約で、64OSR以外の選択肢がなかった。なので無理矢理でも次数を上げて帯域内(20kHz)の量子化ノイズは落とした。今は特に容量の制約はないので、64OSRに拘る必要はない。128OSRで充分。但しそうなると、八次は牛刀と言う話になる。音を聞くに、いずくんぞ八次を用いん。

 

 DSMのノイズシェービングとは、ノイズバランシングと考えた方が良い。量子化ノイズの総量は変わらない。帯域内と帯域外のバランスを変えるだけ。八次のような高次は、帯域内を思いっきり減らす分、帯域外が増える。減らした帯域内は機能しない。何故かと言うならば、アナログ的な制約で、八次でデジタル領域でのノイズを抑えても、DAC出力は四次のような低次と同じにしかならない。だけど帯域外ノイズの多さはそのまま。 

 

 四次の帯域内ノイズはそこそこなれど、アナログよりは少し下なので無駄がない。八次と同じになる。帯域外は無意味に帯域内を下げていないのでとても小さい。量子化ノイズ不変の法則によりそうなる。更に、変調度の関係で最大振幅で2.5dBぐらい上がるから、SNRも良くなる。最初のSNR=121dBのは音楽用として、一番バランスが宜しい。こんな感じになる。帯域外ノイズは、再生環境次第の所はあるとしても、小さいに越した事はない。

 

f:id:xx3stksm:20200216214732j:plain

 

 

 

 元々の目標は120dB以上のSNRだったから、まずは目出度し。1bitDSMの場合、基本的にはアナログFIRでノイズレベルはそのままにして信号だけを大きくしてSNRを稼ぐ。理由は定かでないけれど、THDもそれに連れて良くなる。NとTHDは、他の方式ではかなり異なった性格になる。1bitDSMだと、「年の離れた妹」と言った塩梅で、見た目に差があっても血縁関係あり。だからNを良くするとTHDも良くなってるもの。

 

  1tapから24tapまでは、ほぼ理想的に上がるようになった。 AudioTesterのS/Nの表示は少し破綻しているけれど、ノイズそのままで、信号のみ上がる傾向は分かる。

f:id:xx3stksm:20200216221140j:plain

f:id:xx3stksm:20200216221210j:plain

f:id:xx3stksm:20200216221229j:plain

f:id:xx3stksm:20200216220400j:plain

 理想的には、48tapはこれに6dBを足した123dBになる。ノイズそのままで信号だけ上がる、というのが原則なので。でもスイッチングが倍になったり加算器での熱ノイズその他で、4dBぐらいしか上がらない。と言っても、今まではもっと少ししか稼げなかったから悪くはない。まだ1dBぐらいは改善できるかとは思う。スイッチングノイズも、随分と小さくなった。

f:id:xx3stksm:20200216220801j:plain


  あと一押しして、シーズン4の基板では122dBぐらいまで行きたい。ADCもDSM型をそろそろなんとかしないと。SNRの方も、まさか120dBを超える所まで来るとは全くの想定外。AD7960の二個使いで124.5dBならば、十分にお釣りがくると思ってた。まあ、嬉しい誤算なので、こちらもいずれは四個使用の基板を。

 

国際標準機構ではないISOとリンギング(プリエコー)との化学反応。

ISO(Inter Sample Overs)を検索すると、まずは国際標準化機構が出て来るし、ISP(Inter Sample Peak)はインターネット・サービス・プロバイダーと相場は決まっている。知られていない方のISOの歴史は意外と古くて、2004年の記事にもう出て来る。

https://www.audioholics.com/audio-technologies/issues-with-0dbfs-levels-on-digital-audio-playback-systems

これは必ず起きてしまうし、起きるのが正しいDACのあり方だけれど、当時はあんまりラウドネス・ウォーの所謂海苔波形が少なかったからか、はたまたクロックジッタ程には簡単に理解できないからなのか、今に至るまでほとんど顧みられない。

 

最近になって、DAC3がその対策をしたという売りで、特にCDの再生では素晴らしいという評価がありながら、やっぱり何も対策をしないままのDACが、自作品を含めてほとんど。常識的に考えて、未だにNOSの人気が高いとか、CDの再生時にはDACの内蔵フィルターは良くないので外付けとか、ソフトでのアップサンプリングが良いとかは、まずISOの問題を片付けないと話は前に進まない。ほとんどがISOに起因している筈。

 

ISOが問題にされないのは、何故DACには普通オーバーサンプリングのreconstruction filterが入っているかを理解していないからだ、と思う。デジタルのシステムは完全な帯域制限で成り立っていて、尚且つデジタルと書いて漢字を振るならば輪廻。サンプリングには、不必要な高調波のイメージが永遠に繰り返されているので、輪廻からの解脱としてこれを何らかの方法で取らないといけない。

 

CDの初期には高次のアナログフィルターで取っていたけれど、性能として宜しくないので、今はオーバーサンプリングのフィルターをほぼ全てのDACが内蔵している。これが嫌な人はNOSにして、今でも高次のアナログフィルターを使う。オーバーサンプリングのフィルターは、元のアナログ信号にかなり近い所までデジタル的なデータを作り出す。CDのような場合、元の信号とイメージの周波数が近いので、仕方なく急峻な煉瓦塀型を使う。

 

煉瓦塀自体には何の問題もない。帯域制限されたシステムで、方形波がリンギングするのは当たり前。それが嫌な場合、デジタルシステムは使えない。リンギング自体には何の意味もない。帯域制限≒リンギング(=ではない)。問題になるのは、再生ファイルが海苔波形の時。海苔は、ほとんどがマキシマイザーで平均音圧を上げている。元々は存在しなかった波形を作り上げているので、それをオーバーサンプリングで元の信号に正しく戻すと、オーバーフローしてしまう。要は、0dBFSを超える。

 

海賊が嫌いなのは、一が機雷で二が機雷、三、四がなくて五が機雷。デジタルの場合は、オーバーフロー。CDの読み取りエラーだとかはゴミ。マリア・カラスが言うには、大事なのは修練と勇気で、後はゴミ。デジタルの場合はオーバーフローが大事で、後はゴミ。とにかくオーバーフローだけは拙い。でも、海苔とオーバーサンプリングフィルターの組み合わせは、ほぼ100%オーバーフローを起こす。十分に聞いて分かるほどの問題。

https://benchmarkmedia.com/blogs/application_notes/intersample-overs-in-cd-recordings

 

オーバーサンプリングはソフトでシミュレーションできる。これはRX7で四倍に上げた時。上段のLchは元の48kHzサンプリングの方形波。こういう信号は存在しないけれども、書き込むことは可能で海苔波形と同じ。192kHzのサンプリングなので96kまでしか表示できないけれども、輪廻なのでイメージは永遠に再生されている。

f:id:xx3stksm:20191214210336j:plain

下のRchは煉瓦塀で24kHz以上を取った。正確には、24kHzから168kHzまでとその永遠に続くイメージ。急峻な遮断特性のために、出力は0dBFSを超えてしまう。でもDACの出力は0dBFSでサチるので、実際にDACから出て来るのは下のような波形。

f:id:xx3stksm:20191214211657j:plain

計算結果は上段であっても、実際の出力は下段のサチった方なので、青のスペクトルのようにしかならない。だいたい100Hz刻みのインパルスを入れているので、大体の周波数特性が分かる。白のようにスパッと落ちるはずが、全然落ちない。余計なスペクトルは歪ではなくて、元々あった高調波を落とせないので残ってしまっている。皮肉な事に、これではほとんどNOSと変わらない。全然、煉瓦塀していない。オーバーフローするとこうなる。白のスペクトルが本来の煉瓦塀。

 

この機能不全は、煉瓦塀でなくてもオーバーフローしてしまうと大差ない。かなりソフトな特性でも似たようなものになる。これはイメージが残ってしまうぐらいの緩めの特性。Resampleの図で、赤はイメージが残るよと言う警告のエリア。

f:id:xx3stksm:20191214212521j:plain

白の特性から、かなり緩めだと分かる。オーバーフローの程度は小さいのだけれど、全く煉瓦塀していないのはほとんど同じ。見た目では、サチっているのはほんの少し。見た目がいかに当てにならないかの一例。機能不全は同じでも、その在り様はフィルターの係数次第で少しは変わるという事。幸の形は一つでも、不幸の形は星の数ほどあるのと同じで、不具合の状況は皆違う。オーバーフローしてしまうと、全てはゴミ。

 

実際の海苔波形で何が起きるかも、シミュレーションすれば良し。うちには海苔波形がなくて、何とか探したのがマイルスのギル・エバンスとの共演を集めた復刻のCD。中身は海苔しているだろうから聞くつもりはなくて、解説の資料目当てで中古を買った。上段のLchがCD。参考として、Rchは60年代のオリジナルのレコード。勿論、海苔していない。

f:id:xx3stksm:20191214213430j:plain

これは、とてもおとなしい海苔。一部分だけ太筆書きしたようにリマスター。Sample peak levelというのが実際のデジタルデータ。既に0dBFSなので、初めからサチっている。Possibly clipped samplesは、オーバーサンプルで元の信号に戻すと、オーバーフローしますよと言うサンプル数。20秒程度の間で、979個。標準的な海苔ファイルだと、最初から最後まで、この979/20≒49ぐらいの数が一秒間に起きる。

 

FFTを見ると、12kHz前後の音を異形化して目立たせようとしたんでしょう。たぶんトランペットかなんかの音。青のレコードと比べるならば歴然。他にもCDは低音側を不必要に落とす事が多くて、これもそう。60Hzはアメリカなのでおそらくハム。でもその上の80Hzぐらいは楽器の音のはず。それより下は、要らないと思うととんでもない誤解で、これをCDのように切ると、臨場感と言うか生感がものの見事になくなる。低音側の再生能力に依存するだろうけれど、死んだ目になった魚の刺身を食わされたような、活きの悪い音になる。

 

お前は既にサチっているのだが、でもまあ四倍に上げてみるとこうなる。

f:id:xx3stksm:20191214214857j:plain

方形波のシミュレーションと同じく、白は全然フィルターが効かない。オーバーフローしない青は、見事な煉瓦塀。ISOは1721で増えているけれど、サンプリング数が増えているので、気にする程ではなし。目くそが鼻くそ笑うような話なんで。結局の所、海苔のCDに関しては、reconstruction filterはほとんど効かない。オーバーフローが全てを台無しにする。

 

だからデジタルはダメでアナログの方が良いかと言うならば、それは迷信。テストレコードに1kHzの方形波が入っていたので、96kHz/24bitでデジタル化したのがこれ。カンチレバーレスの伝説の名器MC-L1000で再生。プレーヤーは、昔京セラが出したセラミック製のターンテーブルと言うやつ。

f:id:xx3stksm:20191214215743j:plain

Lchはクロストークカートリッジの問題は、SFDRが30dBぐらいという点。本来は存在しない偶数のスペクトルがかなり出てしまう。この場合も、基本波の-30dBぐらいで出る。これは見易いように後からゲインを12dB上げている。レコードにこんな高いレベルは刻めない。リンギングしないのは、厳密な帯域制限がかからずに、だらだら落ちるからだと思う。 

 

これは2kHzとか4kHzのような、人の耳が敏感な所にかなりの歪を出しているので、おそらく本来の方形波とは音色が違う筈。楽器であれば、マイクの歪もあるのでなおさら。エンジニアも馬鹿ではないから、これよりもデジタルに可能性を見出す。勿論、うちのファイルは、ほぼ全てがレコードからの自録りなので、音楽用として十分な特性であるのは事実。このぐらいでも、人の耳では中々区別がつかないもの。ジッタなんて、デジタルの100倍は悪いけどね。

 

ついでに、RX4からRX7にバージョンアップしたので、RX7のアップサンプリングも試した。これは、post limitterも違うアルゴリズムになったぽい。post limitterをonにすると、海苔に対してもオーバーフローはしなくなるので、ちゃんと煉瓦塀特性になる。同じ所を見てみるとこう。およよっ、という感じ。

 

f:id:xx3stksm:20191214221014j:plain

どんな特性にしたのかと方形波で追試。

f:id:xx3stksm:20191214221140j:plain

煉瓦塀特性なのは当然として、辻褄は大きなスペクトルの近くに少しの余計なスペクトルという話。この辺りは、各社それぞれ秘伝のタレみたいなノウハウがあるんでしょう。Chordも、なんかアップサンプラーを持っていたような。所詮はモグラ叩きであって、本質的な解決法は、DAC3のようにレベルを落とす事以外にはない。自作品であれば、デジタル入力を落としてから入れる。1/2+1/8程度で十分だから、掛け算器は不要で足し算だけで解決。

 

ここからは余談。レベルを落とすような本質的な解決法ではなくて、デジタル領域のお遊び。オーバーサンプリングの問題点は、オーバーフローを起こす事に起因するので、リンギングしないフィルターを用意するならばオーバーフローはしないので、計算通りの特性となる。帯域制限は、必ずしもリンギングを意味しない。結論から言うならば、リンギングの有無を決めるのは、デジタルフィルターの係数の正負。

 

通常のフーリエ逆変換で作る係数は、必ず正負の両方を持つ。どんなに緩めであったとしても。フーリエ逆変換に、極性の縛りなんかは入れられないと思う。まあ不可能ではないのだろうけれど。正負を含むとどうしてリンギングするかは、単純な理由。デシタルフィルターは、係数と入力データの畳み込みで計算される。方形波のような場合、立ち上がりの所では、全部0だった入力データが一つづつ1に変わっていく。

 

全部ゼロの時は、勿論出力はゼロ。畳み込みと言っても、デジタルでの畳み込みとは単純な積和演算で、積分はしない。ただ足すだけ。一つだけ1に変わると、それに対応した係数との掛け算なので、結果はその係数そのもの。係数が正ならば正で負ならば負。次は、もう一つだけ係数を足す事になる。ここで問題。2つの係数を足す事になるので、両者の正負と大きさで結果が決まる。

f:id:xx3stksm:20191214223247j:plain

 

こんなインパルス応答で、これがそっくりそのまま係数の並び。方形波の入力に対しては、これを一つずつ足していくと出力になる。紫も緑も正規化してあるので、全部を足すと1になる。つまり、直流に対するゲインが1でそれが最大値。どんな海苔波形であっても、1を超える出力を出せない。全てが1の時に最大値だから、海苔が直流であっても1になるだけ(実際は最大値を0.99ぐらいに設定してある)。リンギングしてオーバーフローするフィルターの係数は、紫のようになっている。煉瓦塀でない緩めのものでも、このぐらいは正と負の間を行き来する。結果として、方形波に対する応答はリンギングを含む。こんな感じ。

f:id:xx3stksm:20191215143419j:plain



方形波の立ち上がりの所では、LPFは基本的に出力は入力に応じて大きくなるのだけれど、係数が正負に振れるので惑星の逆行のように一時的に減少する所が出来て、そのためにリンギングしてオーバーフローとなる。リンギングしないフィルターは、正または負のみの係数で出来ている。なので、一つづつ係数を足していった時、決して「逆行」は起きない。単調増加か単調減少のみで、リンギングはしない。上の緑のように。勿論、オーバーフローはしない。

f:id:xx3stksm:20191214224522j:plain

紫は緩めなので、20kHzぐらいまではフラットで、96kHzでは120dBぐらいの減衰量。8倍のOSRでも(384kHzサンプリング)1024ぐらいの係数で実現できる。緑のリンギングレスは、そこまでは落ちない。48kHzサンプリングとするならば、かなりのイメージは残る。それがリンギングレスの対価。モグラ叩きなので、某かの対価は必要。24kHz から96kHzまでのイメージは残る。もう少し良いのも作れるけど。

 

方形波で較べると、こんな按配になる。これでもオーバーフローした煉瓦塀よりはずっと落ちが良い。更に、大切なものは目に見えない。取れないイメージは24kHz から96kHzだけで、その上は煉瓦塀とは違って完全に落とせる。正確には次のイメージがメガヘルツを超えるので無視できるという意味。これは最低でも、64(3.072MHz)以上のOSRでしか機能しないので。

f:id:xx3stksm:20191214225247j:plain


帯域制限がリンギングと同義ではない、という実例。リンギングレスフィルターは、高い周波数を落とす事でリンギングを回避して、オーバーフローも起こさない。欠点は、急峻にはならないので、若干のイメージが残る事。OSRが大きいので、8倍程度のPCMやソフトウエアでの実装は不可。ハードウエア実装でDSMならば問題なし。PCMでもRF用のAD9717のようなものならば可能。RX7のアップサンプラーのように、隙間商品。 現象としては面白いけど。

 

 





 

 

 

 

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が必須ではあるけど。

 

 

1bitDSM。基板はシーズン2へ突入。

1bitDSM は、終にシーズン2に。シーズン1がパッとしなければ次はない。今は自分で基板のデータを作るならば、製作の実費は三万もしないので、ハードルは低いけれど。シーズン1では、潜在能力の高さが分かって、次回に期待という辺りで幕切れ。シーズン2の目玉は、所謂ミッシングリングを修復して、完全な輪に戻す事。欠けていたのは、発振対策、たくさんのタップを如何にして同じ条件でドライブするか、アナログ的な諸問題、など。

 

二か月ぐらい新しい基板で試行錯誤して、八割方はつながったと思う。そして最後に残った欠けた部分の存在も。FPGAのハード的な制約で(今回の基板でそんなのがあるのだと分かった)、今回の基板は完全な形では使えなかったから、まずは一歩後退。ではあるけれど、シーズン3でその問題は解決するから、二歩前進になるはず。最後に残った所が解決すれば完璧、そうでなくても120dBのSNRは確保できるのでないだろか。 

 

因みにSNRとはADの用語の解説にある通り、

SNR は、測定した出力信号 rms 値の、ナイキスト周波数より下
の全スペクトル成分の rms 値総和から 6 次までの高調波成分を
除いた分に対する比です。SNR は、デシベル値で表されます。」

の意味。オーデイオ業界では恣意的に違う解釈をしているので、もちろん正しいSNRの方。

 

こんな基板。

f:id:xx3stksm:20191124192527j:plain

f:id:xx3stksm:20191124192539j:plain

 右側のxc6slx9が36タップで、左のxc6slx25が48タップまで使える。その積りだったけど、今回のようなアナログ的な出力をする場合、些か出力ピンの選び方に制限が出来てしまい、全部は理想的な形では使えなかった。36のはずが24。48の方は36。まあ、なんとか、やりくりはしたけれど。

 

 この問題は、自動配線をする限り回避は出来ないと思う。自動配線のプログラムは、当然の事としてデジタルシステムに特化している。色々試行錯誤の結果、昔話に出て来るような古色蒼然の方法で解決する羽目に。手動配線に近い方法。今の大規模FPGAでは、どの回路にどのLUTを使うかなどは、全て自動配置でPCにやらせる。でもアナログ的な使い方では、後から人間が手動で配置転換をしてやらないと上手く行かない。

 

 それで昔はそれなりに使っていた、FPGA editorというので手動配置してやると、上手く行く。今はもうvivadoの時代だから、そんなものの存在を知っている人は稀かと思うけど、ISE14.7であれば、まだ使える。使えたので、かなりびっくりした。 こういうやつ。

f:id:xx3stksm:20191124193753j:plain

FPGAの中身を見れるソフトで、出力の極性を反転させる程度ならば、これで編集もできる。要するに、自動配置では少し出力パッドからは離れた場所に置かれてしまった関係するLUTを、空いている近くのLUTに配置換えする。デジタルで使う限り、その必要はない。今回は特殊な使い方をしているので、そんな裏ワザと言うのかハッキングが必要。今回見つけたミッシングリングの一つ。

 

そもそも1bitDSMというのは、市販品のESとかAKがピカピカで誰の目にも凄いと見える金閣ならば、ちょっとモッサリ感のある良く言えば味があって枯れた趣の銀閣玄人受けとでもいうのか。銀閣を建てた足利義政も、金閣に張り合おうなんて気はサラサラなくて、自分用に隠れ家的な隠居場所があったら良いなあ、ぐらいの積りだったと思う。

 

それが意外と当りで、彼は栄誉ある四畳半の発明と言うか発見者として、尊氏とか義満程の知名度はないけれど、今の日本文化の源流になったのは間違いなし。日本の地の研究者はあまり言ってないかもだけど、ドナルド・キーンはそう書いているし、ほんとにそうだと思う。引き算の美学、引き籠り、オタク、四畳半、茶道、生け花、能、わびさび、などなど。

義政の辞世

なにごとも ゆめまぼろしと おもいしる みにはうれいも よろこびもなし

 

というような、銀閣的なりわいの1bitDSM。1bitDSMは名前の通りに1bitしかないので、そのパルス列は、デジタルでもありアナログでもある。扱い方次第でどちらにでもなる。動物なのか植物なのか意味不明の粘菌のように。デジタルの次元であれば、適切なOSRと次数の選択で、音声帯域(20kHz)では-150dBFSぐらいの残留ノイズにすることは難しくない。

 

でもDACである限り出力はアナログなので、そんな理想状態からは乖離する。その乖離を何処まで減らせるのかが、1bitDSMのキモ。方法論は色々ある。普通の人は金閣の市販チップで、四畳半的な人はオタク志向をそそられるのか、例えばChordなんかがその成功例。Qutestは、そこそここなれた値段。

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

THD+Nが114dBという事なので、内訳はTHDが118dBで、Nが116dBぐらい。ダイナミックレンジは117.4dBで、これは基本波が-60dBFSの時だろうから、1bitDSMの例に漏れず、フルスケールでもNは、ほとんど劣化しない。

 

Signalyst型だと、数字は良くならないのでTHDが94dBで、Nも94dBぐらい。

https://www.diyaudio.com/forums/digital-line-level/345385-star-pure-dsd-dac-signalyst.html

 

 このTHDとNが大体同じ数字になるというのは、良く出来た1bitDSMの足跡みたいなものでなかろうか。うちの1bitDSMも、シーズン1とシーズン2が、最終的には同じような結果になった。上手く行っていない時はどちらも悪く、上手く行くとどちらも良い。金閣型は、たいていTHDがNよりも良い。  

 

 ただ問題なのは、-120dBFSのNを直接測るのは、APの桁を間違っているような測定器でないと無理。うちのAD7960は、二つパラにしても残留ノイズが-123dBFS。なので測定対象が-120dBFSだったとてしても、出て来る数字は両者の二乗平均で-118dBFSぐらい。金閣的な金持ちでもない限り、そうやって補正して使うしかない。-123dBFSは、銀閣的には飛びっきりのハイスペックなんだけど。なんとか-123dBFSぐらいまでは、補正して使える。

 

 そんな貧乏補正をして、尚且つ本来の48tapが使えない片肺の中で、辛うじて使えそうな6tapをかなり完璧な36tapに上乗せした42tapだと、このぐらいの数字になった。

f:id:xx3stksm:20191124203051j:plain

 これはTHDが少し良くない。1bitDSMの法則によると、やっぱり上手く行っていない。繕った6tapの出来があんまり宜しくないんだと思う。悪貨は良貨を駆逐する。まあ、補正後で118.7dBのSNRは立派だけど。48tapが全部揃えば、THDもNも更に良くなるはず。揃っている36tapだと、これ。

f:id:xx3stksm:20191124203502j:plain

THDとNが大体同じ。ゲインが1.3dBぐらい上がって、SNRが1dB上がっているので悪くはないけれど、THDは割を食った模様。理想的なアナログFIRの場合、ゲインが上がってもノイズレベルは変わらないので、SNRはそのまま1.3dB良くなる。36tapから48tapの場合、ゲインは2.5dB上がるので、理想的であれば117.7+2.5=120.2になる。実際はそこまで理想的に動作しないので、117.7+2=119.7ぐらいと思う。

 

8tapだとこれ。

f:id:xx3stksm:20191124204136j:plain

これはゲインが13dBぐらい上がるので、36tapは理想値として121dBぐらい。なので3dBちょっとロスしてる。

1tapはこれ。

f:id:xx3stksm:20191124204412j:plain

これから推測すると、8tapの理想値は、114dBほど。6dBぐらい損してる。1tapは、ほとんど回路の残留ノイズに等しいので、これを基準にするのはちょっと厳しいのだけど。ただ理想値としては、1tapの129dBというのが存在するのは事実。つまり、アナログFIRの動作環境次第で、まだまだ改善の余地があるという事。でもこれは熱雑音の領域なので、120dB辺りが現実的な数字だろうけど。

 

アナログFIRの場合、各タップのスイッチングの位相を揃える事でノイズの発生を抑えられて、より理想状態に近づく。但し足し算はアナログのデイスクリートなので、モノリシックよりは圧倒的に不利。それなりのノイズ増加が、タップを増やすと出る。

f:id:xx3stksm:20191124205356j:plain

上段の2tapだと、ほとんどまだ出ない。12tapになると、そこそこ。42tapは、繕い物のせいもあって、それなり。これは250MHzの帯域制限だから、相当に小さいのだけれど。128OSRなので、その周期でノイズが出る。100MHzぐらいの 単発サイン波のような感じ。そんな高い周波数がどうして音声帯域に影響するかと言えば、それは大太鼓とトライアングルの関係。

 

自明な話として、大太鼓はトライアングルよりも低い周波数成分を持つ。ではトライアングルにはないかと言うならば、ほとんど全ての人が誤解している。PCで使うFFTというか正確にはDFFTは、離散時間のフーリエ変換の事。離散時間とフーリエ変換は矛盾する概念で、数学的にはともかくとして現実世界では両立しない。この場合、離散時間がフーリエ変換を駆逐するので、実際にしている計算はフーリエ級数

 

無限のデータを扱わない限り、フーリエ変換にはならなくてフーリエ級数となる。フーリエ級数とは、周期の制限の中での計算。一秒の周期で計算するならば、その展開した周波数成分は、つまりはFFT(DFFT)のbinは1Hzの倍数。1Hz,2Hz,3Hz・・・fs/2まで。対象が大太鼓であってもトライアングルであっても関係なし。解析周期の整数倍の周波数成分に展開される。違いは、大太鼓の方がより低い周波数成分を含んでいるというだけであって、トライアングルだから低い方はないという話はない。一秒周期で叩いているならば、トライアングルであっても1Hzの成分が必ず出てしまうよ、というのが計算するまでもないフーリエ級数の常識。

 

この場合も、100MHzの単発パルスは間違いなく元の1kHzの信号に何らかの関連性を持っているので、音声帯域の方までも影響して不思議ではない。実際、このグリッチのようなのが小さくなると、THDもNも良くなる。なのでデジタル側とアナログ側を工夫して、これを出来るだけ大きなタップの時にも小さく出来る最適な方法論を見つけられるなら、それが最後のミッシングリング。シーズン3でそれが出来るならば、話はシーズン3で解決して大団円。

 

おまけで帯域外ノイズ。42tapになるとアナログFIRの効きも良くなるので、更に小さくなる。

f:id:xx3stksm:20191124211725j:plain

f:id:xx3stksm:20191124211736j:plain

以前のは24tapのはずだから、かなり違いがあるはず。オタク志向の1bitDSMで、マルチビットDSMに近い所まで来ている。

 

PCMから1bitDSMへの変換。色々と多士済々。

 PCMから1bitDSM(DSD)への変換に対する、面白いFFTを見つけた。

https://twitter.com/serieril/status/1175818591884599296

色々なソフトウエアでの変換をした時、どんな特性になるかというもの。PCM-DSD Converter(黄色)が記事の作者の作った物みたい。 

 

一枚目の図の24bit quality group oneで、SONY DSD Direct(緑) とKORG AudioGate 4(水色)はどうも同じ特性。16bit PCMの量子化ノイズから推測すると32kか64kぐらいのFFTだから、-150dBのラインが110dBのNに相当する。ここら辺りが所謂ハイエンドの下限。なのでSONY DSD Directはちょっと厳しい。SACDの特性よりも悪いと思う。

 

NTFの零点が二つあって、低域にかけてだらだら下がりなので、典型的な五次の特性で二つのlocal feedbackを入れている。経験的に言って、local feedbackを入れられるのは七次以上になる。そうでないと、64OSRでは帯域内でも(20kHzまで)110dBのNを確保できない。このFFTでも、20kHz近辺では110dB以下に悪化してしまう。

 

但し、外してしまうと三枚目のFFTTASCAM Hi-Res Editor(水色)に近い特性になるので、やはり110dBは確保できない。前回書いたように、この場合はOSRを128にしてやれば、30kHz近くまでは110dBを確保して、尚且つ帯域外のノイズを八次などの物よりもかなり減らせる。一枚目のWave to Dsddiff converter(オレンジ)は七次で三個のlocal feedback。アナログ出力で総合的に判断するならば、一枚目ではこれが一番良い。

 

二枚目のFFTでは、SoX(clans-8水色)が面白い。これは八次で四個のlocal feedback。local feedbackは前々回にちらっと書いたはず。量子化ノイズの特性を決めているNTFは、八次だと分母と分子は因数分解可能なzの八次の多項式になる。分母のゼロは不安定を意味するので不許可。分子がゼロになると、そのものずばりでNTFはゼロになる。

 

local feedbackを入れていない時、z^(8)のような分子になるので、ゼロになるのは直流の時のみ。一枚目のSONY DSD Direct(緑)とかWave to Dsddiff converter(オレンジ)が、直流に向けてだらだら下がるのは、z^(1)という項を残しているため。奇数次の場合は、このzのお蔭で多くの場合、直流でのゲインはゼロになる。SoX(clans-8水色)は八次で全ての項をゼロ以外にずらしているので(それがlocal feedback)、直流に対してもゼロにはならない。

 

尚且つ、最適な係数を触っているようで、八次にしては落ちが悪いので低域では110dBのNを確保できていない。音を聞きながら調整していたらこうなっちゃった、とか。次数とは単に量子化ノイズの分布を変えるだけの作用、という原点から見るならば、帯域内でのノイズ増加は帯域外でのノイズ低下を意味する。

 

実際、同じく八次のPCM-DSD Converter(黄色)よりは、ずっと帯域外ノイズは小さい。音ではなくて、オシロの波形を見て調整したのかもね。アナログ波形はかなり綺麗なはずだから。総合的には、二枚目の中ではSoX(clans-8水色)が一番良いかも。かなり試行錯誤をしてるはず。

 

三枚目は色々と個性的なのがあって面白い。TASCAM Hi-Res Editor(水色)はlocal feedback を外している珍しいタイプ。次数としては傾きと-150dBとの交点からして五次だと思う。12kHz以上では110dBのNは厳しいけれど、全体のバランスは良い。かなりの試行錯誤をしない限りここまでは出来ない。評判の良いらしいHQP(ADSM7)は、少しだけ係数を触った七次に過ぎないので、TASCAM Hi-Res Editor(水色)の方がずっと考えている。

 

もう一つちょっと中身が読めなくて初めて見るのが、Foobar 2000 Type D(緑)。五次で二つのlocal feedbackであるだろうけれど、 帯域内での落ち方が前述の五次のSONY DSD Direct(緑)よりも、ずっと良い。その分、110dBのNは13kHzあたり。local feedbackを外すとこんな特性になるけれど、その場合は零点を持たないので、どうしてこうなのかが分からない。

 

64bit精度にするとこうなるのかと言えば、些か疑問がある。少なくとも、48bit精度ではSONY DSD Direct(緑)と同じ特性にしかならないのは経験済み。これはちょっと理由が分からない。謎。

 

Weiss Saracon(CRFB10)は名前の通りに、CRFB型の十次で五個のlocal feedback。必要なのは最終のアナログ出力での特性がどうなるかなので、些か牛刀の趣なきにしもあらず。ソフトウエアとしては良好であっても、現実世界のDAC用としては今一つ。TASCAM Hi-Res Editor(水色)が三枚目の中では良いのかなあ。

 

四枚目のFFTSONAR(緑)は、TASCAM Hi-Res Editor(水色)と同じに見える。いずれにしても、local feedbackを外している。偶数次の場合、最低でも一つはz^(n)の項を残さないと、直流でのNTFが零にならない。八次であれば、二個を残してz^(4)を含んだ方がアナログ出力としては好ましくなる。なので四次であれば、local feedbackは無しで分子はz^(4)とするのが得策。

 

ソフトウエアのライブラリーでは、多分一律に入れられるだけ入れてしまっているんだと思う。HPQ(ADSM7オレンジ)が、ここに出ていた。七次で三個のlocal feedback。帯域外でのノイズが少し少な目なので、その分帯域内は増えるけれど、-180dB近辺はアナログ出力での140dBのNを意味するので、観測不能。つまり、ここに拘ったとしても、アナログ出力には何の変化もないという事。

 

でもSoX(SDM-8水色)とかPCM-DSD Converter(黄)よりは、帯域外ノイズは小さくて帯域内ノイズは良好。ちょっと値段が高いらしいけれど、四枚目の中では良いかも。うちの1bitDSMでは、TASCAM Hi-Res Editor(水色)みたいなlocal feedback無しを四次にして、OSRを128にする。そうすると、DSM-tax は2dBの軽減税率適用で25kHzぐらいまでは110dBのNを確保できる。

 

帯域外ノイズは元々小さめの上に、一ビットなのにアナログFIRでデジタルフィルターがかかるから、相当に減る。6dB/octのアナログLPFだけでこの程度。色々な特性を見たけれど、1bitDSMの最適な変調は、そのあたりと思う。

f:id:xx3stksm:20190917205406j:plain

f:id:xx3stksm:20190918151029j:plain


 更に現実の問題として1bitDSMは、-40dBFSから-60dBFSぐらいにかけて空ぶかしの状態になってしまい、特性が悪化する。市販のチップが多ビットなのは、その辺の事情も関係するのかもしれない。対策はなくもないので、次の基板ぐらいからぼちぼちと。DSMをがりがり自前で足掻いていると、なんかの弾みにふと気が付くことがあって、対策を知っている人は少なからずいるとは思うけど。