まだ立体音響なんてやってるんですか?

バイノーラルとか、サラウンドとかを考えてみる。

戻し切り:分析合成フィルタ

刃物の切る技で「戻し切り」っていうのがあるそうです。
野菜の繊維を傷つけることなく切れば、切った野菜が元通りくっつくという。
るろうに剣心が包丁の試し切りで大根切って戻してたアレです。)

そんなことが現実に刃物で出来るかは寡聞にして知りませんが、
音の信号処理ではよく似たような処理をします。

具体的には、低域から高域まで入っている全帯域の信号を
低域、中域、高域のようにいくつかのサブバンドに分割してなんらかの処理をしたあと、
それらをくっつけてまたもとの全帯域の信号に戻すというものです。

例えば、マルチバンドコンプレッサは、音をいくつかのバンドに分けてそれぞれコンプレッションしたあと、またそれらを足しています。

ここで、信号を帯域ごとに分けて取り出すにはハイパスフィルタ(HPF)、ローパスフィルタ(LPF),バンドパスフィルタ(BPF)などのイコライザを使います。
これらのフィルタを使って、帯域を分割して処理をしたあと、それらの信号を足して、もとの全帯域の信号に直すわけですね。

ここで、注意しなければならないのは、フィルタによる位相の変化です。

例えば、Protoolsのプラグインでやってみましょう。


1.ホワイトノイズにLPF(1kHz,12dB/oct)をかけて、低域だけの音を取り出します。
f:id:onnat:20131227021105p:plain


2.今度はホワイトノイズにHPF(1kHz,12dB/oct)をかけます。高域だけの音を取り出します。
f:id:onnat:20131227021139p:plain



3.それをコンプなどの処理をせず、そのまま足せば、元のホワイトノイズに戻ってるはず....
f:id:onnat:20131227023920p:plain

1kHzにノッチが出来てる。。。
なんで!!!

それは、低域だけ取り出した音と高域だけ取り出した音とでは、分割した周波数で位相が逆転するからです。

じゃあどうすれば、元のホワイトノイズに戻るかっていうと、
もう一度同じイコライザをかけて、逆になった位相をまた逆にして元に戻してあげればいいのです。

つまり
4.さっきの低域だけ取り出した音に、もう一度このLPF(1kHz,12dB/oct)をかける。
5.そして、高域だけ取り出した音に、もう一度このHPF(1kHz,12dB/oct)をかける。

同じ処理を重ねているだけなので、各バンドの振幅特性(周波数特性)は変わりません。

6.ところが、さっきと同じように、その二つを足すと....
f:id:onnat:20131227024857p:plain
1kHzのノッチが消えて、ホワイトノイズのフラットな特性に戻っています。

バンド分割のフィルタリングによる位相変化を防ぐために、
フィルタリングを二段がけにするのです。

最初にかけた1段目の分割するためのフィルターを分析フィルタ(Analysys Filter),
そして位相を元に戻すためにかけた2段目のフィルタを合成フィルタ(Synthesis Filter)と呼ばれています。二つセットで使う場合には、分析合成フィルタ(Analysys/Synthesis Filter)となります。

マルチバンドコンプなどの場合には、コンプ処理の前に分析フィルタでバンド分割をして、
コンプ処理をそれぞれ行い、処理後に合成フィルタを通し、位相を合わせているんですね。

Maxによる分析合成フィルタのパッチを作ってみました。

f:id:onnat:20131227025653p:plain
スペクトログラムが二リア軸なので、10kHzに設定しています。
最初にバンド分割(分析フィルタ)を通した信号を足しただけでは、バンドの分割周波数にノッチができています。
しかし、もう一度同じフィルタ(合成フィルタ)を通すことで、そのノッチが消えています。


今回、ProtoolsのフィルターQ値は12dB/octで実験しましたが、他のQ値ではどうなるか。
あるいは、リニアフェイズEQなどはどうなるのか。

そのへんはまた時間あったら書きますが、興味あったら調べてみてね。