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

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

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

デジタルのシステムは、完全に帯域制限されているのが前提なので、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サンプリングは無しかなあ、と思うけど。技術論としてはどうやら必要。