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

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

そろそろ詰めの1bitDSM。はるばる来ぬる 旅をしぞ思う。

 ディスクリートの1bitDSMは、初めの基板からほぼ二年が過ぎた。ちょっと長いけれど、ディスクリートものは、まず原野の木を切って道を作りそれから橋を架けてと言う按配なので、時間がかかる。ものにならない可能性も高い。四度目の基板で完成になったのも、まずは妥当。普通の基板でも二回は作るのだから、五度目がなかったのは寧ろ幸運。

 

 D90を偶々シングルズデーでポチッたので、ADCも随分と良くなった。最終的には、APのように内部的にはTHD用とSNR用の二種類を用意して、出力は両方の良いとこ取りにして出すように作り直す必要がある。HDMI-IISとか、DSMの信号も出せるように等もして。今はRX7でADCの残留ノイズを補正した信号にして出すしかない。これでひとまずは、THDとSNRがaudio-testerで直読できる。こんな感じ。

f:id:xx3stksm:20210306213441j:plain

 四次のDSMで、OSRは160。7.675MHzでのスイッチング。三次にしてOSRを320にも出来るけれど、さすがにHWがついてこれなくて理論値からの乖離が大きい。現実的には、4th-orderの 160OSRが今の最適値。将来的には、三次も不可能ではないけれど。今回は特性が良くなってきたので、デジタル領域の理想値との比較。山よりデカい猪はいない訳で、デジタル領域の数字からの劣化具合でスイッチングの良し悪しを測れる。

 

 デジタル領域の数字は、単純にアナログ回路に送っている1bitDSMの信号を、FIRフィルターで24bit/96kHzに落としてPCに送り、FFTすれば良し。上のFFTの青は、ADCの出力を残留ノイズの分だけRX7で補正したもの。赤は、1bitDSMを24bit/96kHzに落として、spdifでPCに送ったデータのFFT。完全にデジタル領域なので、DSM単体の性能。本来は32bitなので、24bitになった所での劣化は考えられる。

f:id:xx3stksm:20210306214339j:plain

 24bit/96kHzに落とすデシメーションフィルターというのは、4096tapのFIR。160OSRの時は、7.675MHzから96kHzなので、4096tapではちょっと厳しい。本来は二段階にして、まずは384kHzぐらいにしてから、その後に96kHzというのが王道ではある。でも一段で何とかなった様なので手抜きのまま。こんな特性。7.675MHzと3.8375MHz。当然ながら、3.8375MHzだと、一段でも問題ないような特性になっている。

 

f:id:xx3stksm:20210306215313j:plain

 FPGAを簡単に使えるようになったのは、たぶん1990年代から。Xilinxよりも前にベル研のオルカが魁だったかと思う。その前はFPのつかない、ただのGAだったから、仕様変更なんてほぼ不可能。人間辞めないと、まともに動作するような状態にはならなかった。人間やめますかそれとも覚醒剤やめますか、なんてCMが当時はあって、ワシは人間やめますかそれともGAやめますか、やなぁと思ってた。今のように、追加でちょろっと4096tapのFIRが入れられる環境にあると、もう30年は昔の事を思い出して遠い目。

 

 ともあれ、FPGAさえ基板に実装しておけば、錦の御旗。寡を以て多を討つのは容易。デジタル領域でのDSM量子化ノイズは、NTFを計算すればSIM出来る。しかしこれは、量子化が1bitなのか2bitなのかという関数が入っていないので、本当の数字は実物にデシメーションフィルターを入れて測るしか手はない。そのためには4096tapぐらいのFIRが必須。DSPのようなのでDSMを作っていると、FPGAのような小回りは効かないので簡単ではないと思う。

 

 FPGAであれば、spartan6であってもxc6slx25程度で、簡単に追加できる。昔、8bitCPUの頃は、アクセスエリアが64kぐらいしかなくて、如何にしてSWも効率的にしてプログラムサイズを減らすかが、現実問題として大きな分かれ目。トランペット吹きが誰が一番高い音を出すかを競ったように、腕の見せ所だった。それはもう過去の遺物で誰もそんな事はしない。ただ一つ残ったのがFPGA

 

 主に、掛け算器、メモリー、そして高速の足し算器。この数に限りのある資源を、如何にして効率的に使い切るかは今でもキモ、だったかな。数年前からvivadoになって高位合成とか言い始めたので、表向きはそういう技も影をひそめた。しかしやっぱり、既に実装されてしまっているFPGAを上手く使えばデシメーションフィルターが入るのか、そんなの無理でーすと、へらへらされるのでは大違い。

 

 FIRのモジュールは、IPという形でおそらくXilinxから供給されている筈で、金に糸目を付けないのであれば有料で手に入る。ベラボーに効率悪いと思うけど。vivadoで作るのだから。DSMのモジュールともなれば、あったとしてもさらに効率悪くて到底使い物にならないと思う。自作するしかない。FPGAというのは金の卵ではなくて、その金の卵をじゃかすか産み落とす親鶏の方。金の卵は要らない、親鶏さえ確保すれば。 

 

 上のアナログとデシタルの比較では、SNRは20kHz帯域で14dBぐらいの差。32bitでデータを送れるならば、もう少し差が出るかも。アナログ領域での制約は、基準電圧やスイッチングの理想度と熱雑音。今の回路定数だと熱雑音はほぼ無視できるので、基準電圧からの制約は135dBぐらいかなと思う。実際、スイッチングを止めてしまうとその位の数字だったはず。デジタル側は10kHzの少し上ぐらいから量子化ノイズが上がるので、ほぼ同じぐらい。アナログも、けっこう頑張ってる。

 

 入力をゼロ(0x0)にするとこうなる。SACDDSMの初期なので、あんまり変調の効率が良くない。特定のアイドルパターンが出る。帯域外ノイズも大きい。64OSRに収める必要があるので仕方ない事ではあるが、あんまり好ましくない。無信号の時、アナログはレベルが-126.39dBFSになってる。これは999Hz入力の時、信号が-6.15dBFSでSNRが-120.2dBFSなので、ノイズレベルは-6.15+(-120.2)=-126.35dBFS、というのとほぼ同じ。残留ノイズは信号レベルに依存しないという事で良好。

f:id:xx3stksm:20210306223844j:plain

 四次で帯域外ノイズは少ないから、0.1Vrms(100dBμ)でも少し痕跡が見える程度。SACDだと、このレベルでは相当に乱れる。低めの次数にするのはSNRが稼げるのと帯域外ノイズが減るので。140kHz周期ぐらいでノッチが入るのは、アナログFIRの特徴。7.675MHzをtap数の56で割った周波数毎。サンプリング周波数が下がると、ノッチの位置も下がる。CもLもなしで、音声帯域でのノッチも可能になる。

 

f:id:xx3stksm:20210306224740p:plain

   

八次にすると64OSRでも使えるのだが、四次と比べるとこんな感じになる。アナログ領域でのSNRは最大振幅が小さくなるので不利。THDはスイッチング速度が遅いので有利にはなる。総合的には帯域外ノイズの問題もあるので不採用。低域側でのノイズフロアの上昇は、さて何に起因するのか。ローカルNFBとの関係かも。

f:id:xx3stksm:20210307134925j:plain

 

 スイッチング速度を落としてTHDを測定器並みにしたいのであれば、五次で80OSRが最適。最大振幅が四次よりも0.7dBぐらい下がるので、SNRは不利。THDは-130dB近くになる。1bitDSMの凄味は、こんな数字が完全な再現性を持っている所。電源を入れて五分ぐらい待てば、熱的に平衡するのでほぼこの状態に戻る。130±1dBぐらいには。ディスクリートでこの数字は驚き。 

f:id:xx3stksm:20210306230445j:plain

 

 実際の問題として、-130dBの歪に意味はない。スピーカーは良くても-60dBぐらいだし、マイクだってそんなもの。再現性の高さにしか意味はない。-110dBぐらいの歪ならば、何もしなくてもその位の数字にはなるので、再現性の確認には使えない。いつもいつも同じ状態になるのは、複数のDACを使うマルチでは必須の条件。-130dBが保証できるのであれば、間違いなくHWとして超優良。

 

 五次の場合、帯域外ノイズは少し増える。SACDよりは遥かに小さい。ローカルNFBを工夫して、80OSRを五次で使えるようになったので、これは実用になる。実際に使うのは、四次の160OSRだろうけど。サンプリング周波数が四次の半分なので、ノッチの周期が狭くなる。

f:id:xx3stksm:20210306231300p:plain

 ADCが良くなって調整がうまくできるようになった。今まで四台を作って、ほぼ皆が同じような特性。というか、そうなるように調整できるようになった。デジタル的なデータだから、一度見つかればもうそれっきり。ほぼ永遠にそのまま。再調整の必要はない。今のDACは3bitとはいえマルチビットなので、再調整の必要がある。ズレは小さいので、再調整なんかしてない。ディスクリートのマルチビットの性ね。

 

 別の基板はこんな感じ。今の所、これが一番良いのかも。粘って調整するならば、他のもこのぐらいになるとは思うけど。後は、Rch用の基板をそろそろ作らねば。

 

f:id:xx3stksm:20210307134717j:plain

f:id:xx3stksm:20210307134738j:plain




 

その後のD90。HDMI-IISとかDSDとか入れる羽目に。

D90をポチッたので、これを基準にしてADCの校正をする。前回よりもかなり良くなった。AD7768はドライバー次第でSFDRが-130dBぐらいまでは行く。ADA4896-2が良さそうで、EVboardもこれを使っている。ただどうも被測定側の出力抵抗が大きいとダメ。せいぜい100Ωぐらいまで。バイアス電流が11μと、typoかと思う値なのが関係しているのかも。

https://www.analog.com/media/en/technical-documentation/application-notes/AN-1384.pdf

 

その辺りを改善したらそこそこ。refをデータシートのように4Vまで下げると、-1dBFSでも劣化しないかと思う。今は5Vで使うしかないので、-3dBFSぐらいが限界値。SNRはこの設定では不正確になるので無視。正確にはASRの数字のように121dBぐらい。これでは二次の歪はほとんど消えている。最近分かったけど、二次は比較的消しやすい。おそらくそんな処理をしているのだと思う。

f:id:xx3stksm:20210109205028j:plain

ADCが良くなったので色々とUSBでの出力を調べていたら、幾つかの問題があるのだと分かった。まずは恐らくは手抜きの結果として、OSRは8で固定になっている。帯域外を見ると、PCMかいなという按配。fs=48kHzの時に、最初のイメージが384kHzの所に出る。fs=96kHzの時だと、786kHz。要するに8倍のOSR。

f:id:xx3stksm:20210109205507j:plain

AKM4499はマルチビットなので、8倍程度のOSRでも帯域内の歪は問題ない。だからこれでも可。多分、fs=768kHzの時は6.144MHzになるから、ここを基準にして全てを合わせたんだと思う。特に問題にはならないが少し変。100kHz辺りのスペクトルは、SMPSのノイズと思う。拡大するとこれ。fsに依存せず常に出ている。120dBμV=1Vrmsなので、あぁ出てますねぐらいの意味。

f:id:xx3stksm:20210109210104j:plain

ついでにDSM自体の残留ノイズはこのぐらい。1MHz辺りに20dBμV。マルチビットだけあってとても小さい。

f:id:xx3stksm:20210109210342j:plain

ちょっと驚きだったのが、USBのジッタ特性。USBはほとんど使わなくて、うちにあるXmosの出力のクロックは完全な線一本の理想的特性だったから、当然USBは皆こうだろうと思ってた。ところが信じられない事に、100Hz以下でもハッキリとクロックジッタによる影響がある。

f:id:xx3stksm:20210109210720j:plain

ジッタでの所謂フェイズノイズは周波数に比例する。見事に比例している。rectangularでは見られないので幾分不正確は仕方ないけど、比例関係は分かる。これから20kHzでの予想値はだいたい-63dB。実測値とは、当然ながらほぼ一致。そういう劣化のないI2S(青)と比べると、かなりスカートが広がる。アナログに比べるならば無視出きるけれど、Xmosならばこうはならないのでお粗末。 

f:id:xx3stksm:20210109211537j:plain

 

I2Sは同期サンプリングが出来るのでrectangularに出来る。正確にbinの解像度で見れる。これが本来の数字。SPDIFでも、ノイズフロアーは上がるけれど、スカートの広がりはない。ジッタの質が違う。ESSのようにASRCを入れるのは賢い。ただマルチのように複数台の場合はちょっと使えない。IISしか手はない。

f:id:xx3stksm:20210109211810j:plain

バルク転送かアイソクロノスでもASYNCにすればFIFOが入るので、こんなジッタは出したくても作れない。一個¥100のクリスタルでも線一本。FIFOが入っていないならば、ドライバー変えても無理。どうなってるかは分からんが、HWとしてFIFOが入っているならばSWでそれを外す事はまずない。嫌でも入ってしまうもの。なのでこれは修復不能かなと思う。

 

大勢に影響はないけれど、XmosのIISにLVDSの変換基板をかましHDMI-IISに入れる、というのが最善の方法。かなり面倒。120dB超えるSNRと-130dB近いTHDというのは、ポン置きというのかポンつなぎで出る数字ではない。些かの手間は必要。物理現象とはそういうもの。最近のDACにはHDMI-IIS付きが多い。ここから入れないと、まともな測定が出来ないという要素もあるのでしょう。

 

というような事で、仕方なくADCに空中配線でHDMIのコネクターを付けて、HDMI-IISに入れたのがこれ。上のIISもそれを使っている。少しTHDの値が違うのは誤差。このぐらいはずれる。もちろん、ここでの数字はUSBと同じ。見えない所では違う。

f:id:xx3stksm:20210109213204j:plain

 

毒を食らわば皿までという訳で、DSDも試す。HDMI-IISは、DSDにも対応している。但し、ADCにはDSMの回路までは入らないので、1bitDSMの基板を流用して入れる。この基板は外部同期で動くので、DSDも同期サンプリングが出来る。

 

f:id:xx3stksm:20210109213723j:plain

ちょっと誤算だったのは、AKM4499自体は48k系にも対応している筈なんだが、D90は受け付けない模様。44k系の2.8MHzとかの倍数のみだった。DSDはそっち系なので、まあ仕方ないのかも。その余波で1kHzは918Hzとかになってしまう。まぁ、これまた大勢に影響なし。AKM4499のDSDの実測例はあまりないと思うので、そこそこレアもん。

まずは2.8MHzのDSD64。

f:id:xx3stksm:20210109214413j:plain

これはDSD64なので、8次ぐらいにしないと音声帯域に量子化ノイズがこぼれてくる。そして44k系なのでADCも96kHzのSPDIFは出せなくて44.1kHz。88.2kHzも可能だが普通のPCは受けてくれないので仕方ない。音声帯域の特性は、予想外に良い。マルチビットのチップなので、DSDはオマケと思ってた。SNRも少し落ちるだろうと。SNRとTHDはほとんどPCMのマルチビットの時と変わらない。とても意外。やっぱし二次歪はほとんどない。

 

帯域外のノイズはDSD64なので、かなり多め。当然ながらSACDと同じぐらい。帯域外の影響がどれほどのものかは分からないが、SACDのように媒体での制約がある場合を除き、DSD64の必要性はないと思う。本来は11kHzぐらいの正弦波。DSDフィルターは65kのほう。

f:id:xx3stksm:20210109215123j:plain

 

少し実用的になってくるDSD128。もう8次の必要はないので6次。特性的にはDSD64とほぼ同じ。SNRも120dBはありそう。

f:id:xx3stksm:20210109215349j:plain

帯域外のノイズ。見た目でかなり高周波のノイズが減っている。FFTからしても然り。

f:id:xx3stksm:20210109215431j:plain

 

最後にDSD256。こちらは更に次数を減らして四次。スピーチとスカートは短いほど良いとしても、山高ければ貴からずで、DSMの次数も大きければ良しではない。帯域内と帯域外との相関で決まる。OSRが上がると帯域内への漏れは減るので、無意味な次数は必要ない。小さ目が良し。ほんの少しSNRは悪化していると思う。目見当で118dBぐらい。

f:id:xx3stksm:20210109215634j:plain

いずれはAPのようにTHD用とSNR用を同時に使い、SWで合成して両方を同時に見られるようにしたいが、たかだか二万程度の今のADCでの両立は無理。SNR用まではHDMIの対応が出来ないので、目視での推測。でもまあ、DSD256でここまでの特性が出ているとは驚き。ほんの少し高域での草が増えるだけ。火事で燃えたのは残念。多分、復活はもう無理だろうから。

 

帯域外ノイズ。このぐらいの信号レベルだと(107dBμV)、もう分からないぐらいまで小さくなる。勿論、帯域内の漏れはない。ピークで35dBμVぐらいだから、マルチビットの20dBμVと比べてもそこそこ。

f:id:xx3stksm:20210109220438j:plain

 

20kHzでのジッタ特性。IISより少し悪めに見えるのは、連続性の問題と思う。rectangularだから連続性は信号の側で確保する必要がある。原理的な問題として、1bitDSMでは厳密な意味での連続性は確保できない。その違いかなあ。クロック自体はIISと同じ精度で入る。超こまかい話としては、1bitDSMの限界。或いはFFTの特性上の問題。

f:id:xx3stksm:20210109220826j:plain

結論として、D90のUSBは厳密にはジッタが多い。多分製造元も知らない。ASRの測定も、ジッタ特性というのは全く意味不明のデータを出している。あれで何が分かるのか全く分からない。SPDIFであればノイズフロアの上昇として出て来る。D90のUSBは俗に言うフェイズノイズの増加という形になっているが、ジッタ由来のノイズかその他のノイズかの判別はそもそもできない。

 

周波数依存がはっきりしていれば、間違いなくクロックジッタであるけれど、ノイズフロアの上昇が何の原因によるかの追跡はほとんど不可能。32toneのような信号を入れた時、周波数依存してしまうDACは多いかもと思う。FIFOなしだときっとそうなる。でもそこまでは設計者だって手が回らない。SPDIF、USB、IISブルートゥースと色々あって、更に周波数も色々でDSDとかも有りとなれば、全部確認なんて出来ないのよね。

 

お客さんはあれもこれもと言って来るから、企画側はあれもこれも入れろと言ってくる。作る側は堪らんぜ。大勢に影響しない所は適当に手抜く。定価で$695な訳だし。こんだけ積み込んだのを作るなんて、ほんと大変。ストレスで頭禿げる年になる前に禿げる。良く頑張っている。中国産のニンニクを買おうとは思わないが、工業製品にはお買い得が結構ある。

 

テレビももうhisenseにした。いずれ日本製は駆逐されるだろうなあと思う。仕方ない。良く出来ているんでないのかな、D90は。本来のDACとしての使い方は無理で、低歪発信器としてだけど、元は取れる。星4.5、ってとこでしょか。

singles dayの$100オフに釣られてポチったD90を測る。

 予定の配送は今年の末位だったので、正月にでも調べようかと思ってたD90が思いの外早く来た。DACとして使うのは心情としても構造としても無理なので、そのために$695はちょい高いと思ってた。マルチのシステムを今の時代にやろうとすると、嫌でも自作になってしまう。メーカーはそんな酔狂人相手では元が取れないので作らない。素人が単独のアンプとかDACをかき集めて作り上げるのは、無理。長所を上回る短所に悩まされる羽目にしかならない。 

 

 作るのが趣味と言う範疇を超えて、自分の目的に合ったシステムを作り上げるしか手はない。試してみて分かったのは、一番のキモはデジタルのX-overで、これを市販のチップで構成するのはこれまた効率が悪く性能も上がらない。120dB/octぐらいの肩特性で切ると世界が変わる。クラシックのオーケストラの各楽器の鮮明度が一気に上がる。試した事のある人はほとんどいないだろうから、所謂個人的感想ではあるけど。D90のような市販品で作り上げるのは無理。

 

 それでもポチったのは、APの測定値はかなりはっきりしているので、うちのADCの校正として使えるし、低歪の発信器にもなるので$100負けてくれるのであれば、もう火事で廃版になってしまうだろうこともあって。中国製なので「指南書」と書かれた日本語も書いてあるマニュアルには、APでの測定結果もついている。ASRの評価なんかは、結構売れ行きに影響しているのでなかろうか。

 

 まずはダッシュボードではなくて、SNRを見た。ほぼ予想通り。

f:id:xx3stksm:20201127201200j:plain

ASRの記事だと、D90はTHD+Nが120dBちょいで、内訳はTHDが-130dBでNが121dBぐらいに見える。

https://www.audiosciencereview.com/forum/index.php?threads/topping-d90-balanced-usb-dac-review.10519/

うちの環境でも、Nはそのぐらい。NはADCの残留ノイズの補正を入れれば大抵は正しい所に落ち着く。但し、THDはこの環境では正確に測れない。ADCの問題ではなくておもにアナログのドライバー段の影響。低域で上がるのはDCカットの影響なのでひとまずは無視。ほぼ無信号の所まで落としても、ノイズフロアはほとんど変化なしで立派なもの。入力はUSBでASIOでもWASAPIでも同じ。96k/24bit。WaveGenから-1dBFSぐらいの信号。多分、ADCの入力抵抗が低めなので少しレベルが落ちていると思う。

f:id:xx3stksm:20201127201841j:plain

 THDはそれ用のADCでこんな具合。

f:id:xx3stksm:20201127202252j:plain

少しレベルを落とさないとなかなか上手くいかない。このぐらいでも本来は-130dBぐらいの数字だと思う。再現性のある状態でそこまでの低歪を測るのは簡単じゃない。たまたまそうなる事は珍しくないが。うちの環境では、このぐらいが限界かと思う。Nはほぼ正確に測れるが、THDは実際よりも少し悪めの数字にしかならないのが現実。まあ、予測の範囲であって-120dBであれば、特に文句なし。

 

 spdifしか出来ないけれど32toneの同期サンプリング。まあ、ケチの付け所なし。

f:id:xx3stksm:20201127221131j:plain

下の方を拡大すると。やっぱり±5Hzぐらいのスカートの広がり。完全な比較はできないが1bitDSMのディスクリート版よりも少し良さそう。これは恐らく1bitの欠点だと思う。原理的にスカートの収まり具合は、マルチビットの方が良くなるだろうなとは思ってた。FFTという測定方法ではそうなるのが自然。始まりと終わりの収束が、1bitはマルチビットに劣るので。問題になる差ではないだろうけど。 

f:id:xx3stksm:20201127221241j:plain

 

 ここまでは予想通り。ASRでの測定値は特別仕様のチャンピオンマシーンではなくて、$100オフで買っても同じ物が来る。デジタルの勝利と言うかモノリシックの勝利。火事だけは想定外であったろうが。ちょっと予想が外れたまず第一は、光入力。最初にこっちを測ったので、暫くは頭をひねった。ドライバー間違えたとか、ASRのは特別仕様とか。SNR用のADCを使っても、USB入力の時と同じノイズフロアにはならない。かなり悪い。

f:id:xx3stksm:20201127203303j:plain

USBの時と同じ環境で、PCからの信号がspdif経由で入るのだけが違い。10dBぐらいは悪いのでなかろうか。このレベルだと補正の必要はほとんどないので、そのまま111.8dBと思って差し支えない。ならばと低いレベルにしてみるとこう。

f:id:xx3stksm:20201127203547j:plain

USBの時は、ほとんど両者でノイズフロアに差がないのだが、spdifだと少しある。こういう違いを出すのは中々難しい。spdifのレシーバーからはI2Sが来るので、こういうアナログ的な違いを出せるのはクロックのジッタぐらいしか考えられない。spdifは昔の規格でPCM時代だったから、クロックの再生精度は低い。ESSがspdifにASRCを入れるのは、まあ道理。

 

FPGAで受ける場合でも、クロックの再生は出来ないのでFIFOを使ったASRCを入れる。これはいずれオーバーフローするけれど、DACの再生クロックをspdifのクロック周波数に限りなく合わせられるので(1Hz程度のズレ)、16kbytesもあれば三時間ぐらいは持つので実使用では問題ない。D90のspdifは同期サンプリングが出来るので、ASRCは入っていない。DSMで要求される程度の安定性をspdifに求めるのは多分無理。昔取ったデータがある。

f:id:xx3stksm:20201127205302j:plain

f:id:xx3stksm:20201127205316j:plain

入力は48kHzかな。下は周波数範囲を広げている。123dBμというのは再生したクロックのレベル。それに対してかなりのレベルの48kHz由来のスプリアスとガウス分布するノイズが出る。ガウス分布するノイズがクロックに乗ると、全体のノイズフロアが上がる。D90のspdifはそんな感じに見える。ちゃんとしたクロック再生が出来ていれば、123dBμの一本が出るだけ。こんな感じ。

f:id:xx3stksm:20201127210104j:plain

 悪い方は標準的なシーラスのレシーバー(CS8416)。良い方は光だけれどもspdifではなく今使っている位相変調して送る方式。そこそこのPLL性能になっている。DSMでも耐えられるほどに。推測だけど、D90のspdif(同軸でも同じ)はクロック再生の問題だと思う。光が悪いのでなくてspdifの規格の限界かと思う。

 

 マルチシステムの場合、かなりの数のDACを使う。複数台を使うとグランドループの問題や大地アースからの絶縁の問題が無視できなくて、快刀乱麻を断てるのは光だけ。しかし普通はspdifしかないので、位相変調の光を自作してクロック関連の問題を解決するしかない。もしも120dBを超えるSNRを望むなら。FPGAがあれば、特に問題はない。 

 

 もう一つの予想外は、理想と現実の狭間かな。最初いわゆるポン置きでつないだ時は、こんなんになってしまった。ぽかーん。光入力。

f:id:xx3stksm:20201127211351j:plain

 100Hz刻みのスプリアスなので、電源関連だろうとの推測はつく。あれこれ調べるの面倒なので、まずは半田ごて用の絶縁トランスがあるのでそっちからAC100Vを取った。そしたら、あっさり解決。スプリアスは綺麗に消えた。それでひとまずの測定をした後、あらためて原因を探ったら、いつもながらの良くある理由。D90の電源と同じコンセントにつながっていたヒーターが悪さしていた。

 

絶縁トランスを使えば、勿論同じコンセントからにはならない。そんなアホ臭い理由ながらも、オーディオは何をやっても音が変わる、という事実に迫る真実も含んでる。実は上のはヒーターが500Wの時で1kWにすると、もうドヤ顔でなんか盛ってるだろうというド派手。

f:id:xx3stksm:20201127212150j:plain

 ヒーターは遠赤外線(パナソニック)とかいうのだから、完全な抵抗性のニクロム線ではないかもだけど、同じコンセントにつなぐだけでここまでスプリアスが出る。更にオタクを喜ばせるように、コンセントに軽く挿すかしっかり刺すかで随分とスプリアスの出が違う。これならば、病院グレードの雷が鳴るまで離さない、みたいなのにも効果があるのかと思ってしまうよ。

 

 どうしてこうなるかの解析は、D90のSMPSとヒーターとの相性もあり中々難しい。両者のケミストリーが合わないのは確か。この場合は同じコンセントで電源線は二本とも完全につながっているけれど、そうでなくとも似たような事が起きる可能性はとても高い。AC100Vは、違うコンセントからとっても、一本(N)は必ずつながっている訳なので。L(電圧側)は今の家庭ではL1とL2の二つなので、違っていればトランスが間に入る。

 

 大地アースの問題は複雑で、強電と弱電ではかなり違う。原則としては「電線のスズメは感電しない」であるけれど、感電させない方法論が違う。強電ではつながないという方法論はないけれど、安全のためにスズメに大地アースをつないでおくと何か起きるかは、言うまでもなし。大型の鷲とかフクロウは、電柱に留まった時に羽が電線に触ったりして感電する事が多い。大地アース付のスズメは同じ事になる。電線に凧の糸が絡んで人間が感電するのと同じ。強電では、つなげは良いのでなくて、どこにつなぐかを熟考する必要があるという事。

 

 弱電の場合、120dBのSNRが欲しいのであれば、どこにつなぐかを熟考する必要があるのは勿論ながら、複数の機器がつながってしまうマルチシステムのような場合、最適の解はない。なので原点に立ち返ってスズメを感電させない方法論は一つだけ。つながない事。大地アースをつながなければ、ほぼ全てのノイズ源は大地アースを基準としているのでここに向かって流れようとするが、雀と同じでその経路がないのなら流れない、つまりは感電しない。ノイズの発生はないという事。

 

 このヒーターの場合は、かなり密な接触なので強烈なノイズになってるが、youtubeを見ていると、海外の三線の電源の所ではこのぐらいのノイズは珍しくない。日本の人が上げているのは見た事ないけど。でもたまたま二本がつながってしまっていると、このぐらいのノイズが出る事があるという実例。海外ではこうなる可能性が日本よりもずっと高い。

 

 問題なのは、DACを測る人なんてまずいないし、測るとしても実際の使用環境で測る人はもう-120dB(1ppm)ぐらい。しかし実使用でこんなことになる可能性はとてもとても高い。同じコンセントから取らなくても、AC100Vを使うと大地アースが共通電位になっているので、ノイズ電流は導体、つまりは電源コード、RCAコード、USB、スピーカーコード等を経由して大地アースに流れ込む。これは阻止できない。経路は複雑でコロナの追跡以上に難しい。

 

 測定環境と実使用とを同じにすると、何をやっても音が変わるという無間地獄から解脱できる。大地アースからの解脱には、不導体である光ケーブルとか、相当に高い絶縁が期待できるバッテリーが不可欠。これらを駆使すれば、測定値=実使用に出来て、何時聞いても同じ音と言うのが実現できる。たかだかヒーターだけれども、似た事は必ず起きてしまう。使用環境で実際に測ると腰を抜かす事はごく当たり前。

 

 大地アースのつなぎ方で大きく音が変わる事を否定する人はまずいない。個々人がウナギのタレみたいな秘伝を持ってる。でもある人の秘伝は他の所では煙の如しで全く効かない。つなぐと言う選択をする限り統一的な方法論なんかないし、ちょっと電線の這う位置が変わると、それこそ激変してしまう。コンセントを軽く挿すか深く挿すかの違いみたいに。そんな深淵を垣間見たようなヒーターのノイズ。D90の余得。$595ならお買い得だったかも。

 

 

 

シーズン4で終りそうな1bitDSM。潜在能力高くて、金塊がゴロン。

  1bitのデイスクリートDACもそろそろ最終章。どうやら今回のシーズン4で「量産化」に漕ぎ着けられそう。4-wayマルチのシステムでモノラル仕様だと、八枚必要になる。八枚作るとなると、再現性の悪いのはボツ。所謂、何をやっても音が変わる、という状態になってしまうので、いつもいつも同じ音にはならない。料理の場合、いつも同じ味にするのはとても難しい。オーディオの場合もいつ聞いても同じ、には中々ならない。逆に言うならば、それが出来るようになった時もうゴールは少なくとも見えている。後は辿り着くだけ。

 

 DACに限らず電子機器も、いつも同じになるようにするのが初めの一歩で高品質の決め手。いつも同じであれば、良いか悪いかには左程の意味はない。良いならばずっとそのままだし、悪いのならば直せば良い。一度良くなればそれで完成な訳で、後は粘るだけ。再現性が悪いのはどうしようもない。人の一生が千年もあればそれは楽しみになるかもだが、ある程度の時間と金に余裕が効く時間はとても短い。あれこれ直してる暇はない。時間は聴くために使うべし。

 

 前回のシーズン3も悪くはなかったが、量産化は無理。DACの良し悪しはADCが握っているのだが、そっちも少し問題があった。APの測定器でもあればそんな寄り道はしなくて済む。ADCを作るのがDAC作りにも役立つことは多々あるので、この寄り道は仕方ないと諦める。シーズン4のDAC基板もモノラル。

f:id:xx3stksm:20201125200021j:plain

 

 これは今使っているパワーアンプ付きの3bitDSMの後釜なので、下のコネクターは現行品のパワーアンプにつながる。右側のはRch用。電源とDSMした1bit信号が出ている。モノラル仕様なのでRchは要らないのだけれど、うちのシステムでは低音用と中高音用の二つがモノラルDACから出るので、モノラルでもチャンネル数は二つ。4wayステレオマルチに16のDACが必要。まあ、贅沢。部品代は大したことないので。

 

 FPGAのI/OをSignalyst型のDACとして使う場合、使える数に些かの制約が出る。全てのtapを正確に同期させるためには使える数に限りがある。前回はxc6slx25-488BGAでほぼ最大の48tapまで使った。差動なのでI/Oとしては96。これをやると些かSNRが悪くなる。差動アンプで分離しても、ちょっと厳しい感じ。今回は30tapまで。足りない分はxc6slx9(右側)で26tap。〆て56tap。

 

1tapからは35dBのゲイン。Signalyst型が理想的に動作するならば、この1tapのTHDとSNRが35dBだけ改善する。そんな旨い話はアナノグの領域ではないし、それぞれのtapの特性も勿論同じではない。でもマルチビットの直線性の問題よりはずっと解決が容易で、ディスクリートであってもあんまり不利ではなくて、むしろモノリシックより有利。例えばそのうちの一つはこんな特性。

f:id:xx3stksm:20201125203003j:plain

 これより良いのもあれば悪いのもあって標準的なのがこれ。100Hz以下で悪化するのは、おそらくDCカットのHPFの影響。2μと10kの定数なので、低い方では10kΩの抵抗をドライブ側の内部抵抗でショートできなくなって、熱雑音が増える。時定数次第で結構変わる。DCカットをなくせば良いのだが、パワーアンプまでの経路で全てなしには出来ない。市販品DACでは知らんぷりでそこは責任逃れ。しかし実際には入って来るのでここで確認しておいた方が良い。 

 

 これを基準にすると、THDは-95.6-35=-130.6dBでSNRは84.2+35=119.2dB。SNRはADCの残留ノイズが大半なのでその補正をすると、軽く130dBは超えている筈。あくまでも目安として。実際にはTHDとSNRを同一のADCで測るのは不可能。どちらかに特化したADCを用意するしかない。APでもそうしている筈。使っているAD7768-8も、両立は中々難しい。あれこれ考えるよりも、あっさりと二種類作る方が早い。基板は共用できるので。

f:id:xx3stksm:20201125200034j:plain

 AD7768-8は8チャンネル内蔵。SNR用には8チャンネル全部使う。上の写真は8チャンネル全部バージョン。右の光インターフェースは同期サンプリングのために追加。ここは元々hdmiのI2sのためにLVDSの信号と光出力が出てる。FPGAのI/Oは、終端抵抗内臓でLVDSであれSSTLであれ、聞いた事ないような規格の出力も出来る。hdmiならコネクターを乗せる孫基板はいるけど。光ならば空中配線でOK。

 

  ADCから1kHzのようなテスト信号を出せば、DACのアナログ出力を簡単に同期サンプリングできる。その場合、(96000/32768)*341≒999Hzにすると、窓関数の必要が無くなるので、そのまんまのbinの解像度になる。262144のFFTならば、96000/262144≒0.37Hzの解像度で。FFTでジッタを見たいのであれば、窓関数はnone(rectangular)にしないと意味がない。本来存在しないものを見てしまうのだから。

56tapをフルに使うとこうなる。 f:id:xx3stksm:20201125205522j:plain

 シーズン3までは、ほとんどADCのフルスケールの10Vppぐらいまで振ってた。DAC側の残留ノイズがあるので、それを超えるぐらいまで各tapに電流を流して信号レベルを上げてた。1tapあたり4mA。56tapだと4*56=224mA。ちょっと発熱多い。xc6slx25-488BGAの使用I/Oを減らしたり色々と工夫して、今回は1tapあたり2mA。結果として、出力レベルは6dBぐらい落ちる。それでも問題ない程度に残留ノイズが減った。

 

 最近のDACは12Vppぐらいまで振るのが多い。その方が良い測定値が出るからでないかと思う。APのような装置でも残留ノイズの影響があるので、基本的に入ってくる信号はレベルの高い方が良い。実際の使用環境で、12Vppは高過ぎ。ATTを入れて使うのだろうが、ハイエンドでのATTは鬼門。知らぬは本人のみで、実際にはかなりの悪影響があるもの。自作品ならば、必要最小限のレベルにしておくのが賢い。うちならば、せいぜい4.5Vppで十分。

 

 今までのDACの残留ノイズだと、基本波のスカートの広がりが大きくなって、AudioTesterのSNRの測定結果が正しくなくなる。仕方なく、RX7で計算してた。今はAudioTesterでもRX7と同じような数字になるので、こっちを採用。但し、ADCの残留ノイズの影響は補正する必要があるので、3.5dBぐらい上がる。こっちのADCでもTHDは出るけど不正確。この例では、たまたま良い数字になっているみたいだが。より正しいと思われるのはこっちのTHD専用機での数字。

f:id:xx3stksm:20201125210634j:plain

 AD7768-8は測定用なので高域でノイズ特性が悪化したりはしない。更に、1チャンネルだけで測った時も、2チャンネルの平均で測った時も、結果は同じ。オーディオ用と言うADCではLとRでは同じ数字にならない。I2Sの出力とか48kHzの倍数のような利点はあるけれど、測定値としてはかなり怪しい。

 

 2チャンネルだけでSNRは悪くなってしまうが、高域での「草」はほとんど消えて二次と三次が主体になる。増やすとSNRは良くなるが、ドライブ回路が宜しくないようで、本来は存在しない歪が出てきてしまう。上の8チャンネル仕様みたいに。この三次の歪は、粘ればもっと減ると思う。というのは、56tapの場合の調整箇所は天文学的なので、最善の所は神のみぞ知る。

 

 調整はデジタル的な設定なので、一度良い組み合わせが見つかればずっとそのまま。それは基板毎に全部違うけれど。どうやって見つけるかがキモ。ある程度は分かってきたがまだまだ未知の領域。基板の変更は不要なので、いつの日か分かる可能性はある。あんまりTHDに拘る必要はないけど。

 

 1bitDSMの場合、SNRとTHDは基本的に同じ概念。どちらかだけが良いと言うのはまず有り得ない。SNRを良くするためには理想的なスイッチングが必要で、その状態ならばデジタル領域の特性に近くなるので、結果としてTHDも良くなる。1bitDSMは西部開拓のような未知の世界で、未だに一抱えもあるような金塊がごろんと転がっている。ICメーカーはモノリシックでマルチビット。ディスクリートの1bitDSMは可能性としてその上。良い組み合わせは必ずある。まだ見つかっていないだけ。

 

 例えば、110dBを超えるようなSNRになって来ると、tapの並びが支配的になる。Signalystの場合、一段づつ遅れたDSM信号をアナログに変換する。4tapの場合、x(n),

x(n+1),x(n+2),x(n+3)の四つがある。受けるtapの特性は同じではない。どのtapにどの出力をあてがうかで、かなりどえりゃーな特性の違いが出る。4tapであれば、組み合わせはたかが4!=24で知れている。ベタに全部試せばよい。4入力のセレクターをデジタル側に入れとけば良し。

 

 そして5tapなら5!=120、6tapは6!=720。これは曽呂利新左衛門の米粒の話なんてもんじゃない。ベタに試すはあり得ない。だけど良い組み合わせは必ずあって、115dB以上ならばもうそれが全て。56!は、さて何桁になるのやら。他にもデジタル的に変えられるパラメーターは幾つかある。DSMの次数とOSRの倍数とか。

 

 使い物になるのは、80OSRの6th-order、160OSRの4th-order、256OSRの3rd-orderあたり。今回の基板では256OSRも使えるようになった。120dBぐらいのSNRは出る。潰しが効くのは真ん中の160OSRの4th-orderで、上の測定値はみんなこれ。でもTHDを良くしたいのであれば、80OSRの6th-orderが最適。OSRが低いと信号のトグルが少なくなって理想状態に近くなる。64とか128でなくて80とか160なのは微調整。二倍ごとでは些か粗調なので。

 

 1bitDSMは、-30dBFSから-60dBFSぐらいで少し不安定になる事が多い。今回のはうまく行っているようで、少しレベルが下がって来るともう草は消えてずっとそのまま。このぐらいのレベルで草は消える。不安定にならないようにする方法はある。少し粘っていると、何かのはずみに気が付くもの。長年やってる人は多分知っている術。

f:id:xx3stksm:20201125214807j:plain

 なのでTHDはだいたいレベルに比例する。ESSのこぶみたいなのは出ない。やはり、-3dBFS近辺が0dBFSよりも良い。これは最終的には1tapの時の平均的な数字に近付く。OSRとかDSMの次数が関係するかもだけど。

f:id:xx3stksm:20201125215137j:plain

 

  最後に32toneの信号。直線性の確認にはこれが一番良いと思う。ジッタのようなのも分かる。ジッタと残留ノイズの区別は難しいが。基本波に近いのがジッタでそれ以外は残留ノイズとか。信号はASRで使っているのと同じ。ADCにこの信号を出す発振器を内蔵したので、実使用と同じ状態で同期サンプリングが出来る。ADCがマスターでDACがスレイブ。普段はトランスポートがマスター。

f:id:xx3stksm:20201125220044j:plain

 これはノイズフロアーを見たいのでSNR用のADCを使いたいが、どうもADCがこける。かなり大きな歪みが出てしまいボツ。THD用のADCなのでノイズフロアはDACではなくADCで制約されてる。参考までに無信号時の出力(青)を一緒に表示。この無信号は動的な無信号なので、DSM信号は出ている。実際の音楽信号の無音の時と同じ状態。

 

 300Hzぐらいから下で少し上がり始める。DCカットの影響は青も同じなので、DACからのノイズと考えられる。但し実際のノイズフロアは、これの10dBぐらい下にあると思う。THD用のADCの場合、残留ノイズがDACのそれより遥かに大きくて、本当のSNRは測定値よりも10dBぐらい下になるので。SNR用でも3dBぐらい下。なのでDACの出力はもっと大きい方が測定としては楽。

f:id:xx3stksm:20201125221157j:plain

 どうして低域で上がるかは、少し拡大すれば分かる。±5Hzぐらいの範囲で少しスカートが広がるが、これはジッタではない。ジッタであれば周波数依存するけれど、これは常に一定値なので。周波数の高い所では相対的にこの±5Hzは小さく見える。低い方では、34Hzと42Hzなら両者のは重なってしまい結果として大きくなる。市販品でも基本的に同じ傾向。

https://www.audiosciencereview.com/forum/index.php?threads/review-and-measurements-of-topping-d90-4499dac.10281/

https://www.audiosciencereview.com/forum/index.php?threads/okto-dac8-stereo-dac-review.14705/

 

 上の二つはおそらく窓関数が入っている。FFTサイズは256kのはずだからノイズフロアの比較は可能。ただし細かい見え方は窓関数次第なので、ノイズフロアとは130dB以上の差があるという事以外は憶測になる。経験的に、-120dBぐらいのTHDがあると、こんな感じの数字になる。高い周波数ではジッタの影響が出る。 

f:id:xx3stksm:20201125222243j:plain

 ジッタはDACならば出している周波数に比例する。上のように10kHzと20kHzではスカートの広がりが6dB上がっている。なのでこれはジッタと考えられる。もう一つジッタの特徴として、とことん出力信号のレベルに比例する。SNRは残留ノイズと出力信号の差なので、出力信号が下がるとその差も減り悪化する。ジッタは悪化しない。

 

 0dBFSの10kHzの時は-110dBFSぐらいのジッタ的ノイズが出る。10kHzの-20dBFSならば、-130dBFS。0dBFSの20kHzの時は-104dBFSぐらいのジッタ的ノイズが出る。20kHzの-20dBFSならば、-124dBFS。実際の音楽信号では、高い周波数のレベルは低い。結果としてジッタ的なSN悪化は相殺されることになる。

 

 現実のDACは、余程ひどくてもレコードのジッタなんかと比べるならば、遥かに良い。問題があるとすれば、内部にグランドプレーンを持たない両面基板での性能劣化。そっちの方がデジタルのシステムでは遥かに問題になる。そっちのノイズの方がジッタ的ノイズよりも遥かにデカくなる。そういう基板では、綺麗に周波数に比例するような特性にもならないと思う。 

 

定在波の節をピンポイントで潰す。部屋の広いは七難隠す。

 もう12年も前の事、母屋を立てた後、オーディオ部屋をその隣に作った。元々その積りだったから、母屋の壁はオーディオ部屋との廊下がつながるようにしてあった。

f:id:xx3stksm:20200806205025j:plain

f:id:xx3stksm:20200806205034j:plain

 冬の前に屋根と壁だけは張って二年ぐらい放置。母屋の内装に暫くは忙しかったから。オーディオ部屋に手を付け始めたのはブブゼラ華やかなりし2010。窓はまだなかったが、天窓はあったからそこそこ明るかった。電気だけの建物は楽。第二種電気工事士の資格があれば、屋内配線は自分で出来る。

f:id:xx3stksm:20200806205247j:plain

 都会暮らししていた時のスピーカー(エジンバラ)で聞いてみたら、以前よりもしこたま低音が出た。結局、クラシックで必要な低音は、スピーカーは勿論としても部屋の容積で決まる部分が大きいと実感。それから十年今に至るも、確信は深まる。防音の必要がない環境であれば、容積の勝負。だから天井は高い方が良い。デカけりゃデカい方が良い、という珍しい実例が部屋。床面積60㎡で容積は300㎥ぐらい。もっと広くても良かったと今は思う。

 

 但し、問題がなくはない。部屋は閉鎖空間で無響室ではないので、定在波の節は必ず幾つかが聴いている所にくる。結果として、周波数特性にはかなりの凸凹が発生する。凸はせいぜい6dBなので、問題は凹。こっちは何もしなければ-20dBぐらい落ちる。定在波の影響で特性が乱れるというのは、半分ほんとで半分は誤解。正確には、定在波の節の影響。無響室ではない室内の音は、定在波にしかならないのだから。ほとんどの場合、特定の周波数で発生する定在波、という意味で使ってると思う。

 

 バイオリンの弦の場合は、定在波であって特定の周波数でしか発生しない。室内の場合は、全ての周波数が定在波にしかならない。定在波の節は、どんな部屋の形状であっても聞いている場所に当たる周波数が必ず出て来るので、避けようがない。スピーカーの位置や聴いている位置を変えれば、節の周波数は変わるが、決してなくすことは出来ない。反射板その他も、周波数を変えるだけ。

 

 これは中々理屈では理解できない。定在波の節の凹で-20dBぐらい落ちると、その周波数はほとんど聞こえなくなる。スピーカーから音が出ているのに、何故か聞こえない。そういう周波数(正確に言うならば波長)が、幾つか存在する。少し部屋を歩き回ると、場所によってほとんど音の聞こえない所があると分かる。そこが定在波の節。周波数が変わると、聞こえなくなる場所、つまりは節の位置が変わるだけ。数式的にはそうだし、そこそこ広い部屋を歩き回ると、確かにそうなっている。

 

 定在波のWikiには、互いに反対方向に進む同じ振幅で同じ周波数の音波があると、合成されて定在波になると書いてある。嘘ではないが、室内の定在波の説明としては、些か不十分と思う。思いっ切り単純化すると、室内の場合は、スピーカーの対面にのみ反射面(壁)があるとして考える。元々の音と、壁で反射した音には経路差があるので位相がずれる。運悪く180度ずれたとすると、両者は打ち消しあって零、つまりは節になる。360度のズレだと、二倍になる。

 

 壁からの距離がx0の位置では、音の波長をλとすると、元の音との合成はこうなる。

x0=n ・(λ/4) (n=1,3,5・・・) の位置が節で音は消える。

f:id:xx3stksm:20200806211922j:plain

 

 現実的には壁の反射率をk(0<k<1)とすると

 

f:id:xx3stksm:20200806212707j:plain

 

k=0.9ならば、

f:id:xx3stksm:20200806212732j:plain


 元の進行波も少し残るから、無音にはならない。実際は、スピーカーの後にも反射壁があるので、反射波の反射波、そのまた反射波を数個足し合わせた結果が節の位置に影響するはず。その場合も、元の進行波が少し残ると思う。普通の部屋では、そんなに理想的な反射などはしないので、SIMで節の周波数を求めるのは無理でしょう。実際に測るのが一番正確であり、遥かに示唆に富む。

 大工の場合は、材料に教えて貰うと言う。回路設計も然り。実際の回路の応答で何が起きているのが分かる。下手の考え休むに似たり。物理現象に教えて貰う以上の方法論はない。それをしないと、必ず勘違いをする。所謂専門家と言う中に、とんでもない事を言う人は少なからずいる。ははーん、と分かる。この人は自分で確かめた事がないんだなと。現物で自分で確かめる。そうしないと、必ずとんちんかんになる。

 

 もう随分と昔で、まだ管面をデジカメで撮っていた頃のデータ。白は、スピーカー端子の波形で、赤は聴いている位置に立てたマイクで拾った音。10mぐらいの距離があるので、30mSぐらいの遅れがある。振動体は必ず物理的な質量をもつ。なのでF=maに従って、振動は徐々に始まって最高点に達し、消える時も徐々に。いきなり最高点には決してならない。プリリンギングがおかしいと言う人は、物理法則を知らない。最高点の前も後も振動するのが、この世の中での振動現象。これは50Hzの時で、可もなし不可もなし。

f:id:xx3stksm:20200806213630j:plain

53.5Hzになると、こうなる。典型的な定在波の節。最初の波がやって来てから100mSぐらいして、幾つかの反射波の合成がそこそこ完成したと思われる。そして運悪く、位相が反転に近くなったので、ほぼ消えてしまった。完全に完成するのは、250mSぐらい後。そのレベルが、普通のVU計で測った値。50Hzと比べると、12dB近くは落ちている。これはやはりマズイ。

f:id:xx3stksm:20200806214455j:plain

 

 

 そして物理現象なので、前があれば後もある。前は直接波のみの場合で、後は反射波のみとも言える。後を残響と言うのだろうが、ところがどっこいで、前響というのも存在する。これは中々想像の域を超えている。物理現象に教えて貰わないと、両方ある事にまでは頭が回らない。ともあれ、これが実際の定在波の節。こんな周波数が、残念ながらどう足掻いても、幾つかはは必ず発生する。

 

 単独の正弦波で、普段聞いている位置で実測したのがこれ。補正前と補正後。補正前だと、四か所ぐらいの凹がある。-10dB行かないのでこれは良い方。普通の環境だと、単独の正弦波では凸凹が大き過ぎて測定にならないから、平均値としてワーブルを使う。でも実際は正弦波の方だから、単独の正弦波で少しづつ周波数を変えて測らないと、定在波の節は分からない。定在波の完成にはそれなりの時間が必要なので、インパルスなどでは全く無意味。無響室でスピーカー単独の特性ならば良いかもだが。

 

f:id:xx3stksm:20200806220005j:plain

 

 補正後と言うのは、デジタルフィルターで定在波の節を、ピンポイントでつぶした結果。定在波の節を、反射板とか吸音材のような構造物で消す事は出来ない。元々特定の周波数のみを叩くような精度も、高いQもない。複数のスピーカーとデジタルフィルターでのみ可能と思う。定在波の節の成り立ちを考えるならば、そうなる。

 

 上の図では、44Hz近辺に最初の節がある。うちの場合、ウーハーは2mぐらい離れた位置に二つ(それぞれダブルなので、片チャンあたり四本)ある。なのでこの節は、二つのスピーカーが作る二つの定在波がたまたま運悪くほぼ逆相になったので、相殺されて凹になった、と考えられる。途中の複雑な反射の具合は、考えなくても良いし考えようもない。考えられる最悪の解決法は、この周波数でゲインを上げる事。9dBぐらい上げると、机上の理屈としては辻褄が合う。

 

 現実には最悪。まず、アンプがサチるはず。A級なのでそんなに余裕の出力はない。上手く入らない組手を、力任せに叩いてねじ込むようなもの。理屈を考えれば答は単純。上げるのではなく下げる。たまたま運悪く逆相になったのであれば、片方をゼロにすれば良し。そうすれば重しが外れるのでせいぜい-3dBぐらいの凹に落ち着く。勿論アンプはサチらない。片方を落とすために、少なくとも二つのスピーカーが必要になる。

 

 二つの音源がある場合、両方の定在波の節が同じ位置、つまりは聴いている位置に来る可能性はまずない。節の位置は、ほんの僅かな距離の違いで大きく変化するので。なので、片側の音源からの節が運悪く当たったとしても、もう片方は普通の音圧。結果として合成された音圧はせいぜい-3dBの凹に収まるはず。二つの音源がある場合、やっぱり凹は発生するけれど、定在波の節ではないと思う。

 

 複数のスピーカーの利点はもう一つ。一番無理のない低音のブーストが出来る事。二つのウーハーを鳴らすと、f0以下にまで低音は伸びる。理由はこれまた単純。100Hz以上ぐらいになると部屋の複雑な反射の影響で、音圧はそんなに上がらない。一つの時とほぼ同じ。低くなると波長が伸びるので、反射しても元の音と大して変わらなくなって、3dBぐらいは上がってくる。嘘のようなホントの話で、これはとても自然な低音が出る。そして定在波対策にもなる。ある程度の距離を空ける必要があるので、やっぱり広い部屋が大事。

 

 今はそんな補正も入るので単独の正弦波でこんな特性。45cmのウーハーでf0は30Hzぐらいだが、四本使うとかなり下まで自然に行く。システムの入れ替えの時、暫く補正が入らなかった。比べてみると、やっぱりあった方が良いかなと言う印象。コンサートホールの低音は、ふわっと来る。柔らかくて優しい。でも爆風が建物を吹き飛ばすように、空気の圧力は凄まじい。柔らかいのだが、軽々とふわっと体が浮き上がってしまうような低音。そういうのに近くなる。

f:id:xx3stksm:20200806222138j:plain

   

 もう一つのキモのデジタルフィルターは、反応速度を考えないと、これまた完全に無意味となる。うちの部屋に合わせた特性は、実測値から簡単に設定できる。こんな按配。節の周波数で高いQを持つノッチフィルターを作ればよい。タップの長さを増やすと反応速度が遅くなる。生の楽器であっても、特定の音が一秒ぐらいしか出ないという場面はある。その間に反応できなければまったく無意味という事。

 

f:id:xx3stksm:20200806222940j:plain

 但し、高いQは長いタップにしないと実現できない。その妥協点は、12kHzサンプリングならば4096のタップ。これはデータの取り込みにかかる時間の問題なので、4096/12000≒0.3秒。逆に言うと、12000/4096≒2.9Hzの解像度が上限。これ以上のQにすると、反応が遅れるので無意味になってくる。デジタルフィルターの反応速度が、全てを支配するという珍しい実例。 因みに、こんなインパルス応答になる。2048の所はもっともっと上まで行くけど、他が見えなくなるのでカット。ほとんど通過で、幾つかの周波数でノッチが働くと、こんな感じになるみたい。

f:id:xx3stksm:20200807145039j:plain

 

 もう数年前の事で記憶が定かでないけれど、周波数からしてこれが補正ありと無しの比較だと思う。前が補正なしで、定在波の完成後はかなりレベルが落ちる。後のは補正が入るので、少し落ちた後にそこそこのレベルに戻る。元の信号は一秒ぐらいだけ出てる。0.3秒の反応時間ならば、まあ良いかという感じ。この補正が、節の四つの周波数に対してかかる。厳密には波長は温度で変わるから、最初は夏用と冬用の二つぐらい用意したと思う。

 

f:id:xx3stksm:20200806224641j:plain


 使ってみると、一つで問題なさそうだったから、今は一つだけ。時々特性測るけど、いつも同じぐらいに収まってる。デジタル補正なので、波長が温度で変わるか、部屋に大きな反射板を置いたりしなければ、変動要因はない。一度デジタルフィルターの定数が決まると、後は手間いらずで定在波の節を潰せる。デジタルオーディオの華はこんな曲芸が、超絶の安定度で可能な事。アナログではSFの世界の話にしかならない。とどのつまり、広い部屋とデジタルフィルターがキモ。

 

 古き皮袋に新しい酒と言った塩梅で、アナログ的な大工仕事で広めの部屋を建て、最新のデジタル技術の酒で満たしてやれば良いという話。DACだけとかスピーカーだけとか、そういう方法論ではクラシックの低音は出ない。オーディオの低音の決め手は大工。電子回路設計よりも、ずっと効能がある。家具職人になってスピーカーの箱を作っても、功徳は薄い。マニ車は大工。

 

 公務員してた人で、日本伝統の軸組の家を建築申請から自分でして、立てた人がいて、本も出てる。家をおっ建てるのは、今のようなネット環境が整備されている時代では意外と簡単。二十歳で死ぬのは思いっきりの勇気がいるとしても、自作の家は少しばかりの蛮勇で立つ。問題があるとすれば、大抵の仕事よりも自給自邸の方がずっと面白いので、仕事するのがアホ臭くなる。

 

 公務員の人も役所辞めた。私はこれで会社を辞めました、というCMが昭和の頃に一世を風靡した。私は家で会社を辞めました、になる可能性は高い。覚せい剤とは違うので常習性もないし、体を壊す事もない。脚立から落ちるというのは、どうしてもあるが。些か社会生活に支障が出るかもだけど、おっ建てようと発心する人は、最初から少し浮いているだろうから、特に変化なしと考えて差し支えないだろう。それは誤差の範囲。

 


 

 

 

マルチシステムはデジタル化の華。美味しいのはXover。

ハードディスクの整理をしていて、もう死語と化してしまったブブゼラが、南アのWカップで鳴り渡っていた頃の写真が出てきた。十年前。道楽の一つでもないと寂しいなと始めたオーディオ部屋の初期の頃。外壁と屋根だけを張って、床はまだコンクリのまま。手前の植木はハスカップでなかろか。ちゃんと根付いた。勿論外に。

f:id:xx3stksm:20200608212327j:plain

f:id:xx3stksm:20200608212335j:plain

スターリングとエジンバラが写ってる。もう今は使ってないが、クラシックのオーケストラ聴くならば、部屋が一番決定力として大きいな、と実感した。その後、何かと変遷あって今は自作スピーカーというのか、部屋込みのスピーカーになってる。十年経てば、床も壁も貼れるし、色々と変わる。部屋で決まるとの実感はより強くなった。

f:id:xx3stksm:20200608212842j:plain

f:id:xx3stksm:20200608213205j:plain

 部屋が35%で、ほぼ1/3かな。次は音源で25%程、1/4。もうこれで60%いっちゃう。今のクラシック音源は、住宅事情に合わせてそれなりに加工してあるので、広めの部屋には合わない。結局、アナログ時代の70年代ぐらいまでのレコードから自録りするのが一番良いと落ち着く。1932年、昭和七年の満州事変の一年後のSPでも、部屋が広くて自録りするならば、十分に楽しめる。音楽的という意味で。

 次は、スピーカーユニットで20%。ウッドホーンも含めて。数を増やすのは見た目では全然なくて、均一な特性にするため。低音側では、構造的イコライザになるので、無理なくオーケストラにふさわしい低音に上げられる。45cmが8本は必要。ここでもう80%いっちゃう。

 

 電子機器の出番はあまりない。意外に効くのがXover(チャンネルディバイダー)で、残りの20%のうち、13%。後はDACが3%、つなぎ方が3%、最後にアンプが1%で100%かな。マルチのシステムはスピーカー直結なので、アンプの出番はほとんどない。LCのネットワークならば違ってくるだろうけど、ハイエンドにそれはない。

 

 Xoverまでは、特定の音が聞こえるか聞こえないのレベルなので、ABXテストでも、ボケッとしてない限りは分かる。DACになると好みの問題なので、八割方は分かるだろうけれど、印象の域は出ない。勿論、八割方好きならば、そっちを選ぶのは当然。つなぎ方とは、所謂電線。電線自体ではないけれど、普通は電線での違いと認識されている。理由抜きの一言で片付けるならば、基板の外に電線を出さない事。光が良い。電源とスピーカーのみが電線でつながる。

 

 Xoverは基本的にはDACと込み。今時の音源はデジタルしかないので、デジタルの領域で分割する。結果として、DAC若しくはトランスポートにくっつく。単独でXoverの基板を作る事はない。元々その積りだったが、やってみると意外な程にここで有意な差がついて、電子機器はXoverと光出力とSDマイクロのためにのみ存在する、ような状態になってしまった。

 

 周波数の分割は、今時なのでデジタルフィルター。肩特性は、かなり自由に選べる。問題あるとすれば、やっぱり今時にマルチシステムやる人なんかいないので、市販品は限られる。デジタルのまま思いのまま、というのはないかも知れない。ベリンガーのようなのは一度アナログに戻すし、光で出すという基本方針に合うものはないと思う。自作する意味がテンコモリ。DACとかアンプでは市販品も色々だから、自作の有難味は薄い。

 

 一つ誤解があるとすれば、NFBは深ければ深い方が良いとか、アンプの出力はデカければデカいほど良い、とは誰も思わないように、フィルターのタップは長ければ長い方が良い、とはならない事。過ぎたるは及ばざるが如し、で却って有害。適切な長さがある。音声信号は常に変化しているので。振幅の変化がない信号であれば、長さはそんなに気にする必要はないのだが。

 

f:id:xx3stksm:20200608222602j:plain

f:id:xx3stksm:20200608222619j:plain

 少し極端な例として、1kHzを0.1秒毎にオンオフするような信号を考える。この間隔だと、人の耳には1kHzと無音とが交互に切り替わって聞こえる。0.01秒毎にオンオフすると、上の右側の16kのFFTのように無音の区別は無くなる。ブーという音になる。問題なのは、長いFFTでは人の耳と同じような結果にはならない事。オンオフしていなければ、問題はない。 左のように2KのFFTにしてやれば、1kHzと無音は区別できる。上の図は1kHzの所だから、1kHzの所に山が来る。右側の16kのFFTは間違い、ではなくて、そんな設定にする方が間違っている。

 

こっちは無音の所。2KのFFTならば無音の所ではちゃんと無音になる。

f:id:xx3stksm:20200608223540j:plain

f:id:xx3stksm:20200608223557j:plain

  右側の16kのFFTは、96kHzのサンプリングでは0.17秒ぐらいのデータを取ってしまうから、0.1秒毎のオンオフでは両者の区別がつかなくなるのは当然。少しだけ、山の高さは小さくなるみたいだけど。96kHzのサンプリングで16kのFFTは、16384*(1/96000)≒0.17秒のデータが入らないと計算が出来ない。その間にオンオフされると、うまくない。そこまで行かなくても、音楽は常に変化しているので、長さには必ず対価(副作用)が発生してしまう。

 

 デジタルフィルターも同じ理屈。96kHzのサンプリングで16kタップのフィルターは、16384*(1/96000)≒0.17秒のデータが入らないと計算が出来ない。結果として、不 可解な反応になってしまう。上の1kHzのオンオフ信号に、2kタップと64kタップで1.5kHzのLPFを通すとこうなる。64kタップは、何か変。長いタップは、こういう変化の速い信号には対応できない。

 

f:id:xx3stksm:20200608224536j:plain

 

2kタップは悪くないけれど、これも2048*(1/96000)≒0.021秒のデータが必要なので、境界ではおかしくなる。

f:id:xx3stksm:20200608225139j:plain

無音になってから0.01秒ぐらいの所では、64kタップと似たような反応。正しく反応していても、2KのFFTではこうなってしまう訳だが。

f:id:xx3stksm:20200608225533j:plain

無音になってから0.02秒ぐらいの所では、もう無音に戻る。64kタップでは無理。長いタップの副作用で、余計なスペクトルが出てしまう。

f:id:xx3stksm:20200608225751j:plain


  64kタップでは、0.05秒ぐらいの所でもダメ。16kタップにしても、0.1秒毎にオンオフされるとダメ。8kまで落とすと、辛うじて変なスペクトルが出ない所も出て来る。いずれにしても、タップの長さは反応速度に逆比例するので、0.1秒毎のオンオフぐらいには追いつけないと困る。完全なオンオフではないにしろ、プロのピアニストは一秒に十回は鍵盤を叩けるのだから。

 

 長いタップの問題は、ちょっと信号を大きくすると見えてくる。-60dBFSぐらいまで拡大すると、こうなっている。上が2Kのタップで下が64K。64Kでは、無音だった所に信号がはみ出すので変なスペクトルが出る。

f:id:xx3stksm:20200608230332j:plain

 

 それではと64kをかなり緩めの肩特性にしたら、こんなになった。上のは相当な急峻な特性。2kの方も少し緩めにしたけれど、こっちはほとんど変化なし。64kのタップでは、どう頑張ってもダメなよう。

f:id:xx3stksm:20200608231255j:plain

 オーバーサンプルの場合は、帯域外でのLPFなので長くしても実害はないかもだけど、現実の問題として長くしても実利はほとんどない。サンプリング周波数を上げない限り、長さに意味はない。なので、八倍ぐらいにはするのだけど、本来はDSMで使うような64とかそれ以上が好ましいので、その状態ならば1Kもあれば十分。タップは長ければ長い方が良い、なんて事はない。部屋は広ければ広い方が良い、けどね。

 

 それがデジタルフィルターの常識なので、タップの長さは反応速度で決めるもの。0.01秒ならば、まずはいう事なし。96kサンプリングならば、1kのタップ。48kサンプリングならば、512のタップ。要は、データを取り込む時間。問題は、短いタップでは急峻な特性を作れない事。現実的には、96kサンプリングの2kタップ(反応時間は0.02秒)で、十分過ぎる特性になる。

 

 最近のホーンドライバーは、デジタルフィルターを意識して、2インチで4インチボイスコイルでも、12db/octだと900Hzまでとしている。24db/octだと500Hz。

https://www.usspeaker.com/radian%20950pb-1.htm

でも聞いた感じでは、もっと低音は早めに切った方が良い。Xoverでの歴然とした音質差は、ここから来ていると思う。うちでは800Hzクロスぐらいなので、ここが一番きつくなる。なので、2kのタップにしている。こんな特性。HPFは600Hzで-85dBぐらい。このぐらいは落としたい。

f:id:xx3stksm:20200608233016j:plain

 因みに、HPFは構造的にLPFよりも効きが悪くなる。普通、LPFだけという事はないので、HPFは元信号を必要なだけ遅延してからLPFを引き算して作ると、最も急峻に出来て掛け算器を減らせる。上のHPFはそんな引き算型。そのままの2Kタップだと、ここまでは落ちない。

1.5kのHPFだと、ずっと落ちは良くなる。こんな具合。やっぱり引き算型。クロスでは-6db落ちる事になるが、他の帯域と部屋の特性の合わせ技なので、気にする必要はない。1300Hzで83dBぐらい落ちる。

f:id:xx3stksm:20200608233730j:plain

 最初はここまで落として良いのかと悩んだけれど、聞いてみると圧倒的に急峻なのが良い。オーケストラの中に埋もれていて聴こえない楽器の音が、急峻にするとしっかり聞こえるようになる。聞こえる聞こえないの次元だから、ABXは100%通る。アナログ時代にはこんなのなかったし、ここまで落としているのは自作しないとまず無理だから、実例がないだけ。

 

 聞けばこっちが圧倒的に良い。低音側は、積極的に急峻に落とすのが良い。音の明瞭度が、スピーカーユニットを変えたように良くなる。デジタル化した最大の利点は、こんなXoverが作れること。ピアノソナタでは、あまり差は出ないと思う。とにかくオーケストラの分離度がまるで違ってくる。

 

ツイーター(T925A)も同じ。割と低め(7200Hz)のクロスなので特に。6500Hzで114dB落としてる。周波数高くなるので、これは1kのタップで普通のHPF。これも聞いてみると、一気に落とした方が良い。とにかく低音側は積極的に切る。

f:id:xx3stksm:20200608234546j:plain

 とどのつまり、Xoverをデジタル化しないと、美味しい所を捨ててしまっている。フィルターの係数だけで、スピーカー変えたほどの違いが出るのだから、使わないと損。2kタップ程度の演算は、spartan6でも楽勝。DSMを実装して、余ったリソースで十分に対応できる。専用のDSPは些か重たくて融通が効かない。

 




 

 

 

exFAT再び。128Gが読めなくて泣く。

 再生ファイルのフォーマットをexFATの32MGクラスターに変更して、SDカードも128Gまで対応できるようにする過程で、幾つかの不具合に遭遇。既知のものもあれば未知のものも。データを読み出すトランスポートは三年前に作った基板で、44.1KHzから96KHzに上げるSSRCの掛け算器が少し古い。うちの再生ファイルはレコードからのリッピングが主なので、全然海苔していない。だからオーバーサンプリングしても、ISOでオーバーフローはしない。それでずっと掛け算器には、リミッターが入っていない。

 

 今回、色々調べるついでにCDからリッピングしたのも再生したら、例によってと言うのかオーバーフローした。普通、掛け算器にはリミッターが入っているから、オーバーフローしてもクリップするだけなので、余程ひどくない限り聞いても分からない。時々、CDの時だけはオーバーサンプリングはダメという人がいて、よっぽど海苔なファイルを聞いているんだと思う。

 

 うちの場合は、自分用なので意識的にリミッターは入れない。入れないと、プラスの最大値を超えるといきなりマイナスの最大値になるので、さすがに、あれっ?となる。原因がはっきりするように、入れない。単純に、レベルを3dBぐらい落としてしまえば問題は解決するから。

 

 ところがレベルを落としたのに、再生するとブチッとなる所がある。PCに送ったデータは問題ないのに、スピーカーからはブチッ。色々調べると、どうもSPDIFを受けているクリエイティブのインターフェースが変。再生用のミキサーで3dBぐらい絞ると、ブチッは消える。飽和していないデータなのに、何故か再生用は更に絞らないとダメ。PCがらみでは、こんな不可解な現象は良くある。気が付かないだけで、変な事は相当にあるはず。

 

 今までで最大のミステリーは、時間泥棒。レコードのリッピングを始めた時、最初はADCの出力をSPDIFにしてPCに送り、録音はPC側でしてた。ADC側で、SDカードでの書き込みが出来るようになる前の事。ADC側で、書き込みが出来るようになってからも、暫くは同じデータをPCにも送ってた。当然、両者は同じにならなければならない。元のデジタルデータは同じなので。

 

 ところがPCは魑魅魍魎なので、ある時、両者のファイルサイズが少し違う事に気が付いた。PC側が少し短い。聞いて分かる程ではないけれど、60分送ると、数秒はずれてたかも。この場合は幸運にも両方のデジタルデータが残っているので、何処で抜けたかを解析するのは容易。こんな抜け方をしてた。

f:id:xx3stksm:20200518212034j:plain

 

 オレンジ色はリアルタイムのFFT結果で、薄い青は波形。レコードの場合でも20kHzぐらいで急激に高域が落ちる事が多くて、この場合も20kHz以上はかなり落ちている。ところが一瞬、突然にほぼ全帯域(96KHzサンプリングなので48kHz)のFFTになる。この時、青の信号の方を見ると、不自然な上がり方を両チャンネル共にしている。音楽成分ではなくて、一種のインパルスのような信号なので全帯域に広がっている。

 

 原因を調べてみると、この時は夏で、SPDIFを受けているインターフェースと同じUSBコントローラーにつながっているHDDが、暑さで死にかけていた。リトライが異常に多くなって、どうもその間はコントローラーの資源を専有してしまい、SPDIFからのデータを取れなくてバッファがオーバーフローし、データが1パケット位飛ばされたみたい。

 

 SPDIFはエラーチェック可能であるけれど、リアルタイムなので分かっても再送依頼は出来ない。PC側も、パケット内でのエラーであれば検知可能としても、まるごと飛んでしまうと多分検知不能結果として、飛んだパケットの分だけ受けたファイルサイズが小さくなるという、不可解な現象が起きる。LANであれば、受けたパケット数を数えて、エラーの検知が可能かもだけど。

 

 但し、これも程度問題なので、60分で数回起きる程度であれば、聞いても分からない。分かったのは、HDDがほとんど反応しなくなって、飛ばしの頻度が上がってから。そういうのがあるから、自分で使っている機械の場合は、エラーが起きた時にはすぐに分かる方向にこける方が良い。売り物であれば、可能な限り、そうはならない方向にするんだけど。これはたまたま原因が分かって、幸運。PCオーディオでは、知らずにそのままが大半。

 

 でも96KHz/24bitみたいなファイルを再生するのは、意外と難しいみたい。CDプレーヤーだと、DVDディスクに書き込むか、付属のUSBドライバーを使ってCDプレーヤーをUSBDACにするか。その元のPCがちゃんとデータを読んでくれるかは、実際かなり怪しい。リアルタイムでなければ問題はないのだが、リアルタイムのデータが保障されるかは運次第。それでかなり大がかりなシステムを使ったりしてる。データを読むPCと、操作用のPCを分けるとかで。

 

 更にマルチシステムにしたいとなると、難易度は相当に上がる。デジタルデータをアナログに戻さず、そのまま帯域分割してDACに入れたいのだが、それが出来るようなシステムは、自作しないと無理ではなかろうか。専用機を作れば簡単。SDカードから読んで、帯域分割(チャンネルディバイダー)してから送り出す。FPGAとARMマイコン、後は発振器程度で済む。トランスポートの部品はそれだけ。聞き流すような使い方はしないから、128Gが二枚挿せれば問題なし。 

 

f:id:xx3stksm:20200518214851j:plain

 

 そう思ってたら、予想外の問題が発生。64Gまでは使えていたトランセンドのSDカートが128Gになったら、読めなくなった。予備にと思って最近買った64Gも、試してみたらダメ。同じ型番の1年ぐらい前のは、問題なく使えていたのに。良くある話ではあるが、愕然。Windowsからは、問題なく読み書きできる。やれやれな結果。

 

 ある程度の予想はつく。無料公開のSDの仕様には、一部分に伏字があって、金($1000かな)払わないと中身を読めない。お恵み米の¥100000に少し足して、仕様を買うかとも考えたが、面白くない。どこかに隠れレジスタみたいなのがあるんだろう、とは推測できるのだが。後は、ハッキングだけだ。ハッキングで$1000稼ぐ。

 

 方法はごく当たり前で、事の成否は運次第。たまたま分かりやすい所に秘密があれば分かるし、深く潜行していたら無理。丁半ばくちみたいなもの。壊しても良い¥1000ぐらいのSDカードリーダーを買ってきて、カードのイニシャライズの時に出しているコマンドを追いかければ、当りが出る可能性はある。2日ぐらい粘るが、これは失敗。思いの外、イニシャライズの期間が長くて、全てを追い切れなかった。

 

 次は作戦変更して、実際の読み出しの時に、何処の番地をアクセスしているかを探る。ファイルの書かれているクラスターは分かるので、それが現物のカードでは何処になっているのかを調べる。今まで両者は一致していたのに、最近のカードでは何故かそれが違っているのよね。これは、あっさりと成功。拍子抜けするほどに。現物のアクセスには、少しばかりのオフセットがついていた。

 

 どうしてそんなのをつけるのかは謎。検査の過程で、その方が便利なのかな、と思うぐらい。そのオフセットは、カード内のどこかのレジスタに書かれているはず。金出さないと開示されない仕様書に、その秘密は書いてあるのでしょう。64Gも128Gも同じオフセット。新しいのはそうなっている。SUNDISKは、違うオフセットがついているみたい。$1000払わずに済んで、ラッキー。

 

 オフセットなしの64Gとありの64Gとは、多分違うメモリーを使っている。実際に使える容量が微妙に違う。これは珍しい話ではなくて、メーカーが違うと、同じ64Gでも実際の容量には差がある。同じメーカーでも、変わる事はある。古い方は59Gぐらいで、新しいのは58Gぐらい。使用メモリーのプロセスが変わったのかな。これはバッテリーのニセ仕様とは違って、フラッシュの本質的問題。東芝製でも同じ事。

 

 フラッシュはある程度の不良が前提であるし、ウェアレベリングのために少し予備を取って置いたりもするから、64Gの全てが使える事はない。内部のマイコンのファームの出来にも依存する。沢山使えるようになっている方が、将来的に問題を起こさない可能性は高い。なので、オフセットのつかない古い型の方が、信頼度は高いと思う。128Gの方は、119Gぐらいまで使える。119G>58Gx2なので、多分128G買った方が賢い。

 

 問題は、書き込みにかかる時間が2Gで約1分かかる。119G埋めるには、1時間程度で、許容範囲ではある。もしもfat32だと、運が良くてその倍。運が悪いと、もっとかかる。クラスターが小さいと、使用率が100%に近くなった時、一気に遅くなったりする。フォーマットした後に、消去などをしなければ大丈夫な事は多いけど、exFATで32Mのクラスターに勝るものはない。

 

 その場合だと、ほぼ100%使ったとしても、2Gで約1分の書き込み時間。ここまで使い倒しても、問題はない。以前fat32で書き込んだ時、10分経っても終わらなかった事がある。原理的に常にその危険性はある。SDカードには、exFATが最適という話。

f:id:xx3stksm:20200518222906j:plain