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

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

デジタルフィルターとは。見渡せば 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点の移動平均の応用にしか過ぎない。それを解析するならば、話は終わり。現実世界で応用できるようになる。