フィルターについての概要

スポンサーリンク

エフェクターの一つとしてまずフィルターFilterを作りたいと思います。フィルターとは原音の周波数帯の一部を遮断するものです。

ローパスフィルターとハイパスフィルター

よく使われるフィルターの種類にローパスフィルター Low Pass Filterとハイパスフィルター High Pass Filterがあります。ローパスフィルターは低い周波数帯をパス pass、つまり通過させ高い周波数帯を遮断します。ハイパスフィルターは逆に高い周波数帯を通過させ低い周波数帯を遮断させます。

このほかにもある範囲の周波数帯だけ通過させそれより高い周波数帯と低い周波数帯の両方を遮断させるものをバンドパスフィルター Band Pass Filter、逆にある範囲の周波数帯だけ遮断し高い周波数帯と低い周波数帯を通過させるものをバンドエリミネーションフィルター Band Elimination Filterといいます。

FIRフィルターとIIRフィルター

フィルターの実装方法に違いによって名前があります。FIRとはFinite impulse responseの略で「有限インパルス応答」といい読み込んだ過去の原音のサンプルを元に遮断を行います。

一方IIRとはInfinite impulse responseの略で「無限インパルス応答」といい読み込んだ過去の原音のサンプルとフィルターされた過去のサンプルの両方を使って遮断を行います。

FIRは過去の履歴を使いきれば出力は終わりますがIIRはフィルターされ出力された音がまた入力に使われるので出力の終わりはないことになります。実際には適宜出力は中断するようにします。

フィルターの次数

過去の履歴をいくつ使うかを表すのが次数になります。過去2履歴分のサンプルを使うのであれば2次と呼びます。

一般に次数が高いと遮断性が高くなります。高い遮断性とはある周波数の少し外側で急激に遮断されそのすぐ内側は遮断されず通過させる状態を言います。ただ次数を高くすると計算に時間がかかってしまいますのでフィルターの性能を高くするにはそれだけ高い処理能力が必要ということになります。

FIRは原音のサンプルのみ使うため一般にIIRより高い次数を必要とします。IIRは次数が少なくて済む分処理が早く高い性能を実現できます。

アナログフィルターとデジタルフィルター

フィルターはもともとはアナログの回路で実現されていましたがコンピューターで処理するためデジタルで同様の効果を発揮する理論が作られました。この詳細は順をおって説明すると本になるほどの量があるのでここではJavaでの実装に必要な部分だけみていくことにします。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。