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

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

せっかくなんでパッシブプローブも。

 スペアナと言うかFFTで1MHzぐらいまで確認できると、やっぱり音声用途でも嬉しい。オシロスコープに付いているFFTはグリコのオマケにしかなってないけれど、専用のハードウエア(MDO3000シリーズ)が入っているのはバカにならなくて結構使える。音声用のADC程のTHD特性はないとしても、DSMの帯域外ノイズを見るのなら問題なし。

 

 アクティブプローブは、さすがにちょっとノイズ特性が悪い。1.5GHZ帯域なんで仕方ないんでしょう。50オームのパッシブが低レベルであれば使えるので、せっかくだから次数の違いでの帯域外ノイズの変化を見てみる。

f:id:xx3stksm:20190918151029j:plain

 これだと128OSRで零点が256kHzに動いたのも分かる。デジタルフィルターなのでサンプリングに合わせて特性が変わる。FFTのSFDRが60dBぐらいなので、THDもその位になっている。これは測定系の制約なので、実際はもっと良い。64OSRにするとこう。

f:id:xx3stksm:20190918151403j:plain

 零点が128kHzに移る。アナログフィルター(6dB/oct)の効きが少し悪くなるので、全体として少し悪くなる。零点が動くのがデジタルフィルターの強み。4th orderの64OSRには、ちゃんと使い道がある。32OSRとか16OSRにも。このDACは元々マルチシステム用なので、普段は1024tapFIRのXoverが入っている。ローチャン用は、1.5kHzカットオフとか。

 

 なので、1.5kHzまでしか使わないのであれば、20kHzの1/8の16OSRでも問題はないという寸法。アナログのLPFなんぞを使っていると、そうは問屋が卸さない。かなりデカいCが必要になってくる。デジタルフィルターはアナログFIRであっても、零点がサンプリング周波数に連動して落ちて来るので、等価的には128OSRと同じ特性になる。変える必要があるのは、6dB/octの所だけ。

 

 OSRが下がるとSNは上がって来るので、高能率の中音のホーンなどでかなり有利になる。他にも、高能率のホーン対策として一気に10dB近くSNを上げる手もあるので、SNで不利になる1bitDSMの問題はほとんどなくなる。ホーン用としては、32OSRぐらいと思うけど、アナログFIR様様。マルチシステムが基本だから、DACはネジクギとして数を用意し、スピーカーの効率とか帯域に合わせての調整が必須。

 

 七次と八次はこれ。次数を上げるのは、単に量子化ノイズの分布を変えているだけなので、帯域内での効果がアナログ的要因で制約されるのであれば、帯域内でのSNは四次と同じで、対域外でのノイズはかなり大きくなる。次数の意味をしかと考えるのであれば、当然の結果。中々、実物で試さない限り、次数信仰から自由には成れないけど。

f:id:xx3stksm:20190918152824j:plain

f:id:xx3stksm:20190918152835j:plain


 結局の所、アナログFIRで24以上のタップを確保するのであれば、四次が最善の選択になる。山高ければ貴からず、DSMの次数も同じ。意味を考えて、個別の状況に応じて調整が必要。
 

最適のDSMを求めて。分け入っても分け入っても量子化ノイズ。

 DSMを多ビットで使う場合、自分でハードウエアの変調器を作るしかないと思う。ソフトウエアで提供されているのは1ビットに限られる。1ビットでないと外部のDACとつなぎようがないし、さて何ビットにしたら良いかもわからないだろうから。有料のソフトもあって結構な値段がするらしい。もちろん中身は企業秘密。7次ぐらいの次数のようだけど。

 

 問題なのは、そういうソフトは特定のDACを想定しているわけではないので、必ずしも最良の結果とはならない事。特にハイエンドを目指すのであれば、特定のDAC

対しては、それに特化した変調器を組み合わせないと目的は達成できない。デジタル領域でのノイズシェービングの効きは、あんまり最終的なアナログになった時の特性とは関係がない。

 

 少し古めの規格のSACDプレイヤー(所謂DSD)は、おそらく7次ぐらいの次数でOSRは64。確かSACDの規格として信号成分は50kHzまでとかいうのがあって、量子化ノイズを落とすためのアナログフィルターは、50kHzのカットオフになっている筈。24dB/oct以上のは入っていると思う。テストSACDで信号を出してみると、10kHzはこんな感じ。

f:id:xx3stksm:20190917201537j:plain

f:id:xx3stksm:20190917203059j:plain

 20kHzぐらいから急激に増える量子化ノイズがあるので、50kHzまでと言う制約もありアナログ波形はこんなもの。もう少し広めの帯域で確認すると、プローブのノイズ特性で制約されているので、細かくは分からないものの、そうだろうなあという按配。

f:id:xx3stksm:20190917203410j:plain

 70kHzぐらいから落ち始めるのは、多分アナログのLPFの特性。このノイズシェービングの名残は問題ないという事にはなっている。実際DSDの音質に関しては、細やかな感じというものが多くて、高調波が気になるという話は聞かない。場合によっては、IMDの影響で可聴帯域にノイズ成分が落ちてくる可能性はある、と思うけど。なのでやはり、もう少し綺麗にしたい。

 

 綺麗にするためには多ビット化がまず一番簡単。しかし1ビットが必須なので、これは無理。次はOSRを上げる。128にしてやれば、ほとんど倍の所にノイズの山は動く。そうするとアナログLPFが効くので、もうほとんどノイズは消えるはず。但し、sacdという規格では、書き込むデータが倍になるのでそれは不可。PCで変調をかけている場合でないと、この手は使えない。

 

 但し、いずれにしても、デジタル領域では山の位置が高い方へ動くのみ。アナログLPFの設計が楽になるのが長所。多分、無料か有料に関係なく、ソフトでの変調器を使う限り、打てる手はこの二つしかない。ソフトを書いている人は、デジタル領域の外には出られないと思うから。つまり、アナログに変換するDACまでも含めた設計は無理なので、うてる手はここで打ち止め。

 

 特定のDACに特化した変調器と言うのであれば、第三の手がある。国宝千手観音にははるかに及ばないながら、二か三かには意味がある。三番目の手を使うと、OSRは128だけど、単純な6dB/octのアナログフィルターでもここまで綺麗になる。

f:id:xx3stksm:20190917205406j:plain

f:id:xx3stksm:20190917205420j:plain

 アナログ波形の見た目でもハッキリ違うので、250kHzまでのFFTの結果も当然。1bitDSMで、6dB/oct(30kHzぐらいのカットオフ) のアナログフィルターでここまでの特性は立派。オーディオ帯域を詳しく見るとこんな感じ。

f:id:xx3stksm:20190917205927j:plain

 タネは、低めの次数(4th order)の変調。DSMの次数は、スピーチとスカートの長さ程には簡単じゃない。物事はだいたいそうであって、デジタルフィルターのタップにしろ、アンプの出力にしろ、適当な大きさというものがある。長ければ良いとか、大きければ良いという話はない。部屋の広さであれば、広ければ広い方が良い、単純に言い切れるのは、オーディオではそれぐらいでなかろうか。

 

 四次のDSMは、火打ち石で火を起こすような感、なきにしもあらず。まずやらない。でも64のOSRにしたとしても、量子化ノイズの残りはとても小さい。上の同じOSRのSACDと比べるならば、歴然。

f:id:xx3stksm:20190917210723j:plain

 どうしてそうなるかには勿論理由がある。かなり数学的な問題で、NTFというノイズシェービングの効きを表す関数の特性に拘わる話。この250kHz帯域でのFFT(オレンジ色の図)は、20kHzを超えるとほとんどNTFと等価。DSMの次数とは、主にこのNTFをいかにして制御するのかという意味。

 

 もしもデジタル領域でのみ考えるのであれば、多分DSMの次数は高い方が有利。有利と言う本当の意味は、可聴帯域での、つまり20kHzまででのノイズシェービングの効きは良くなりますよ、と言う事。しかし現実には、アナログ領域での返還に伴うノイズであるとか、帯域外のノイズが大きいとsacdのように関係ないとしてもきちゃないアナログ波形になるとか、が関係する。

 

 それらはどんな変換方式のDACを使うかに関係して変わるものであるから、それに合わせたDSMの次数も自ずと変わって来るよねえ、と言う話。更に、アナログFIRのDACというものは、それ自体が超良質のLPFになっている。アナログFIRのDACとは、アナログ領域におけるデジタルフィルターなので、基本的には普通のアナログLPFのような落ちっ放しにはならない。

 

 しかしまあ、零次ホールド特性もあるので、高域にかけてはだらだらと落ちるから、見た目としては落ちっ放しのアナログLPFとほぼ同じ。それもあるので、上の四次の128OSRの場合は、ほとんどノイズはプローブのノイズの下になっていて見えない。パッシブプローブならば見えるけど、50Ω負荷ではちょっと比較が難しいのでアクティブプローブでのみ。

 

 同じ環境で次数を七次にすると、四次よりはかなり悪くなる。

f:id:xx3stksm:20190917212905j:plain

 一つ上の四次の時も、128kHzの所でぐっと落ちる。これはアナログFIRの特徴。普通のLとかCとかは入ってなくても、デジタルフィルターのように周期的に線形位相で零点が出来る。デジタルフィルターのようにではなくて、デジタルフィルターそのもの。但し、足し算をアナログ領域でしているだけ。もう既に失効した特許。当時は、そんな副産物があるなんて思いもしなかっただろうけど。

 

 八次だとこうなる。

f:id:xx3stksm:20190917213453j:plain

 高い次数で帯域内でのノイズは改善されるけれど、全帯域でのノイズは勿論不変。という事は、対域外でのノイズは大きくなっても不思議はない。せっかく帯域内でのノイズを小さくしても、DACでの変換過程でのノイズの方が支配的なので、結局意味がない。最終的なアナログ出力を全帯域で考えるならば、むしろ悪化してしまう。だから次数が高ければ良い、と言うほど単純ではない。

 

 暫くは下のような64のOSRで八次のDSMを使っていたけれど、今は128OSRで四次のDSM。これはちょっとADCの特性が違っていたので、実際は115dBぐらいのSN。なので今の四次のものとほぼ同じ。

f:id:xx3stksm:20190809205555j:plain

 実は、次数を下げられるのであれば、ボーナストラックみたいなのがある。ボーナスSN。知っている人は知っているように、六次を超えるようなDSMは、変調度を少なくとも6dBは下げないと動作しない。これを数学的に証明するのはとても難しいだろうけど、感覚的には比較的容易。高い次数とは、音声信号以外の1bitデータの持つ周波数成分が高い方に移るという事。 

 

 仮に大きめの振幅を八個の一ビットデータで表す時、一番簡単なのは11111111。11110111になると、その平均値は7/8なので11111111の8/8よりは小さくなる。しかし周波数成分を考えると、11111111は直流。一番高いのは10101010の時。でもこれでは直流成分は4/8。実質的にはゼロ。なので、そこそこ高い周波数成分で、そこそこの直流成分にするには、11101110あたり(6/8)が限界。

 

 結局、高次の1bitDSMでは、最大値が11101110(6/8)で最小値が00010001(2/8)という所に落ち着くしかない。なので最大値が11111111(8/8)で最小値が00000000(0/8)と言う理想的な状態(1-0=1)と比べると、得られる振幅は(6/8-2/8=1/2)に減る。これを超えるような1bitデータを求めると、DSMは、孝ならんと欲すれば忠ならず で、股裂きになる。つまりは不安定。

 

 六次以上では必ず6dBの税金(DSM tax)が必要。一次と二次では、ほぼゼロ。実測すると、三次では2.5dB、四次では4dB、五次では5dBほど。1bitDSMの特徴として、この差はそのままSNの差になる。なので四次のDSMは、六次以上よりも2dBの軽減税率の恩恵を受ける。但し、128OSRは64OSRよりもSNでは不利なので、実際は帳消し。でもハードウエアを改善するならば、この2dBはそのまま儲けとなり得る。要は、現実世界では、低い次数に長所がある。

 

 更にもう一歩DSMの奥山に分け入るならば、local feedbackというのがある。これはNTFの解析から来ている。基本的な二次のDSMから、このlocal feedbackという概念が出て来る。一次にはない。g0というのがそれで、全体ではなくて局部的な負帰還を掛ける。かなり小さめの値であって、そんなには全体の特性に影響しない。

 

f:id:xx3stksm:20181213212028j:plain

 これを入れると、帯域内のノイズ特性を改善できる。八次の場合、上の図ではノイズが上がり始めるのは、25kHzぐらいから。これはlocal feedbackを二段階入れているので、ここまで改善されている。local feedbackは次数二つにつき一段階入れられるから、八次だと四段階までは入れられる。二段階でそこそこの特性になるので、四つ入れる必要はない。

 

 但しこれもデジタル領域の話なので、最終的なアナログの特性とは必ずしも一致しない。却って悪化する場合もある。OSRが64以外ならば入れない方が良いし、七次以上でない時も却って悪化する。なので、四次の128OSRでは入れない。そんな微調整がDACのハードウエアに合わせて必要。

 

 そこまで変調側を追いこんで、アナログFIRのタップも48ぐらいにするならば、120dBのSNは出ると思う。THDは三歩下がって師の影を踏まずで、ほっといても後からついてくる。1bitDSMの場合、リニアリティと言う概念がアナログへの変換過程では存在しない。少なくとも、アナログFIRという方法論では。

 

 結果として、温度などに対しては超安定。調整箇所もないので、ディスクリートでありながら、一分もしないうちに昨日と同じ特性になる。最大振幅時と無信号時とでノイズフロアの変動もない。多ビットのDSMでは、モノリシックの市販品でも、決してそうはならない。信じられない話ながら、どうやら現実世界でもディスクリートの1bitDSMを超えるものはなさそう。 

  

 

少し目鼻のつき始めた1bitDSM。原石の輝きは磨き方次第。

 pcm1704一筋で、ほぼ二十年。音楽用とは考えていなかった冷やかしのDSMが思いの外の音質で、ならば究極の禁断のけもの道の1bitDSMにも手を出すしかなくて、やってみたらアッサリとマルチビットのDSMを上回る性能に。理論的にはそうなんだけど、理論と現実とはなかなか相容れないのが常。ましてDACチップ無しでどこまで行けるのか、との思い込みは偏見だった。

 

 元々の目論見の、ノイズフロアが出力振幅に依存しない特性は、1bitDSM(DSD)の圧倒的勝利。リニアリティという概念がないので当然と言えば当然なんだけど、振幅が大きくなっても全く動かない。ここん所は完全に最近の市販チップとは別路線になる。市販品はマルチビット系なので、大振幅では必ず特性が悪化する。

 

 何故か0dBFS神話と言うのがあって、特に最近の海苔波形だと、悪い所を使っている。pcm1704ぐらいまでは、0dBFSで一番良い特性と言って嘘ではなかったろうけれど。AK4499というのも悪化する。https://velvetsound.akm.com/jp/ja/technology/

ここの最初の図は、-155dBFSという事でほとんど無信号。常識的なFFTサイズ(64k)だと、ノイズ電力は-124dBFSぐらいになる。

 

 その下の図は0dBFSの時で、ノイズフロアは6dBぐらい悪化するので、オーディオ業界以外の常識ならば、THD+NはTHDの-127dBとNの-118dBでほぼ-118dB。-124dBというならば、Nは-127dBでないと困る。どう見てもそうは見えないから、オーディオ業界独特の測り方があるんだろう。ともあれ大振幅では、少なくとも6dB近くノイズフロアは上がる。

 

 基板の作りに問題があるので正確ではないけれど、made in eBay のESS9038も同じ。これはもう間違いなく0dBFSで使うと最悪。下の図の-3dBFS程度でもかなり悪くなる。opアンプの特性はDACよりも一桁は良いので、ハイエンド機器では-6dBFSぐらいを最大値として、足りない部分はI/Vの所でゲインを稼いでいると思う(DAC-3とか)。

 

 そうすると、もっと遥かに問題のInter Sample Peaksも起きない。青が無信号時のノイズフロア。入力はSPDIF。基本波のスカートの広がりでもS/Nを損してる。audio testerはかなり正確なS/Nを出してくれる。昔の歪率計のノッチフィルターとの比較は、ちと分からないけど。

f:id:xx3stksm:20190809204425j:plain

 

 AD9717で作った自作品の5bitDSMも、やはり多ビット品なので大振幅では6dBぐらい悪化する。音楽用としてはあんまり意味ないけれど、DACの校正をした直後なので、THDはかなり良い。数日経つと、-120dBは難しくなると思う。もしも大振幅での悪化がなくて、なおかつ青天井に振幅を上げられるのであれば、青の無信号時の-120dBぐらいまでは、ノイズ電力は落とせる。

f:id:xx3stksm:20190809205010j:plain

 

 そしてケモノ道の1bitDSM。これは大振幅での劣化はない。デジタルからアナログへの変換時に、リニアリティという概念が存在しないので。2bitであっても、1bit以外では必ずリニアリティの関係で、大振幅では劣化するはず。DSMの変換を外部の基板でするとかECLでのスイッチングをあれこれと悩んで、二週間前の出来立てホヤホヤから、かなり良くなった。

 

 これは基本波のスカートの広がりがとても狭い。有り体に言うならば、ジッタが小さい。何が関係するのかは良く分からない。同じくアナログFIRのpcm1792のDSD入力も、とても狭い広がりだった。pcm入力はDSDよりも悪いのであんまり調べていない。どんなだったか記憶がない。

f:id:xx3stksm:20190809205555j:plain

 多ビット品の場合、DSMの次数はそんなに上げる必要はない。5次ぐらいで十分。1bitはケモノ道なので、とても険しい。8次ぐらいの急坂。外部の基板で変調をかけて、1bitになった状態で送るので9次とか10次でも可能。マルチプレクスの関係で、8の上は16。16の中で9しか使わないのは効率悪いので、ひとまずは効率の良い8次。

 

 116.3+0.77=117.07は、青の無信号時の117.87にかなり近い。実際、両者はほぼ重なる。つまり、単純な正弦波であるならば、ノイズフロアは振幅の変化に対して反応しない。何時も同じ値に留まっている。うちの環境では、ノイズフロアの変動の有無は音質に大きく関係する。太鼓がドンと鳴る時、思わずよけてしまいそうな勢いになる。音圧は100dBも行かないのだけど、ノイズフロア変動なしは爆風のような衝撃波になる。

 

 OSRというのは、低い方が良い。理論的には当然。デジタルの領域では、DSMのTHD+Nなんて24bit精度の遥か下で-160dBとか-170dBとか。アナログでの劣化原因の多くは、パルスの立ち上がりがなまる事。パルスの幅が長いほどその劣化は小さいので、OSRは低い方が良い。漏れてくる量子化ノイズを出来るだけ切るために、DSMの次数は上げる。特に1bitでは。

 

 アナログFIRはLPFでもあるので、24tapでもかなりノイズは落とせる。最終的に32tapにするならば、12dB/octぐらいで実用的な所に落ち着くのではと思う。OSRは128にした方が良いかも。128は64よりも少し劣化する。こんな具合。量子化ノイズの漏れは随分と小さくなる。

f:id:xx3stksm:20190809211652j:plain

 別の問題として、ノイズフロアが-116dB以下になって来ると、ADCの残留ノイズが無視できなくなってくる。今使っているAD7960はSAR型で、DSM型よりもノイズフロアは低い筈。元は4MHzサンプリングで、20kHz帯域でのノイズレベルは-123dBぐらい。チップ自体の特性が揃っているので、モノラル状態で二つパラにした時の値。DSM型で-120dBを超えるのは中々難しいかと思う。

 

なので、無信号時に-120dBと言うのは、実際は-123dBぐらい。-122.6dBとなると、-130dB近い筈。大振幅時のノイズフロアは、ノッチフィルターでも使わないと、正確には測れないと思う。APの測定器なんかはどうしているのだろうか。ああいう再現性を保証しているプロ用の機器の場合、今時のチップだと保証値はアマチュアの実力値よりも普通は低くなる。

 

 ここでのESSの測定値は、先のAKとは違って常識として理解できる。

https://www.audiosciencereview.com/forum/index.php?threads/review-and-measurements-of-matrix-audio-element-x-dac-streamer-amp.7782/

-127dBのTHDと-121dBぐらいのNで、THD+N=-120dB。この人は32kのFFTを使うとどこかに書いていたので、それならばNは-121dBでも不思議ない。但し、なんらかの補正なしで-121dBのNは、ちょっと信じられないのだけど。4Vrms振っているし。

 

 上のサイトに32tone-testなるものがあったので、ちょと試す。20Hzから20kHzまでのlog目盛。100Hz,120Hz150Hz,200Hz,250Hz,320Hz・・・。

まずはmade in eBayのESS。青が大振幅時で、最大値で-2dbFSぐらい。白はそれよりも60dBぐらい低い。分離を良くするためにここだけはFFTが1024kサイズ。なので今まで(64k)のノイズフロアよりも、12dB低くなる。 

f:id:xx3stksm:20190809214029j:plain


 低い方でかなり悪化するのは、多分ヤスモン基板のせい。むしろここまでの特性が出ているのが驚き。I/V変換の所だけは、電流モードになるように改造しているけど、他はそのまま。SPDIFが一番高性能。

次はAD9717の5bitDSM。低い方では少し悪化するみたい。

f:id:xx3stksm:20190809220728j:plain


 実は、1bitDSMは小振幅が苦手。大振幅は青天井なんだけど。多ビットのDSMならば、3bitでもこうはならない。単純な正弦波であれば、悪化はしない。こんな32toneだとか、実物の音楽信号の小振幅時にはこういう劣化が出る。正弦波というものは、スピーカーの軸上1mの特性のようなもので、参考値ではあっても音質との相関に乏しいという実例。コンニャクのような役立たずで、一応腹はふくれるがそれだけ。

f:id:xx3stksm:20190809215335j:plain

1bitDSMを実用化するには、小振幅時の特性がキモ。DSMの特性を少し変えると違ってくるだろうけれど、さてどうしたものか。大振幅時の特性劣化を防ぐのは、多ビットDSMでは無理と思う。1bitDSMの小振幅時の特性は、なんとかなるでしょう。他にもまだ幾つかの問題はあるけれど、大振幅での青天井は他で真似のできない長所。やっぱり1bitDSMに突っ込むしかない。

 

1bitDSMの三種の神器。アナログFIRとECL接続とFPGA。

 半信半疑だった自作のDSMDACは、思いの外の高性能だった。理論的には1bitDSM(DSD)が高嶺の花と言うか、他の追随を許さない最高峰になり得るので、これは試すしかない。今はネットで簡単に基板を作れるようになったので、CADを持っているならば試作は容易。空中配線基板では、事の本質は分からない。二週間ほどで基板データを作り、発注は海外。運送費払ってでも、こっちが質として上。

 

 一か月ほど前に届いて、あれこれと試行錯誤。ひとまずの結論として、理論の通り1bitDSMはとても潜在能力が高い。AD9717での3bitDSMは、DSMの変調回路から始めた事もあって一年以上はかかった。それを流用できるとはいえ、1bitDSMは一月ほどでほぼ同じぐらいの性能になった。細かい修正は必要としても、DACチップ無しのFPGAトランジスタだけで、ESSのような最新チップと同等もしくはそれ以上の物が作れる。1bitDSMおそるべし。こんな基板。

 

 

f:id:xx3stksm:20190724182723j:plain

  Xc6slx9という¥2400ぐらいのFPGAが二つ。各チャンネルに一個づつ。トランジスタをドライブする数が多いので、基板の配置からしてもLとRに一個づつが正解。左と右は少しトランジスタの構成が違っていて、おそらく左はダメだろうとの予想通りダメだったので放置。右側が本命。

 

 1bitDSMは基本的に、所謂ノイズシェービングで高域に追いやった量子化ノイズをアナログのLPFで落とせば、本来の音声帯域の信号が取り出せる。言うは易く行うは難し。論理ゲートの出力にCRのフィルターをつなぐだけでも音は出る。詳しい中身は知らないけれど、高級品としてはChordとかPSaudioの製品は結構な値段する。FPGAとアナログ部品という構成は同じだろうけど。

 

 今はRpiとかBBBのようなLinux系は勿論、WindowsでもPCMから1bitDSMへの変換は色々あると思う。小振幅時の応答性、大振幅時の安定性、周波数が変わった時のpopノイズ、など色々細かい問題はあるとしても、そこそこの質での変換はしてくれるはず。デジタルの領域ではそんなに差はつかない。問題は、1bitのDSM信号を、理想的な形で如何にしてアナログに変換するか。

 

 市販品のDACチップもDSD入力が可能なので、それを使うのも手ではあるけれど、ESSの場合DSD入力は本命ではないようで、TOSLINKよりは質が落ちる。1bitDSMに拘るのであれば、やはり独自路線が得策。良く使われているのは、Signalystという方法論。これは74hc590のようなシフトレジスタを使って、アナログのFIRを構成する。アナログFIRはもう失効した昔の特許で、その時はこんな使われ方は想定していなかったと思う。とはいえ今となっては、アナログFIRなしでの1bitDSMは考えられない。

 

 1bitDSMは、そもそも異端に属するケモノ道的流派なので、ここからDSMを理解しようなどと考えるならば、初めっから千日回峰に挑むようなテイになるのが落ちで、必ず脱落する。木食をしてケモノになって山野を駆け巡るなど到底無理。どのぐらい無理かは、この図で自ずと知れる。これが1bitDSMの正体だから。

f:id:xx3stksm:20190724185728j:plain

 ちょこっと透けて見えている赤のサイン波を、1bitDSMに変調すると青の波形になる。この青から高調波を取り除くと、信じられない事にTHD+Nが120dBを超えるサイン波を取り出せる。少なくとも五次ぐらいの次数で、40bit程度の演算精度で変調がかかっているならばそうなる。それをここから見通すなんて、千日回峰か五体投地としか言いようがない。

f:id:xx3stksm:20190724190123j:plain

 心眼を持って上の小さな図を眺めるならば、隠されているサイン波のようなものが、ふと感じられるかもしれない。小さい方が、目のLPF効果で高域のノイズ成分を落とせるので、何かしら隠された本性と言うか元の波形が浮かび上がる。五次ぐらいになっても、微かには波形の疎と密で何が隠されているのがが推察できる。二次ぐらいまでであれば、ほとんど丸見えなんだけど。

 

 電子機器に心眼は期待できないので、マニ車として登場するのがアナログFIR。これには、金は使っても使っても減らない、というような効能がある。この猛烈な高調波ノイズの泥に埋もれている音声信号は、クモの糸にすがり付くようにして上に昇って行ける。音声信号はドンドン大きくなるのに、高調波ノイズは下に留まったままになってくれるので、SNRもTHDも鰻登り。

f:id:xx3stksm:20190724191150j:plain

 これがまずは一発目のFIR。これだけで心眼でも見えなかった青の波形が、もう素性は知れたも同然の黄色に変わる。これは最も単純な、二点間の移動平均。青の波形の隣り合っている二点を、足して二で割っただけ。二点間の平均なので、基本的にはデジタルフィルター。ではあるけれど、デジタルの領域でこの手は使えない。何故かと言うならば、二点が両方とも1若しくは-1であれば結果は変わらずであるけれど、1と-1の時は結果がゼロになってしまい、上の図のように元の二値データが三値に増えてしまう。二値以外は、デジタル領域の1bitDSMでは扱えない。

 

 なのでアナログFIR。アナログであるならばそんな制約はない。74hc590であるならば、その隣り合った二点をアナログ的に足せばよい。抵抗でもトランジスタでもopアンプでも。この場合は足すだけで、もう二では割らない。つまり、二点間の足し算をすると、信号は倍になる。高調波ノイズはほぼそのまま。埋もれていた音声信号が6dBだけ浮かび上がってくるという按配。6dBだけ地上に近くなる蜘蛛の糸

f:id:xx3stksm:20190724192326j:plain

 四点間の移動平均だとこうなる。更に高調波ノイズが落ちるので、結果として音声信号がより浮かび上がってくる。八点間だとこうなる。

f:id:xx3stksm:20190724192458j:plain

 元々の青の信号に対して、八点間の足し算だけでここまで元の赤に近い信号に変わる。つまりは、高調波ノイズを落とせる。なのに音声信号の方は八倍になる。18dBの改善が期待できる。嘘のようなホントの話。但し問題は、アナログの領域でこの足し算を理想的に行う必要がある事。デジタルの領域であればいとも容易い話。しかし多ビットのDACが必要になってしまうので、アナログ領域で足すしかない。

f:id:xx3stksm:20190724192956j:plain

 平均とはLPFなので、足す数つまりはタップ長でこんな具合に高調波が落ちる。これは4096長のFFTだから、八点の場合は(4096/8)=512毎に零点が来る。紫は512おきにゼロになる。四点の緑だと1024おき。全然落ちていない青と比べるならば、八点の紫は相当に効いている。実際、元波形の赤にかなり近くなる。これがアナログFIRという術の正体。実際は32点ぐらいの移動平均を使う。

 

 現実のハードウエアでは、四点だとこんな感じ。四点ぐらいでも、その後に6db/octの落ちっ放しになってくれるアナログフィルターを入れるだけで、青の波形になる。アナログでの足し算とはいえ、FIRは意味合いとしてはデジタルフィルターなので、上の図のように落ちっ放しにはならない。これはデジタルフィルターの鉄則。

f:id:xx3stksm:20190724193715j:plain


 ではこれで一件落着かと言うならば、せいぜい三合目。それで出て来る数字は、90dBぐらいのSNRとかTHD。これは実用レベルではあるし、90dBのSNRでも大抵の場合、残留ノイズは聞こえないけど。それを超えるためには二つ目の術が必要になる。74hc590のような場合、一個あたりの特性はこんな感じだと思う。

f:id:xx3stksm:20190724194650j:plain

 THDがあまり良くないのは二次の歪が大きいため。これは差動型にしてやるとかなり改善できるけれど、この方式の致命的な所は、電源が基準電圧になってしまう事。普通のDACチップでは、基準電圧に気を使う。PSRRが0dBなので、ここでのノイズがそのまま出力に乗ってくる。Signalyst型では、74hc590の出力をそのままアナログとして使うため、電源のノイズがほぼそのままアナログ出力に出てしまう。

 

 なので本来のアナログFIRの、音声信号だけを大きくしていくという美味しい所を享受できない。音声信号と共に、ノイズ成分もクモの糸を伝って上がってくる羽目になるので、32点の平均でもあまり大きな改善はない。90dBぐらいが上限になると思う。第二の術とは、このPSRR=0dBのしがらみを快刀乱麻を断つが如くに解き放つこと。色んな方法論があると思うけど、ありふれていながらあまり知られていないのがECL。第二の術。こんなの。

f:id:xx3stksm:20190724195708j:plain

 T1とT13が基本単位。残りは足し算のためにコレクタが共通になっているだけ。32の平均ならば、32個のパラになる。LN_0とLP_0は逆相になったトランジスタのスイッチング信号で、これが1bitDSMに相当する。LN_1とLP_1はLN_0とLP_0を一段遅延した信号。T13を抵抗に置き換えると、標準的なECL回路になる。T13は定電流回路で、その電流はT1のどちらかのトランジスタに全て流れる。LN_0とLP_0に0.4Vぐらいの差があれば、高いベース電圧のトランジスタに全て流れる。

 トランジスタ(T13)の定電流性から、オンになっている方のベース電圧に乗っているノイズは、流れる電流にはほとんど影響しない。T1のドライブはFPGAなので、LN_0とLP_0には74hc590と同じように電源のノイズが乗っている。けれども0.4Vが0.5Vになったとしても、オンになっているトランジスタに流れる電流に変化はない。つまり、それなりのPSRRが期待できるという話。なのでECLのような抵抗ではなく、T13で定電流にした方が良い。

 この基本単位の特性はこんな具合。差動型になっているので、そこそこのTHD特性で、U2のゲインが18dBぐらいあるので、R1とR4の所でのノイズは115+18=133dBFSぐらい。0dBFSが3.5Vppなので、1uVを切る。opアンプのノイズや熱雑音とかでその位と思う。FPGAの電源ノイズを分離できていないとこんな数字にはならない。

 

f:id:xx3stksm:20190724201818j:plain

 
タップを倍にすると、ほぼ6dBの改善。信号成分だけが倍になるので、そういう美味しい話になる。青は残留ノイズで、信号が倍になっているのに変化しない。これがアナログFIRという魔法の真の姿。

f:id:xx3stksm:20190724201935j:plain


 更に倍にするとこう。ちょっと術に陰りがあるものの、通常のDACのパラ接続では良くても3dBなので、悪くはない。THDは逆に悪化しているけれど、これはあんまり気にする必要はない。実質的にはこの段階で八点の足し算をしているので、アナログ領域ではそろそろ馬脚が現れる。最後の術でこれは化粧する。三発目はくの一。 

f:id:xx3stksm:20190724202239j:plain

 これが12点の足し算。さすがにノイズフロアが3dBぐらい上がってしまう。

f:id:xx3stksm:20190724202900j:plain

 そして最終の24点での足し算。くの一で化粧して、そこそこの数字。これはトランジスタのスイッチングパルスのLN_0とLP_0を、微妙に調整する。ターンオンとターンオフは、同じ時間では切り替わらない。トランジスタの個体差なども関係する。なので最後に一番良さそうな位相関係になるよう、化粧する。

f:id:xx3stksm:20190724203042j:plain


 FPGAには内蔵のPLLがあって、位相を微調整できるようになっている。デジタル的な値なので、記憶しておいて電源オン時に再設定すれば良い。あんまり意味はないけれど、115dBを超えるようなTHDには再現来があまりない。現行のAD9717の3bitDSMでも、落ち着くまでには数分かかるし、いつもいつも同じ数字にはなかなかならないもの。1bitDSMは、直線性とは無縁の世界にいるので、そういう安定性はとても高い感じがする。

 

 まだ試作段階なので、直す所は沢山ありそう。でも潜在能力はとても高い。磨けば更に光る原石。今はXc6slx9の中にDSMの変調器が入っている。それよりも完全にデジタルとアナログを分けて二枚基板にして、アナログ部分はXc6slx4でトランジスタのドライブだけにした方が良いと思う。小振幅での特性を考えると、DSMの変調はもう少し大きめのFPGAで対応した方が良さそうだし。

 

 ともあれ、3bitDSMは一年以上かかった。1bitDSMは一月で目鼻がついたし、伸びしろがまだまだある。天下を取るのは 1bitDSMという、DACの最終予想は、現実のものになるはず。次の次の基板ぐらいで、今のAD9717は置き去りにされて後塵を拝すのみになるだろうなあ。短い命に合掌。
 

ゴボウ抜かれたPCMvsDSM。時は今 DSMがしたしる 五月かな。

 今回の新作DACで、どうやらpcm1704の後釜は埋まった。前回のLTC2642も悪くはなかったけれど、結局の所は好みの問題としてpcm1704に戻ってしまった。かなり小さいけれど、LTC2642はグリッチフリーではないのでその影響かなあと思いつつ、真相は闇の中。まだ¥5000ぐらいで買えたKランクを予備に買い込んで、ひとまず一件落着したのが三年ぐらい前。

 

 今回はおまけにDSMの出力もできる所謂二刀流を目論んで、捲土重来。何度か聞いてみて、ふむこれならば今までと違和感なく乗り替えられると納得。やれやれと余裕もできたので、今回のAD9717はグリッチフリーなので、そうだったのかなあと思いつつも、最後の線香花火程度にとDSMも試してみた。

 

 DSMは、かつてpcm1792を内部のデジタルフィルターを外した状態でpcm1704と聞き比べて、悪くはないとしてもpcm1704には敵わないと諦めた経験がある。良く言われるように、DSMではpcm1704のような濃ゆい低音が出ない。繊細で綺麗かもしれないが、水清ければ魚棲まずな感じで、実在感に乏しい。力弱い低音、という印象が強く残っている。

 

最後の可能性は、DSMの問題ではなくてpcm1792固有の原因に依るというもの。確認するためには、市販品のDSMではなくてディスクリート型、つまりはDSMの変調部分をFPGAで作り、アナログへの変換にのみDAコンバーターを使う事。必ずしもDACチップは必要ではなくて、1bitであるならばChordのような方法論もある。今回はAD9717なので、FPGAとデジタル回路を含まない単独のDACチップとの組み合わせ。

 

そんな構成の場合、1bitも可能でひとまず6bitまでは対応できる。ずっと5bitでやってたけれど、ビット数が増えるとキャリブレーションが大変。DSMは少なくとも20bit精度以上ぐらいないと上手く行かない。1bitであればその精度合わせが必要ないので、その点だけは有利。しかしまあ、2bitであれば調整は一箇所のみで済むし、1bitが本質的に持っている欠点はないので、5bitよりは楽。

 

測定用として120dB(0.0001%)を超えるTHDを達成するのであれば5bitが良いとしても、音楽用には100dB(0.001%)もあればお釣りがくるだろうとの目算と、ちょこっとしたお試しDSMなんだからと、お手頃路線に走る。2bitDSMで聞いてみた。

 

結果は、第四コーナー回った最後の直線コースで、pcm1704或いはAD9717のPCMモードの楽勝で十馬身差ぐらいかと思いきや、一気のゴボウ抜きを食らい逆に十馬身差をつけられて、ぐうの音も出なかった。こんなに違うとは想像の域を遥かに超えている。オーケストラを聞いている時は、少し離されてるなあとうすうす感じつつも、せいぜい一馬身。

 

鼓童の太鼓が圧倒的に違ってた。十馬身差。太鼓がドドンと来る時の迫力がまるで違う。元々低音は出る方なので十分に満足していたけれど、DSMのドドンは爆風のようで、一瞬よけようかと思う程の風圧で飛んだ来た。あの力弱いpcm1792の低音はなんだったのか。こんだけ十馬身差の彼方に置いてかれるのには、必ず理由があるはず。思い当たる事なきにしもあらずなので、色々調べてほぼ原因を特定。

 

音質に関して、1kHzの正弦波は何も語らない。理由は簡単。誰も1kHzの正弦波なんてきかない。聞くのは生の音楽。それは常に振幅と周波数成分が変化している信号。1kHzの正弦波のTHDは、実際の音楽再生と関連が薄い。でも皮肉な事に、120dB(0.0001%)のTHDを安定的に保証できるDACであれば、ほぼ間違いなく音質も良いのだと分かった。THD自体に意味はないけれど、120dB(0.0001%)は音質を決定するであろう特性(爆風のようなトドン)も保証するので。

 

Chordの人はノイズ・フロアー・モデュレーションが大事と言っている。彼の言う事は辻褄の合わない事もあるし今一つ信用できないし、ノイズ・フロアー・モデュレーションもどんな定義なのかが釈然としない。仮にそれを、無音時のノイズフロアーが最大振幅(-0.1dBFS)の時でも変わらない、というのであれば全く異論はない。そういうDACはとても稀で、pcmでそれは不可能。DSMでのみ可能。

 

調べるのは簡単。1kHzの正弦波では最大振幅(-0.1dBFS)にしても意味がない。良く使われるIMD用の12kHzと13kHzの信号なども。生の音楽信号が一番宜しい。比較が難しいので、例えばこういうので代用できる。ワーブルトーン。420Hzから20Hzおきに540Hzまで。こんな時間軸波形。これが意外に難しくて、うちにあるCDプレーヤー(CD-S2000(pcm1792))なんかはボロボロで見る影もなし。大抵のDACではまるで再生できない。

f:id:xx3stksm:20190528205211j:plain

 

うちでこれまで使っていたpcm1704の場合だとこうなる。無音時だと、横の目盛の150dBFSぐらいの所にノイズフロアーがあって、20kHz帯域でのノイズ電力は-110dBFS程度。0dBFSが3.5Vppぐらいなので、2Vppを基準にするとSNは106dBぐらいになる。

f:id:xx3stksm:20190528210621j:plain

ところがワーブルを再生すると、20dB近くもノイズフロアは上がってくる。ノイズ電力をFFTから計算するのはちょっと面倒だけど、10dB以上は確実に上がる。SNは悪くなる。そして問題なのは、こういうSNの悪化に対して人の耳はとても敏感に出来ているみたい。レコードのノイズのように、特に大きな変化のない場合は脳内処理でほとんど除去されるのだけど。

f:id:xx3stksm:20190528211147j:plain

これは同じく以前使っていたLTC2642。pcm1704よりは少し良い。このノイズフロアの上りは、DACの精度に依存する。LTC2642は16bitのモノトニシティを保証しているのでpcm1704よりも精度が高い。そのためにノイズフロアの変動が少し小さい。聞いた時にからっとして陽性でクリアな感じがしたのは、そのためかも知りない。好みとして少しじめっとした憂いを含むようなpcm1704の方が好きだったけど。少しばかりのノイズの多さがそう聞こえたのかもしれない。

 

PCMは相対精度に限界があるので、このような生の音楽信号に近いものに対しては、不安定。スポンジの上に置いたスピーカーのような感じ。勿論、比較対象がなくてこれしか聞いていないのであれば、特に不満はないと思う。大抵の場合、これよりもずっと悪いのが普通。

f:id:xx3stksm:20190528212027j:plain

ここらでDSM登場。pcm1792は6bitDSM。基板は自作品。かなり良くなっているけれど、二次の高調波に相当する所にかなりの山が出来る。ノイズ電力としては上の二つのマルチビット系より低いとしも、聴感としてどうなるかは分からない。同じpcm1792を使っているCD-S2000(CDプレーヤー)は、見せてはならないモノを見せるようになるので省略だけど、これよりとてつもなく悪い。その違いは基板の作りと言って間違いなし。

 

f:id:xx3stksm:20190528212555j:plain

こちらは、ほぼ合格。ESS9038でmade in e-BAYの$50ぐらいの基板。三次の高調波の所に少しだけ山があるように見えるだけ。この基板が優れものなのは、両面基板であること。中国製は月とスッポンで、これは月。アナログとデジタル混在基板の場合、基本的には四層以上にして、内層にスリットのない完全なグランドプレーンを入れる。これが電流の帰りを保証するので、一気に安定度が上がる。

 

両面の場合でも、半田面をベタのグランド層にしてしまえば、疑似的に四層に近い効果が得られる。この基板はそうしてる。両面でこの特性は驚き。理にかなった構造なので筋は通っている。物理法則は裏切らない。見た目ではなくて中身で性能は決まる。CD-S2000は重たいばかりで、アナログデシタル混在の基板のイロハを知らない。この基板はTOSLINKにASRCが入る。というかESSが内蔵しているので。

f:id:xx3stksm:20190528213521j:plain

これがうちの最新版で、元々はpcm1704の代替品ながら、DSMにゴボウ抜かれたので多分もうPCMモードでは使わないだろう基板。だいたい上のESSと同じような特性。今は3bitDSMにしている。6bitDSMまで可能な場合、それより下の解像度にするのは容易。とどのつまり、ノイズフロアの変動を小さくしたいなら、DACの相対精度を上げるしかなくて 、解像度の低いDSMが圧倒的に有利であるという事。

ここがフラフラしていると、ダイナミックレンジが狭くなったように感じる。ここが全く動かない場合、地上から一気に天上まで駆け上がる昇竜の如く、怒涛のフォルテッシモ。爆風のような太鼓のドドンが飛んでくる。昔、pcm1792を試した時に感じた、あの力弱い低音はなんだったのかと思う。そんなにへぼい基板の作りではなかったはずなんだけど。

 

物事は上海雑技団のように、或いはユジャ・ワンのピアノのように、最後の一押しがないと詰まらない。ワーブルは所詮作り物にしかすぎなくて、比較はしやすいけれども本物の音楽信号とはやはり違う。ここは本物を出さなくては、十馬身差の馬群に消えたPCMは浮かばれない。生の音楽信号もほんの少しの工夫で、それなりに比較できるテスト信号になる。


f:id:xx3stksm:20190528214855j:plain

こんなのを使う。これはアレシュ・バールタの「トッカータとフーガニ短調」。チャララー、チャラララッラ~というやつ。それを800Hzのbrick-wallのLPFを通して、800Hzから上をほぼゼロにしたもの。800Hzより上は完全にゼロ。完璧なDACであれば、800Hzより上は横一線のノイズフロアになる。低音側にかなりの大振幅で色んな周波数を含むので、テスト用には最適。

f:id:xx3stksm:20190528215640j:plain

これがpcm1704。予想通り、かなり上がってくる。800Hz以下でも上がっている筈だけど、それは元の音楽成分があるので分からない。これが嵩上げのように働くので、聴感的なダイナミックレンジは狭くなるのだと思う。10kHzの少し上のノイズは、たぶんデジタル処理の問題でpcm1704は無罪。

f:id:xx3stksm:20190528220142j:plain

これがLTC2642。少しpcm1704よりも良い。元々のノイズフロアが少しpcm1704よりも高いので、変動分としては更に少なくなっている。おそらくPCMのDACとしては、最高性能に近いと思う。からりと陽性な音質。

f:id:xx3stksm:20190528220608j:plain

新作DACのPCMモードがこれ。ノイズフロアの変動によるノイズ電力の増加は上の二つより少ないかも。音としては、pcm1704に近かった。というか、陽性とか陰性とかを感じさせない自然体の感じ。

f:id:xx3stksm:20190528220930j:plain

これが新作DACDSMモード。PCMをゴボウ抜いた特性。ほとんど動かない横一線。2bitDSMよりも3bitDSMにした方が良い感じになった。ほんの少しは上がって来るけれど、鞭を入れた時に十馬身差でぶっちぎるのがこれ。

f:id:xx3stksm:20190528221301j:plain

そしてやっぱり驚きの高性能なmade in e-BAY。両面基板でこの特性は驚き。同じチップを使っていても、グランドプレーンがしっかり入っていないものは、まるでダメと思う。物理法則は依怙贔屓しないので、やる事やれば結果は出る。やることしないと、どんなにデカいトランス積み込んでもボロボロのふらふらになる。

f:id:xx3stksm:20190528221703j:plain

最後にpcm1792。1.5kHzの高調波は、Lchの750Hzから漏れてきている。チップ内部なのか、外の部品その他なのかは分からない。チップ内部でないかと思う。これはLとRの特性差もかなりあって、どうもモノリシックの避けられない弱点。デジタルしかないメモリーであれば、スレシを超えない限りこんな漏洩は存在しないので、チップは小さければ小さい方が有利。

 

アナログデシタル混在の場合、アナログとデシタルの分離はとても難しくなると思う。小ささが徒となる。電源も3.3Vしか使えないので不利。そしてPCMが良く設計されたDSMには本質的に敵わないように、DACでもモノリシックはデイスクリートに敵わないのでは。最善の方法論は、デジタル部分をFPGAで作り、最小限のアナログのみを別個に用意するディスクリート方式になる。

 

デジタル回路を含まないpcm1704や更にその前のチップがまだまだ現役でいられる理由の一つは、そんな最近のモノリシックの本質的な弱点に由来するかもね。古いチップの場合、ノイズフロアは更に悪いけれど、悪すぎて変動の余地はないので高止まりになっているはず。変動しないのであれば、レコードのノイズ的に適当に脳内処理される可能性は高い。中途半端にフラフラする傾向のDSMは、外れた時には最悪になる可能性は高い。

 

ノイズフロアの変動を基準に考えるならば、PCMやDSMの違いとか、どうしてDSDは独特の空気感があるのかにも答は出る。1bitDSM(DSD)は、方式として一番ノイズフロアの変動を抑えられる。ChordやPS audioの成功例が裏付けるように。自作派にとってもそれは同じで、デイスクリートのマルチビットは蒸気機関車と大差ないとしても、デイスクリートDSMは究極のDACとなり得る。

 

made in e-BAYのお手軽路線は、例によってどこかに落とし穴がぽかっと空いているだろうからパス。ひとまず3bitDSMで十分な性能は確保できたけど、更に一押しのFPGAトランジスタだけの1bitDSMというのも魅力的。アナログのFIRという既に失効した特許があって、これは魔法のように1bitDSMを多ビット化して、THDを悪化させずにSNを上げていく。うちの3bitDSMでも使っている。

 

これを使うならば、今よりも10dBぐらいSNを上げて、更に横一線のノイズフロアになる可能性は高い。1bitDSMはちょっと敬遠してたけど、時は今なのかもしれないと感じる五月。

リンギング(プリエコー)と言う虚仮にコケちゃわないように。

 今時のDACには必ず入っているオーバーサンプリングフィルターは、何故それが入っているかの理由に誤解があるし、その特性に関してもリンギング(プリエコー)

という謂れのない汚名を着せられている。たぶんデジタル嫌いの昭和前半の世代が、アンプの発振に似ている波形からそんな事を言い出したんだと思う。デジタルは数字の世界なので、リンギングというような感覚的表現は相応しくない。

 

 人の耳はほぼ100%FFTと同じ反応をするので、位相情報に意味はなくて振幅のみに反応する。例えばレコードからのリッピングデータを、スクラッチノイズ他を取って綺麗に仕上げる場合、時間軸の波形とかFFTでの位相は音質に全く影響しない。振幅情報を変えるのみで、信じられない程の音質に生まれ変わる。

 

f:id:xx3stksm:20190505185901j:plain

 この図の上の波形(L)は普通方形波と言うけれど、正確には三種類の正弦波の合成という意味しかない。何故かと言うと、見た所全く別物の下の波形(R)と上の波形は同じ音にしか聞こえない。両者は同じFFT結果なので、聞こえる音も同じという理屈。LとRは同じなので、FFTでは重なって見える。FFTを見ない限り、二つが同じ音とは想像すらできない。でも同じ。基本波の位相が45度違うだけ。

f:id:xx3stksm:20190505190720j:plain

これの上は典型的なリンギングと言われる波形。でも同じ音の下の波形をリンギングとは多分言わない。これもやっぱり、物理的には三種類の正弦波の合成と言う他仕方がない。たまたま上だけをリンギングと言ってしまうと、感覚的ではあるけれど、本質からは外れてしまうし、物事は解決しない。数字の世界のデジタルにリンギングと言う文学的表現は的外れ。文学に数式が登場しないように。

 

帯域制限していない違法な方形波を線形位相のFIRフィルターに通すと、マネーロンダリングのように違法部分をこそげ落とすので、合法に帯域制限された成分だけが残る。この場合だと、違法な6kHzの方形波が合法化されると、上のような三種類の正弦波だけが残る(40kHzぐらいのカットオフ)。波打っている事には、音として何の意味もない。違法な帯域を合法化すると、些か目立つとしても実害はない。実害があるのは、違法な振幅の場合。

f:id:xx3stksm:20190505192116j:plain

この6kHzの正弦波は、デジタル的に上が合法で下は違法。何故かと言うと、上は-3dBFSなのに下は+0.5dBFSだから。プラスと言うのは、1を超えているという意味で、デジタルではオーバーフローしてしまい表現不能音声編集ソフトは、32bitのフロートなので仮想的にちゃんと表示しているし、これを48kHzの元々のサンプリング周波数で扱う限りは、フロートでなくても扱える。但し、潜在的違法状態。

 

悪事が露見するのは、オーバーサンプリングした時。大抵のDACでは不都合が起きる。Inter Sample Peakとかトゥルーピーク と呼ばれる現象。違法帯域は、現実の音楽信号には存在しないし、あったとしても実害はない。違法振幅はほぼ全てのCDに存在して、悪事露見は程度の差はあるとしても音質劣化になる。数字的には、どえりゃーな変化となる。どうしてリンギングと言う虚仮に拘って、トゥルーピークというオーバーフローを無視するのかは不明。

 

副産物的事実として、このオーバーフローに対応しているDACは存在するし、中々評判が良いらしい。特にCD再生では。ベンチマークのDAC3であるとか、たぶんChordのような独自に1bitDSMで再生しているような機器(PSaudioというのもたぶんそう)。これまた謎だけど、ESSとかAKは、最小位相フィルターとかいうのは付けているのに、オーバーフローしないフィルターには無関心。DAC3はESSだけど、外部で補正している。

 

1bitDSM(DSD)は、構造的に振幅の制限が必ず必要になるので、アホな所に入れていないのであれば、自動的にオーバーフローはしなくなる。DAC3はかなり詳しく説明している。

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

英語だけど、グーグルの翻訳でそこそこは分かる。ロシア語だったとしても、半分は。

 

スティーリー・ダンの「two against nature」は2000年ぐらいのリリースなのに、1秒で3.7回もイッちゃうらしい。今の海苔全盛のソースならば、もっとイキまくってるはず。こういうのを聞いている人にとって、DAC3は福音になる。先の6kHzを4倍にオーバーサンプリングすると、32bit-floatならば正しく変換される。こんな按配。

f:id:xx3stksm:20190505194516j:plain

サンプリングの白い点が4倍になって、下の波形では1以上が隠れているけれどちゃんとした値になっているので、正しい。750Hz毎のスペクトルは、周波数特性を確認するため。でも現実のDACの出力は、大抵の場合は1でクリップするのでこんなんになる。

f:id:xx3stksm:20190505194838j:plain

 

上は元々が-3dBFSで合法振幅なので、問題はない。下はメチャクソ。オーバーサンプリングフィルターには何の落ち度もない。振幅が違法(+0.5dBFS)なのでこうなってしまう。pcm179xだと、実際にこんなになる。これは最大値の+3dBFSを入れているので、更にメチャクソしてる。下の青。上の黄は-3dBFSの合法振幅。

f:id:xx3stksm:20190505195244j:plain

+0.5dBFSの場合でも、1%を少し超える程度の歪が出てしまう。救いは、元が3kHzになると、もう出ないかと思う。+3dBになるのは12kHzの時で、+0.5dBが6kHZの時。なのでこれより少し低い周波数になると、もうでない筈。CDの44.1kHzだと少しだけ条件は厳しいが。DAC3の評価の高さは、数字的にも裏付けできる。

 

この問題の解決方法は、幾つかある。その一は、海苔音源を使わない事。違法な振幅は、普通に音声編集するならば発生しない。例えば、レコードからの自録り。これが一番まとも。その二は、所謂NOS。オーバーサンプリングしないならば、如何なる海苔音源であろうとも発生しない。NOS命の人は、オーバーサンプリングでコケるのが嫌なのかも。こけちゃいました!、ってのは昭和だったか平成だったか。

 

その三がDAC3とか、Chordの1bitDSM。ここまでが、NOSはケモノ道であるけれども、ひとまずは正統派の解決法。その四は、ソフトでのアップサンプリング。例えば、RX4には、post-limiterというオプションがある。これはさっきのクリップを防いでくれる。これを使うと、こんなんになる。

f:id:xx3stksm:20190505201252j:plain

およよっ、という感じ。下の方も少なくともクリップはしなくなる。周波数特性は少し暴れるようだけど、室内の特性と似たようなもんなので許容範囲か。何もしないのよりは、ずっと良い。こそっと隠れているようなオプションなのに、秘めた補正能力は高い。どんなアルゴリズム使ってるんだろか。RX4凄い。拍手拍手。

 

そこで、うちにある僅かばかりの音楽CDで少し海苔しているのを、RX4のpost-limiterで四倍にアップサンプリングするとこうなった。

f:id:xx3stksm:20190505201814j:plain

上のLがpost-limiterなしで、大抵のDACだとこうなってしまう。下のRがpost-limiterあり。22kHz以下の周波数特性がフラットなのかどうかは分からない。大量に出てしまう高調波が抑えられている感じ。勿論、クリップはしなくなる。ソフトでアップサンプリングしたファイルの再生の方が良い音、と言っている人は時々いる。海苔のCDであれば、ソフト次第でその可能性は十分にある。まぁ、海苔波形が全ての根源であって、その尻拭いさせられているって話だけど。

 

そして上海雑技団というのかユジャ・ワンの超絶技巧と言うのか、ここで打ち止めと思ったら、その五というのもなくはないとつい最近分かった。その五はハードウエアのみでの展開だから、ソフトでの実装は不可。世の中は思っているよりも狭い。デジタルの世界も。

 

違法帯域の方形波をロンダリングしつつ、最初に出したリンギングしない方形波に変えるリンギングレスフィルター(それ自体は無意味)と言うのも、実は少しばかり周波数特性を変える事でオーバーフローは起こさないのだと分かった。その四のRX4に近い。オーバーフローしない事と、周波数特性を変える事は等価で、これが足枷と言うか或いは利点。それ故リンギングレスフィルターは、煉瓦塀のような特性には決してならない。

 

つまり、リンギングしない方形波を出せる事に意味はないけれど、リンギングレスフィルターはオーバーフローしないという点で、利用価値がある不思議な特性という結論。RX4のpost-limiterが少しばかり周波数特性を変えるように、何度か出しているリンギングレスフィルターも少しばかり高い方がだらだらと落ちる。ひとまず20kHzで3dB程度は。でも致命的なオーバーフローは起こさない。高域を落とす事でオーバーフローを抑える結果になっている。これはその五の方法だから、詳細もその後。

 

 

 

 

 

 

 

 

煉瓦塀はプリエコーの夢を見るか。

デジタルのシステムは、完全に帯域制限されているのが前提なので、96kHzのサンプリングならば扱えるのは48kHzまでとなっている。さはさりながら、盲点というのか例外がなくはない。ADCで例えばレコードからリッピングする場合、96kHzサンプリングならばADCの責任で確実な48kHzまでの帯域制限が必要。でもしなかったとしても、少し折り返しノイズが発生するのみで、出てきたデジタルデータで意味のあるのが48kHzまでとなるだけ。

 

このデジタルデータをDACでアナログに戻すと、何もLPFを入れないならば無限にイメージが繰り返される。所謂、NOS。なので元のデータは48kHzまでなのに、出てきたアナログは無限に高い周波数まで含むことになる。イメージは元の48kHzまでのコピーだから意味はないけれど、高い周波数が出てしまうのは事実。なので、普通はオーバーサンプリングしたreconstruction filter というので、ある程度はデジタル的にこれを取っている。

 

DACのreconstruction filterはその意味合いが少し誤解されているけれど、ADCからDACという流れの中ではそんなに問題の種はない。問題があるのは、DACを単体で考えてしまう場合。この時は、知らず知らずのうちに大前提の帯域制限を見落としてしまう。結果として、見果てぬ夢というのか錬金術というのか、答のない問いの迷路にはまり込む。それがreconstruction filterのリンギング(プリとかポストのエコー)問題。

 

これには意味がない。方形波にしろインパルスにしろ、無限の周波数を含む信号は、帯域制限されたデジタルのシステムで完全に再生する事は出来ない。勿論、アナログのシステムでも。どちらも無限の帯域は持たないのだから。その矛盾の現れ方が少し違うとしても。そんなラビリンスに迷い込むのは、DAC単体であればそんな信号を作れてしまうから。例えば6kHzの方形波を、Wave Genで384kHzサンプリングで作るとこうなる。高い周波数まで見るために384kHzサンプリング。

 

f:id:xx3stksm:20190405200843j:plain

上の段が元の方形波でFFTでは白。波形の小さな白い点が実際のデジタルデータなので、良く見ると-70%と+70%の二点しかないのが分かる。白い点をつなぐ曲線は、理想的なLPFを経由したらこうなるよ、という推定。つまりは実際の384kHzサンプリングでの方形波。多くの波形発生ソフトでは、方形波は二値しかもたない。96kHzサンプリングでも同じ。という事は、これは384kHzサンプリングなのに、その含む信号帯域は無限という変な話になってしまう。FFTでは表示不可なので192kHzまでしか出ていないけれど、無限の帯域であることは自明。

 

下の段は96kHzサンプリングを想定して、カットオフが47kHzのbrick-wall(煉瓦塀特性)で48kHzまでに帯域制限したもの。ギブス現象で、当然ながら振動する。周波数が高いのでリンギングというよりもリッブルが出ているように見える。所謂プリとポストのエコー。これが嫌われているけれど、帯域制限されるデジタルシステムではこうなるしかなくて、煉瓦塀フィルターには何の責任もない。

 

この場合はおそらく120db/octを遥かに超える肩特性だと思う。アナログでも24db/octにすると、OPアンプのLPFでこんな感じになる。アナログでは直線位相は無理だし、肩特性も緩いのでこの程度のリンギングになっているだけ。

 

f:id:xx3stksm:20190405202315j:plain

この煉瓦塀のデジタルフィルターに不満な人は、おそらくリンギングしない波形を欲しがっている。それは帯域制限されている筈のデジタルのデータが、ちゃんと表示されないので不満。でも問題は、帯域制限されていない信号をDACに入れている所にある。

 

煉瓦塀に何の落ち度もないのは、ちゃんと帯域制限されている信号を入れれば明白。こんなの。少しなまっている方形波。これは見ての通り、最大でも30kHzまでの信号しか含まない。上の段をさっきと同じ煉瓦塀のフィルターに通したのが下の段。当然ながら、上と下は完全に同じになる。47kHzまでが通過帯域で直線位相なので、30kHzまでならば、入力と出力は同じになる。

f:id:xx3stksm:20190405203234j:plain

同じ煉瓦塀でも、リンギングする時としない時がある。するのは、適切に帯域制限されていない場合。しないのは、適切に帯域制限されている場合。ADCからのデジタルデータは、折り返しノイズはあるとしても帯域制限されているので、DACの煉瓦塀に拘わらず直線位相ならばDAC側ではリンギングしない。ADC側で既にしている時は、勿論どうしようもなくて、そのまま出る。

 

リンギングの有無は、帯域制限の方法論で決まる類の問題なので、基本的に帯域制限の埒外にあるDAC側では手の打ちようがない。考えても無駄。波形発生ソフトで方形波を作った時は、例外としてDAC側で帯域制限をする羽目になるのでリンギング問題が出て来る。

 

因みに、リンギングというのは何かを足しているのではなくて引き算しているから発生する。これは簡単に確かめられる。最初の図の下の段の、リンギングしている波形をもう一度同じ煉瓦塀に通すとどうなるか。何かを足しているのならば最初の時のように入力と出力は違う波形になるのだが、これはもう何も変化しない。

 

理由は単純。最初の時は、無限の帯域の信号が入力なので帯域制限した出力との間には当然違いがある。一度帯域制限されると、もう45kHzまでしか含まないので、二回目に47kHzの帯域制限をしても結果は同じ。入力=出力、となる。三回目とか四回目でも、もう変化はない。引き算をしているだけなのだから。アナログならば、通すたびに変化するけれど。

 

煉瓦塀フィルターは、直線位相ならば基本的にリンギングしない。 運悪く帯域制限する羽目になった時にだけ、不本意ながらリンギングする。音楽再生用のDACで、帯域制限は本来ADCの役割なので、リンギング問題はDACの関与できない領域にある。考えても仕方ない。直線位相であれば良し、という程度の話。

 

なのでリンギングに関しては、DACではなくてADCのdecimation filterの問題という事になる。DAC側は、直線位相であればADCのデータを流すだけになり、リンギングには関知しない。ADCのdecimation filterはリンギングレスに出来るのか否かが、答の存在する正しい問い。市販の音楽ファイルを使う場合、この時点でもう対応は不可となる。

 

うちのファイルは、ほぼ全てがレコードからのリッピング。今風の再生装置に合わせたマスタリングには到底耐えられないし、聞くのはせいぜい70年代までのレコード時代の音源なので、これは可能。80年代に入ると、所謂マルチマイクでオーディオ的な高音質思考になって、聞いて楽しい音ではなくなる。美形かもしれないが無機的でつまらん音になるので興味ない。死んだ音。

 

ADCのdecimation filterは、DACのreconstruction filterと似ているけれど、やはり微妙に違う。前者は完全な帯域制限の元にある。後者は違う。後者では完全なリンギングレスが可能で、実際にFPGAに実装している。前者ではもう少し条件が厳しくなるけれど、不可能ではない。リンギングしない事に本質的な意味合いは何もなくて、唯見た目だけでもあるけど。

f:id:xx3stksm:20190405213858j:plain

ADCの場合、DSMではなくてSARを使う。SARはADCのマルチビット型のようなもので、自分でdecimation filterを作れる。というか、オーディオ用ならばほとんど自分で作るしかない。それはこの場合、最大の利点となる。DSMでリンギングレスは無理と思う。紫のringingless_AはDACで使っているのと同じもの。但し、折り返しノイズをなくすためには192kHzのサンプリングにするしか手はない。特性自体はどれも移動平均由来なので、リンギングはしない。こんなインパルス応答。

f:id:xx3stksm:20190405222017j:plain

タップ長は256でも収まる程度。サンプリング周波数は高いけど。一応21kHzでのレベルを-3dBとして、折り返しノイズをそこそこ抑えられる特性が必要。そこそこと言うのは、音楽信号用でレコードからのデータだから、30kHzを超えるような成分はないであろうよ、と言う意味。赤枠の所が21kHzなので、まあそこそこ。

 

96kHzサンプリングに拘るならば、赤のringingless_Bが良さそう。青枠の所が30kHzの折り返しになるけれど、40dB近い減衰で66kHzはもう埒外だから無視できそう。21kHzの折り返しの緑枠は、もちろん更にゼロに近くなる。なので音楽用としてはこれで問題ないと思う。数字的な辻褄と言うのか見た目の美観と言うのか、仮に入力に6kHzの方形波が来たとすると、多分こんな出力になる。実装していないので確実ではない。大きな間違いはない筈。青の波形。

 

f:id:xx3stksm:20190405215433j:plain

少し波打つ理由は、赤の場合は96kHzぐらいまでの信号で成り立っているのに、96kHzサンプリングに落とした段階で48kHzまでに制約されるから。ADC自体は4MHzぐらいのサンプリングをしている。これがDACとは少し違う部分で、ちょっと難しくなる。完全にリンギングを消すのであれば、192kHzサンプリングしか手はないと思う。

 

その場合は紫のringingless_Aを使う。これは96kHz以上はゼロとみなせるので、 192kHzサンプリングで96kHzの帯域制限をしても元と同じ状態を再現できる。21kHzまでの再生のために192kHzサンプリングは何ともアレだけど。煉瓦塀特性というものは、出来るだけデータ量を減らすためにある。同じ特性は、煉瓦塀でなら48kHzサンプリングで可能であって、21kHzのレベルも0dBに出来る。

 

それでも何故リンギングレスに拘るかと言うのは、自然界にリンギングは存在しないから。普段聞いている音はリンギングしない。それは主に空気によるLPFは煉瓦塀のような急峻なものではなくて、ゆったりだから。ならばデジタル化の時もそんな特性が好ましいのではないかと言う話。それが結局はリンギングレスという所に落ち着く。ちょっとさすがに192kHzサンプリングは無しかなあ、と思うけど。技術論としてはどうやら必要。