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

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

ゴボウ抜かれた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サンプリングは無しかなあ、と思うけど。技術論としてはどうやら必要。
   

 

 

 

デジタルフィルターとは。見渡せば LPFもHPFも なかりけり デジタル世界の 輪廻の宿世。

 今のオーディオは完全にデジタル化しているので、特殊な自作機器を除いてほぼ全ての再生系は、DSMとかデジタルフィルターを経由して元のアナログの音になっている。DSMは一言で言ってしまうと、捨てればPCM戻せばDSM。本来はありがたくない量子化ノイズを、PCMでは捨てる。DSMではNFBで入力に戻して再利用する。結果として、捨てる量子化ノイズは1ビットであってもほとんどゼロだから、まともな音になる。

 

 ノイズシェービングだとかオーバーサンプリングとかは、そのための方法論の一つにすぎないので、場合によってはなくてもDSMは動作する。NFBがない場合、入力と出力は同じになるので全く動作しない。量子化ノイズを作ってくれる量子化器が必ず必要になる。そういう説明がされることはほとんどないと思うけど、実際にFPGADSMを実装する場合、北極星のように目的地を照らすのはそういう事実。

 

 デジタルフィルターを一言で言うと、どうなんだろう。周期性の呪縛から如何にして逃れるのか、だろか。窓関数は全く考える必要がない。役に立たないし難し過ぎて理解できない。デジタルフィルターを無限世界から有限世界に引きずり降ろそうとするならば、窓関数が必要になるのかも。コンピューターは有限データしか扱えないので、最初から有限でのみ考えれば窓関数は不要。それが賢い。

 

 一番簡単なデジタルフィルターは移動平均。足して2で割る。2点の移動平均ならば、(x[n]+x[n-1])/2というやつ。最初から有限データなので、窓関数という概念は全く不要。これは単純でありながら、色々な応用が効くしリンギングはしない。インパルス応答が、0,0,0,5,0,5,0,0なので当然。方形波を通すと、基本はLPFなので少しなまる。

f:id:xx3stksm:20190314195937j:plain

 とても立派な線形位相デジタルフィルターで、ややこしい数学は一切不要。特性が些か特殊であるのが難点だけど、これは幾つかの組み合わせで、普通のFIRでは到達不可能なプリとポストのエコーなし特性を作れる。それを設計するソフトはまず存在しないので、エクセルとかscilabとかで自作するしかないだろうけど。

 

 デジタルフィルターの本質的意味合いは、全てこの2点の移動平均フィルターに含まれている。たった2個の足し算なので解析も容易。デジタルフィルターのロゼッタストーンのようなもの。エベレストの無酸素登頂なみに高嶺の花の、オーバーサンプリングの本当の意味合いも、ここから昇って行くならば攻略可能。窓関数には秒速30m/sの風が吹いている。

 

 この移動平均は、サンプリング周波数の1周期分だけ遅れたデータの足し算に相当する。普通のFIRは、1024のタップならば 1023周期分までのデータに係数を付けて足し算する。この移動平均は係数も1なのでとても単純。ちょっと図を描いてみると、足した結果は容易に計算できる。

f:id:xx3stksm:20190314201351j:plain

 

 こんな感じ。任意の位置からθ、つまりは1/fsの時間だけ遅れたデータを足す。fsはサンプリング周波数。この単純な計算にはとても大きな意味がある。もしも元の周波数が100Hzぐらいで、サンプリング周波数が96kHzだとすると、1/fsの時間ではほとんどデータに変化はない。演算で結果に変化は出ない。直流であれば、常に同じ。

 

 もしも48kHzになると、世界は一変する。48kHzを96kHzでサンプリングすると、2点しかない。別の言い方をすると、θはπ。sin(x)とsin(x+π)を足して2で割ると答はゼロ。周波数特性を持っている。これはsinの公式からcos(θ/2)*sin(x+θ/2)なので、θがπならば当然ゼロになる。24kHzならばθがπ/2なので、振幅は0.707になって少しの位相差が出る。

 

f:id:xx3stksm:20190314202415j:plain

f:id:xx3stksm:20190314202444j:plain

f:id:xx3stksm:20190314202500j:plain

 上から24kHz、38.4kHz、43.2kHz。48kHzならばゼロ。つまり2点の移動平均は、LPFのように機能している。アナログと違うのは6dB/octの倍数にはならなくて、サンプリング周波数の半分に向かって奈落の底に落ち込む。ではこれがLPFかというならば、全く違う。そこがデジタルフィルターの基本で一番重要な点で、オーバーサンプリングが必要になる唯一の理由。デジタルフィルターには、BPFしか存在しない。

 

 無限に高いサンプリング周波数を用意するならば、sinc関数を実在できるようにLPFやHPFも可能。でもそれは実現不能なので、LPFやHPFはデジタルフィルターでは作れない。とは言っても、rephaseのようなソフトではクロスオーバー用のLPFやHPFを作っている。氷山は4/5が水に沈んでいるそうだけど、デジタルフィルターは無限に見えない所に隠れている。LPFやHPFと思っているのは、所詮BPF。

 

 この一見するとLPFぽいフィルターの特性は、cos(θ/2)*sin(x+θ/2)。後のsinは位相変化しているだけなので振幅特性に関しては無視できる。前のcos(θ/2)の絶対値が振幅特性。こんな感じ。

f:id:xx3stksm:20190314203813j:plain


 cos(θ/2)はもちろん周期関数なので、同じ特性を繰り返す。なのでBPFにしかならない。アナログのように落ちっ放しの特性は、デジタルフィルターでは実現不能無限を許すのであれば可能であるけれど、実装できないものは考える必要がないし、頭が混乱するだけで有害。もしもfsが無限大ならばfs/2も無限大なので、LPFは可能。でも全くの無意味。

 

 2点の移動平均だから周期的かというならば、そうではない。1024のタップであってもその振幅特性はsinとcosの級数になる。sinとcosは周期的なので同じ結果。ではrephaseの特性が嘘かというならば、fs/2までは正しい。その上は神のみぞ知る。幸運にも、その上は悪さをしない場合が多いので、考慮する必要があまりないというだけ。

 

 問題になるのは、最終的にアナログに戻すreconstruction filterの所。もしもrephaseのLPFが本当のLPFならば、高い周波数は全て落ちているので、高い周波数のイメージというのは無くなっている筈。でもなくなっていないから、reconstruction filterが必要になる。これは多分どうしようもない。 

f:id:xx3stksm:20190314204932j:plain

 

 96kHzのサンプリングで12kHzを作ると、8個のサンプリングなのでこうなる。白い点がサンプリング。FFTでは12kHzの所に一本スペクトルが出るだけ。これは便宜的には良いけれども、正しくはない。本来のDACの出力は、零次ホールド特性なので、こうなっている。

f:id:xx3stksm:20190314205230j:plain

 これも標本化定理としては正しくなくて、それはSSRCで周波数変換をデジタル領域でしようとすると問題になるけれど、reconstruction filterでは問題にならない。ただ見ての通り、こうするしかないのだろうけれど、このFFTは宜しくない。このように階段的な波形は、多くの高調波を含む。この例だと、(n*96-12)kHzと(n*96+12)kHzがある。なので階段になっている。

 

 これは96kHzサンプリングなので、基本的に48kHzまでしか扱えない。だからそれより上の高調波の表示が出来ない。でも出来ないだけであって、ない訳ではない。実際のハードウエアであれば、スペアナで表示できる。こんな感じ。96kHz毎に永遠に並ぶ。

f:id:xx3stksm:20180712203720j:plain

 

 でも一般的には、上の隠れて見えない所に沢山の成分があるとは気が付かない。普通は理想フィルターで補完した綺麗な正弦波の方を出すので、まず分からない。reconstruction filterは、この普段は表示していない成分を落とすためにある。但し、周期性の呪縛があるので、この状態ではどう足掻いてもデジタルフィルターで高調波は取れない。

 

 オーバーサンプリングは、酸素ボンベのように不可能を可能にする。単純な理屈。無限は無理としても、8倍ぐらいにfsを上げるのは難しい話ではない。そうすると実質的なfs/2が8倍になるので、LPF的な領域も8倍になる。reconstruction filterのオーバーサンプリングには、その意味しかない。高調波のイメージをデジタル的に取りたい、そのためにかりそめの高いサンプリング周波数を作っている。こんな具合に随分と高調波をデジタル的に落とせる。

f:id:xx3stksm:20180712204809j:plain

 DSMで使うオーバーサンプリングは、ノイズシェービングが主な理由なので、reconstruction filterとは意味合いが違う。ADCのオーバーサンプリングも、ノイズシェービングでS/Nを上げる事と、音声用であればアナログのフィルターをほぼなくせる事に意味がある。そういう意味では、reconstruction filterのオーバーサンプリングは異質かも。

 

 いずれにしてもデジタルフィルターは必ず周期性を持つので、使う場所次第ではそこを考慮する必要がある。道具としてデジタルフィルターを使うのであれば、窓関数由来の発想は捨てた方が良い。数学としての辻褄は合うとしても、全く実用にはならない。それを言うと、sinc関数が実在しないのだから標本化定理の現実への実装は無理、というような話になってしまう。

 

 工学は単純。まずは基本的なモデルで図を描く。無限の計算はしない。無限にまつわる方法論は取らない。デジタルフィルターとは、2点の移動平均の応用にしか過ぎない。それを解析するならば、話は終わり。現実世界で応用できるようになる。

 

 

 

 

もっと低音を。人の耳に合わせたFFT長は、かなり短い。

 音声信号の厄介な所は、あんまり定常状態というものがない。ビデオ信号の方がまだ定常信号と実際の映像とに相関性がある。良く使われる1kHzでの歪を測ったところで、1kHzの音を大層な金をかけた装置で聞く人なんていない。聞くのは生の人間が演奏している楽器であったり生の声。シンセサイザーならば、少しは定常状態に近いとしても。

 

 定常状態とは、1kHzが同じ振幅でずっと続いている場合。生の楽器で、同じ音の大きさを保つことはまずありえない。音程は同じとしても。なので音声装置の解析に関して1kHzの定常状態は現実と乖離していて、測定結果はあまり当てにならない。聴感と測定結果との間に相関が薄いのは、一つにはこれが原因。

 

 定常状態でない場合、過渡応答と言ったりもするけれど、音声に関しては過渡応答が普通であって、そっちを特別扱いする理由は測定側の都合だけ。過渡応答というぐらいなので、何を基準としたら良いかが分からない。方形波の立ち上がりなんかを過渡応答と言ったりもするけれど、それは定常状態と大差がない。インパルスも似たようなもの。要は、何を見たいのがをハッキリさせる事。

 

f:id:xx3stksm:20190218181354j:plain

 例えばこういう信号がある。750Hzのサイン波を0.7秒ぐらいでonにしたりoffにしたり。これを96kHzサンプリングして、128kのFFTサイズで見るとこうなる。どんなFFTソフトでもこうなる。750Hzの所に山が出来るのはまあ当然。しかしそれ以外に、レベルは落ちていくとしても、全ての周波数を含むことになる。

 

 これはFFT的には正しい。人の耳的には間違っている。何故かと言えば、この信号は無音、インパルスのようなブッ、750Hzのサイン波、インパルスのようなブッ、の繰り返しとして聞こえるので。FFTはそれらを全部いっしょこた、にしてしまっている。でもそれはFFTではなくて設定の問題。

 

 96kHzサンプリングの128kとは、128/96≒1.3秒での周波数解析という意味。それはほぼこのバースト信号の一周期なので、人の耳に聞こえる音をまとめて解析する。なのでその範囲であるならば、結果は正しい。無音からサイン波に変わる所と、サイン波から無音に変わる所は、音からも明らかなようにほぼインパルスに一致する。つまり、全ての周波数成分を含むので、その結果上のようなFFT結果になる。

 

 定常状態であれば、特にFFTの長さは考える必要がない。分解能が変わるだけなので、周波数成分が大きく変わる事はない。しかし現実の音を人の耳に合わせて解析するのであれば、人の耳の特性に近いFFTの長さにしなければ、いっしょくた状態で訳が分からなくなる。どのぐらいが適当なのかは、個人差もあるので何とも。

 

 簡単に調べるのであれば、間隔を短くしていく。0.7秒のバーストでは明らかに無音とサイン波やインパルスの部分が分かる。0.05秒(10Hz)のバーストにすると、そろそろ耳で聞いても、いっしょくたに近くなる。まだ個々の音として聞けるけど。更に三倍ぐらい上げると、そろそろ耳で聞いてもいっしょくたで、8192の結果と同じになる。この信号は、WaveGenで簡単に作れる。

 

f:id:xx3stksm:20190218183011j:plain

 

 という訳で、0.05秒(10Hz)のバーストを個々の音として解析できるFFTの長さはというと、4096。黄色の縦線の前後が解析データ。

f:id:xx3stksm:20190218183511j:plain

 見ての通り、同じ信号に対してFFTの長さだけを変えると、8192ではいっしょくた。4096では個々の音を分離できる。時間にすると、4096/96000≒40mS。音の大きさが変わる所では、全く違うスペクトルになる。この場合は、小さ目の750Hz、インパルスのブッ、大きめ750Hz、インパルスのブッ、の繰り返しが辛うじて聞き取れる。その限界値が、4096のFFT長さ。

f:id:xx3stksm:20190218183748j:plain


 勿論2048も可だけど、4096の分解能の約25Hzは普通の人の音感に近そうなので、ひとまず4096。これはあくまでも周期の話なので、48kHzのサンプリングであれば、2048になる。約25Hzの分解能になるためのFFT長という意味。96kHzであれば4096ぐらいであろうと推測できる。つまり、普通の音声信号(定常状態ではない)を耳の特性に近い形で解析するのであれば、96kHzサンプリングならば4096ぐらいが適当。窓関数はハンでよい。この例は、ソフト解析との整合性もあって750=96000/128を使っているので、レクタンギュラー(窓関数なし)も可能。

 

 普通の音声信号は、定常状態とは大きく違っていて、低い方は底なし。定常状態の750Hzの基本波であれば、その倍音成分のみが存在するけれど、大きさが一定の音は現実には存在しない。ピアノにしろバイオリンにしろ。ピチカートならば、大きさの変化にこそ意味がある。その場合は、基本波の周波数とは無関係に、低い方は直流まで底なし。どうしてそうなるかは、簡単な例で直感的に分かる。

 

f:id:xx3stksm:20190218185518j:plain

 

 16Hzのサイン波と1Hzの矩形波を考える。茶色がサイン、赤が矩形波。二つを掛け算したのが水色。8サイクルが無音で、8サイクルが16Hzになる。極端な振幅の変化。水色の周波数成分は、計算するまでもなく見当がつく。矩形波は、1Hz、3Hz、5Hz・・・で出来ているので、1Hzとの掛け算で16±1、3Hzとの掛け算で16±3、5Hzとの掛け算で16±5、・・・。それぞれのレベルは1/nで落ちるので、16±1が一番大きくて16±3がその次。以下はその繰り返し。16±15、の時に1Hzが出る。

 

 下はFFTでの解析結果。直感での計算とほぼ同じ。16Hzだからその倍数しか出ないというのは幻想。それは現実では全く有り得ない定常状態での話。振幅が変わってしまえば、基本波に相当するのはその一周期となり、元の16Hzとは無関係。それは最も高い山の位置に関与するのみ。水色のようなバースト波形の再現には、1Hzまでが必要という事。元が160Hzになると、1Hzのレベルは1/10になるだろうけれど、それでも結構高いレベル。

 

 この振幅の変化とは、別の見方をすると窓関数そのもの。慣例的にFFTというけれど正しくはDFFTで、FFTとDFFTは全くの別物。コンピューターでFFTは扱えない。FFTは無限の数を扱うのでコンピューターにそれは無理。工学で使うのはDFFTしかないと思う。FFTは数学でのみ存在。DFFTは有限の数を扱うので、測定対象には周期性が必須。FFTなら基本的に必要ない。

 

 ところが一般の測定対象は、周期性を持たない。定常状態のサイン波でも、特殊な細工をしない限りは持たない。その非周期信号を、周期信号に変えるためにDFFTでは窓関数が必要になる。窓関数は、周期の始まりと終わりを強制的に0にする。それでもって周期性を確保する。測定対象に某かの数値を掛けるので、当然誤差が出る。本来の成分は分からないという事。

 

 しかし上手い具合にその誤差をかなり小さくする窓関数がある。ハンが最も宜しい。他は基本的に考えなくと良いと思う。一番誤差の小さいのがハンだから。赤がハン。周期の初めと終わりがゼロなので、測定対象が何であっても周期性が確保される。しかし元々の茶色の信号の代わりに、水色を解析するのでかなりの誤差が予想される。

f:id:xx3stksm:20190218191708j:plain

 でも、ところがどっこいで、元々の16Hzの他には16±1Hzが出るだけ。実際のFFTはレベルを補正しているので、誤差としては余計な15Hzと17Hzのみになる。これは分解能で決まる話なので、FFT長を大きくすれば、この余計な2つは元の16Hzに限りなく近づいて無視できる。水色の波形で代用してもほとんど問題はない。矩形波を掛けてしまうと、最初の例のように余計なスペクトルの山になる。

 

 なので、もしも実際の楽器での振幅変化がハンのようなコサインであれば、下に広がる事はほとんどない。それは現実にありえないけど、弾き方次第で下の広がりを大きくしたり小さくしたりは可能という話。窓関数ハンの超絶技巧とか。一般論としては、楽器の基本波は目安にしかならない。実際の演奏では、その下に底なしで広がる。電子レンジのチンとか、玄関のチャイムが無機的に聞こえるのは、普通の音はほぼ全て下に広がるのに対して、下に広がる事がないためと思う。

 

 パイプオルガンは、構造的に風の入り切りしかしないので、振幅の変化はほとんどない。そのためか、自然の楽器の中ではシンセサイザーの音に近い感じがする。エスプレシーボというのは、倍音成分は当然として、弾き方次第で決まる下への広がりにも大きく依存すると思う。一時期、神尾真由子のコーチしていた旧ソビエト人のシュトレーゼマンのように怪しい日本語を話す男が、エスプレシーボとは胸を締め付けられる、だと言ってた。

 

 同じコサインでも、2Hzにしてしまうと事情は大きく変わる。こんな感じ。こんな波形は現実にもあって不思議はない。矩形波での振幅変化はまずありえないけど。でも結果は、矩形波と似たようなもの。とても特殊な場合(ハン)を除いて、大抵の窓関数というのか振幅変化はかなりの低い成分を含む。低い方の落ち方がかなり急になるだけ。

 

f:id:xx3stksm:20190218193254j:plain

 

 現実の問題として、仮にこんな信号が記録されていた場合、15Hz以下が無くなるとどうなるかは簡単にシミュレーションできる。単純に上のFFT結果で15Hz以下をゼロにして、逆FFTで時間軸の信号に戻せば良い。

 

f:id:xx3stksm:20190218193850j:plain

 

 こんな感じの寸胴になる。もしも17Hzから上もなくすと、元の16Hzだけの完全な寸胴になるので、下だけならばこんなもんかも。寸胴になると変化が乏しくなるので、やっぱり迫力というようなものは消えるはず。現実の音声信号とは、いわゆる過渡現象の連続で出来ているので、定常状態での解析にはほとんど意味がない。

 

 定常状態での解析でも、ある程度は低い方のスペクトルが分かるとしても、かなり短い時間で出たり消えたりするものだから、本来の耳で聞いた時と同じような結果を出すのは難しい。そして寸胴の音にしないために必要なのは、とにかく底なしで低い方までの再生能力。イコライザーでは意味がないので、広い空間が必要。

 

 それは狭い都会では到底無理な話なので、分かっていても言わないのか、定常状態での解析しかしていないのか。高い方は音源からの距離ですぐになくなるので、なくても実害なし。生での臨場感を決めているのは、底なしに広がる低音だと思う。実感としても、再生が難しいのはパイプオルガンよりもピアノの低音での連打とか、オーケストラの中のコントラバスのピチカート。大きな振幅変化を持つ低音は難しい。
 

 

 

ブラームスのバイオリン協奏曲。エリカ・モリーニのウエストミンスター録音(1956)。

 オーディオ趣味とういうものは、今ではレッドリストにでも載りそうで、いずれ据え置きのステレオはホーローの看板だとかオート三輪とか七輪のような、過去の遺物になって博物館にでも展示されるのかと思う。でもその一つ前の世代のアマチュア無線などは、誰にも知られる事無く安楽死状態だから、昭和の遺物として語られる日があるならば、望外の幸せかもしれない。

 

 一つには場所を専有するし音が近所迷惑にもなるので、都会では難しい。装置自体はデシタル化して格段に進歩しているので、クラシックのオーケストラであっても部屋の広ささえ確保するならば、かなりの質が望める。過去の演奏家のコンサートを聴くことは不可能なので、その意味ではオーディオも捨てたものでない。

 

 改めてそう思ったのがブラームスのバイオリン協奏曲。エリカ・モリーニ(1904)とロジンスキーウエストミンスターでの録音。発売は1959でステレオ音源も出ているので、録音もその頃かなと思う。モノラルとしては最晩年で、最後の一花といった風情。

f:id:xx3stksm:20190111193657j:plain

 こういう過去の録音の多くは、CDでの復刻盤が出ている。これも探せばあるはず。でもそれにはほとんど意味がない。過去に沢山の辛酸をなめて、CDのみならずSACDでも同じ過ちを繰り返して、レコード会社にかなりの額を貢いでしまった。今はeBAYで中古レコードを買って、自作のADCでデジタル化して最新の音声編集ソフトで自分ちの再生装置に合わせて復刻したのを聞いている。

 

 市販品の復刻盤は、標準的な再生環境に合わせて編集している。CDとSACDでは若干の違いがあって、SACDはCDよりも少し古めの装置に合わせてある。昔風のデカいスピーカーを少し意識した編集。なのでオーディオに金をかけている場合は、SACD版の方が良く聞こえる事が多い。間違っても、44kだとかDSDだとかは関係しない。中身が違うので当然音も違うよ、という話。

 

 更に昔風のステレオとなると、もう完全な圏外なので市販品ではとても無理。自分で作るしかない。実際の所、音源を自作しないならば、クラシックのオーケストラを当時のまともな音で聞くのは無理。当時のミキシングは、当然ながら当時の主流の装置に合わせて作られているのだから。昔の音源は昔の装置で聞くのが良いという話は、そういう意味で筋が通っている。

 

 

f:id:xx3stksm:20190111194856j:plain

 

 こういう環境で聞く場合、最近のマイクが乱立したオンマイク録音は耐えられない。個々の楽器は鮮明に聞こえるので、今風の小さなスピーカーでならば良く聞こえる。そのためのオンマイク録音なのだから。アナログ録音かデシタルかには、やはり意味がない。お客さんの再生装置に合わせて録音方法も変わる。それと共にデジタル化したのは事実 であるけれど。

 

 このブラームスは、おそらく指揮者の頭上5mにマイクを置くような、伝統的手法かと思う。個々の楽器の鮮明度は劣るけれど、実際にコンサートホールで聞いている音に近いのはこっち。でもまあバイオリン協奏曲というのは鬼門ではある。ピアノならともかく、バイオリンの音量でホール全体に音は届かない。録音では一種の音響的キュビズムのお蔭で、ソロバイオリンをかなりの音で聞ける。

 

 初めて録音でバイオリン協奏曲を聞いた時、お客さんはたまげた筈。なんとまあハッキリと、バイオリンが響くことよのうと。どっちが良いのか何とも言えない。当時はきっと、その鮮明さが受けただろうなとは思う。コンサートの生と、キュビズムの録音とは全くの別物として捉えていたいたのかなと。

 

 ウエストミンスターというレーベルは、少なくともうちの環境ではモノラルの白眉。ステレオになるとかつての栄光は消えて、RCAの後塵を拝するのみの感があるけど、1950年代前半のモノラル録音に関しては、これ以上のものはない。自分で復刻するのであれば、中古レコードで十分にその真髄が聞ける。大抵の中古レコードは、送料の$20前後と同じぐらいで買える。これも確かその位。

 

 この人はハイフェッツと同じぐらいの時代に、華々しくアメリカでデビューして、天才少女と言われた。多くの他の音楽家と同じように、戦争の影響で故国を離れてアメリカへ。RCAの看板になったハイフェッツと比べると、弱小レーベルのウエストミンスターで、これまたなんとなく理由に想像がつく大手に縁のないロジンスキーとの組み合わせ。名前では些か劣るとしても、中身では全く負けないどころか50年代の録音(1956)としてはピカイチ。

 

 ブラームスの曲はバイオリニストを魅了するようで、多くの名演が残っている。あんまり詳しくないのだけれど、これを聞いていて素人にもアレッと思わせたのがカデンツァ。バイオリン協奏曲には、カデンツァという演奏家の即興に任せるような所が第一楽章の後半にあるそうで、ブラームス本人はここを書いていないので、今は初演したヨアヒム版が多く弾かれるらしい。

 

 一回り位後の世代で、これまた数奇な一生のジネット・ヌヴーもライブを含めて三回ぐらい録音している。彼女のは弾き方以外で特に気にならなかったから、ヨアヒム版だったのかも知れない。エリカ・モリーニは共演者をかなり厳密に選ぶ人だったらしい。カデンツァも相当吟味して選んだろうなと思う。

 

 ブラームスは、師匠のシューマンの未亡人のクララとの経緯や、重くるっしい鉛色の冬空を思い起こさせる作風からして、踏ん切りが悪い。吹っ切れてしまうベートーベンとは、同じドイツ男でもまるで違う。ベルリンフィルのような重々しさはドイツ気質なんだろうけど。うじうじした重苦しさと、ぶっ飛んでる重々しさ。なのでどうもブラームスは好きになれない。

 

 その鬱々とした曇り空から差し込んでくる明るい日差しのように、バイオリンが色彩を付けてくれるならば、ブラームスの重さにも意味は出て来る。彼女のカデンツァは(フーゴ・ヘルマン)、少しハンガリーぽくてロマの響きが何となくある。ヨアヒム版はブラームスが書きそうな旋律で、今一つ面白くない。ブラームスのケツをひっぱたいて活を入れるようなフーゴ版の方がふさわしい。

 

 因みにハイフェッツも書いているらしく、RCAの録音は自作版なのだろうか。聞いてみたけれど、さてヨアヒム版なのかそうでないのかは分からない。この人のRCA録音はどれを聞いても、はよう終わらせて一杯飲みに行こかといった按配で、情緒はない。シベリウスだけは好きだけど。

 

 オーディオ装置にそこそこの金をかけるのであれば、最近の録音は物足りない。江戸時代の絵師に曽我蕭白というバサラ者がいた。彼が言うには、画が欲しいならばワシに頼め、図が欲しいならば円山主水(応挙)が良いと。昔の録音は機材の性能の制約で、写真のような図は得られない。仕方なく人の感性に合わせて少しデフォルメした絵にしてしまう。写実的な図が欲しいのか、些か実物とは違うけれども真に迫った絵が良いのか。

 

 演奏家も昔は絵的だったと思う。絵的な演奏を絵的な録音で。モノラルかステレオかには意味がない。実際のコンサートは多分モノラルだし。デジタルかアナログかも同じく。良質のデジタルは空気のように何の色付けもしない。絵的な録音ならば絵的に、マルチマイクの最新録音ならば高精細の写真のように。それはドキュメンタリーではあっても、絵画とは別のもの。結局の所、再生音に何を求めるのか。画なのか図なのか。

 

DSMの実際の周波数特性を、NTFから計算する。そこそこ実際の値に近い。

 今はもうDSMの計算には幾つかのライブラリーが用意されている筈で、これを一から自分で作る人はまずいない。アルゴリズム自体はほぼ完成されていて、初期のSACDで使っているのに比べると、随分と良くなっている。良いというのは、入力がゼロの時に変なアイドリングパターンを出さないとか、同じ次数やOSRでノイズレベルが低いという意味。SACDはあんまり良くない。

 

 しかしFPGAに実装する場合は少し違う。ソフトウエアと違ってリソースが限られているので、用途に合わせて限りなく特化する必要がある。金に糸目を付けないのならば、大きなサイズのFPGAで解決する手もあるが。デジタルフィルターにしろDSMにしろ、ハードウエア化にはそんな問題が常にある。

 

 参考書籍はあるけれど、中々自分に必要な所を見つけ出すのは難しい。ネット情報も当たり外れが大きい。ここはとても凄い。

PlayPcmWin / Wiki / PCMtoSDM

必要な情報は全てある。MATLABでの計算結果も出ている。本にはそこまで出ていない。結果が欲しければ、MATLABは高いのでpythonで計算するしかない。でも最終的な定数に辿り着くまでには些かの計算が必要。

 

 自分で計算して履歴も残っているけれど、暫くしてから見直すとサッパリ意味が分からない。一日位考えてやっと思いだす。という訳で、備忘録の積りの覚書。

f:id:xx3stksm:20181016194033j:plain

 これがDSMの基本の基本。定数の計算もこれが元になっている。入力信号はそのまま出力に出るようにして、量子化誤差に対するNTFというのを音声帯域で小さくなるようにする。NTF=1/(1-L1(z))

MATLABはsynthesizeNTFで、この関数の零と極を計算してくれる。ここにある。

PlayPcmWin / Code / [r740] /PlayPcmWin/WWOfflineResampler/NTFHzcoeffs.cs

どちらも複素数になる。

 

 この零と極をもつ関数と、実際の回路の係数を一致させれば良い。一番簡単な二次の場合はこうなる。

f:id:xx3stksm:20181213212028j:plain

%o126がL0(z)で、%o131がL1(z)。

f:id:xx3stksm:20181213213045j:plain

 z0,r0,j0,が、MATLABが計算してくれる零と極。次数が上がるとこれが増えてくる。

という按配で最終的に必要なg0,a0,a1が出て来る。ここまで自分でしなくても、g0,a0,a1も出ているので、そのまま有難く使わせて貰って問題はない。

 

 但し、gとaが出ているのは五次までなので、それ以上の七次が欲しければこの計算が必要。七次ともなると、とんでもない数式になるが、maximaが計算するので、二次の延長で数式をほり込んでやればよい。そのために、二次で流れ作業の手順を覚える必要がある。

 

 これを計算するのにはもう一つ意味がある。このNTFの周波数特性を確認したい。これが所謂ノイズシェービングというものなので、どの程度にノイズが抑えられるのかを確かめる。NTFは共にzの二次の分母と分子で出来ている。このzにe^(jωT)を代入すると、その複素数の絶対値が周波数特性となる。

f:id:xx3stksm:20181213214752j:plain

分母の実数が%o3で虚数が%o4。分子の実数が%o13で虚数が%o14。これの絶対値をエクセルで計算させてグラフ化するとこうなる。

f:id:xx3stksm:20181213215015j:plain

 横軸はサンプリング周波数を1として表示。x64のOSRだと、1が3.072MHzで0.1が307.2KHz、0.001が3.072kHzになる。二次の場合、0.1ぐらいまでノイズは上がり続ける。g0で出来る共振点が、0.005(15kHz)あたり。g0という局部帰還を入れると、ない場合の赤に較べると、ノイズシェービングの効きが良くなる。なので入ってる。

 

 けれどもこれは、グラフにあるように直流分に対しての減衰量がゼロにはならない。g0=0の赤ならば、そんな問題は起きない。偶数次の場合にはこの問題があるので、四次であれば二つの局部帰還のうち一つはゼロにした方が良い。それでも十分にノイズは落とせるので。赤の傾きは、二次の理論通り40db/decとなっている。

 

 実際に使う場合、二次ではノイズレベルが高すぎる。計算方法は同じなので、maximaを使って五次で計算させる。昔はこれを手計算でしていたので大変。間違える可能性はあるし、グラフ化するのも大仕事。今は簡単に出来る。これが五次の時の分母。

f:id:xx3stksm:20181214145718j:plain

こっちが分子。

f:id:xx3stksm:20181214145745j:plain

五次なので係数は分母にr0,j0,r1,j1,r2。分子にg0,g1。これを代入してグラフにするとこう。

f:id:xx3stksm:20181214145921j:plain

 五次の場合は、傾きが30dB/octになる。g0とg1で共振点を作ると、共振点なしの緑よりも落ち具合は良くなる。但し、零をDCに持つ項が一次となるので、共振点から上がってきた後は、緑よりも落ちが悪い。FPGAで実装する場合、リソースに余裕がないならば緑の方が遥かに簡単。現実論として、十分なノイズ特性は稼げるので、共振点の必要もない。

 

 シミュレーションは所詮仮説に過ぎないので、実物で確かめる必要がある。これは一ビットの出力なので、実際のデジタルデータをそのままFFTしてしまえば、その特性が分かる。一ビット以外であれば、DACのアナログ出力をアナログフィルター無しで入れるしかない。測れなくはないが、50Ωのプローブが使えないのでS/Nが悪化する。一ビットは楽。

f:id:xx3stksm:20181214151111j:plain

 これはg0とg1がゼロなので緑の特性。下の5MHzスパンが全体像で上が拡大図。シミュレーションでのNTFは、100kHzぐらいで平坦な特性になる。実物もそのあたりで少し飽和し始め、そこに至る間は理論通りに30dB(6dBx5)/octで上がってる。元のデジタル信号は3Vppぐらい。これを50Ωの関係で16dBぐらい落としている。

 

  3Vppは1Vrmsで120dBuVだから、この時に出している12kHzはアッテネーターなしだと120-16-6=98dBuV。実物との差は主にDAC側でのアッテネーター。一ビットは、100%の変調を掛けると必ず発振するので、幾らかのアッテネーターが必ず入る。-6で50%に落とすのは必須。普通は更に2dBぐらい落とす。残りはDAC内のフィルターでの減衰とか誤差。

 

  シミュレーションとの違いは、誤差のEかと思う。これが定数ではないので差が出るのでは。1Mから2Mにかけての成分もそこら辺りから来るのだと思う。でもL0(z)とL1(z)での解析は、相当に正確で十分に実用的。

 

 これは5MHzのスパンになっているけれど、その周期性は明らか。分母と分子の複素数がサインとコサインなので、言うまでもない話ではあるけれど、実物を見ないとこの周期性には気が付かないもの。分数の形になっているIIRであっても、言うまでもなく周期性を持つ。デジタルのシステムは離散システムと言うが、周期性システムと言った方が思い込みは防げる。

 

 アナログのような落ちっ放しのLPFなんてものは、決して実在しない。無限に高いサンプリング周波数を使わない限り。sinc関数はこれを暗黙の裡に想定している。なので現実世界で使おうとすると、思いもよらない所で足をすくわれる。デジタルとは、因果応報の輪廻の如く、必ず繰り返す周期性システム。

 

 おまけにSACDFFT。傾きからして五次ではないと思う。でも少し五次よりも上がり始めが早い感じ。もうずいぶんと昔の規格なので、変調のかけ方がまだ完璧でなかったんだと思う。

f:id:xx3stksm:20181214153441j:plain