DigitalFilter-Butterworth-Chebycheff

はじめに

C++言語にてデジタルフィルタを作成した。
WAVEファイルを読み込んで、デジタルフィルタに通すようにした。
作成したフィルタは以下。

  • Butterworth
  • Chebycheff

GitHubのリポジトリと全ソースコードのダウンロードは以下URLから行える。


UML

クラス図とシーケンス図を作成した。
以下からダウンロード可能。

UMLの作成には無償のUMLモデリングツールastah communityを使用している。

クラスやメソッドの説明はdoxygenで生成した。


ビルド


コマンド

Unix系のOSでビルドするのを想定している。

以下コマンドが必要。

g++
make

make

zipファイルを解凍

コマンドラインからカレントディレクトリの移動

makeを実行

%unzip DigitalFilter-master.zip
%cd ./source
%make

実行ファイル生成

以下の実行ファイルが出来上がる。

myfilter

使用方法

使用方法は以下を参照。

%./myfilter [WAVEファイル名] [フィルタ種類]  

フィルタ種類は以下の数値を指定する。

  • 0 : Butterworth ローパスフィルタ
  • 1 : Butterworth バンドパスフィルタ
  • 2 : Butterworth ハイパスフィルタ
  • 3 : Chebycheff ローパスフィルタ
  • 4 : Chebycheff バンドパスフィルタ
  • 5 : Chebycheff ハイパスフィルタ

設定ファイル

各フィルタの設定値は以下のファイルに記載されている。

./config/ButterworthLowPassFilter.conf
./config/ButterworthBandPassFilter.conf
./config/ButterworthHighPassFilter.conf
./config/ChebycheffLowPassFilter.conf
./config/ChebycheffBandPassFilter.conf
./config/ChebycheffHighPassFilter.conf

Butterworthフィルタ

ホワイトノイズをButterworthフィルタに通した結果を周波数解析した。

ローパスフィルタ

設定

Butterworthローパスフィルタの設定値は、以下のファイルから読み込む。

./config/ButterworthLowPassFilter.conf

フィルタの設定は、デフォルトでは以下のようにした。

  • カットオフ周波数: 400[Hz]
  • 1オクターブの減衰率: -48[db/oct]

Butterworth Low-pass -48dB/oct

バンドパスフィルタ

設定

Butterworthバンドパスフィルタの設定値は、以下のファイルから読み込む。

./config/ButterworthBandPassFilter.conf

フィルタの設定は、デフォルトでは以下のようにした。

  • カットオフ周波数: 400[Hz]
  • カットオフ周波数: 2000[Hz]
  • 1オクターブの減衰率: -48[db/oct]

Butterworth Band-pass -48dB/oct

ハイパスフィルタ

設定

Butterworthハイパスフィルタの設定値は、以下のファイルから読み込む。

./config/ButterworthHighPassFilter.conf

フィルタの設定は、デフォルトでは以下のようにした。

  • カットオフ周波数: 2000[Hz]
  • 1オクターブの減衰率: -48[db/oct]

Butterworth High-pass -48dB/oct


Chebycheffフィルタ

ホワイトノイズをButterworthフィルタに通した結果を周波数解析した。

ローパスフィルタ

設定

Chebycheffローパスフィルタの設定値は、以下のファイルから読み込む。

./config/ChebycheffLowPassFilter.conf

フィルタの設定は、デフォルトでは以下のようにした。

  • カットオフ周波数: 400[Hz]
  • 1オクターブの減衰率: -48[db/oct]

Chebycheff Low-pass -48dB/oct

バンドパスフィルタ

設定

Chebycheffバンドパスフィルタの設定値は、以下のファイルから読み込む。

./config/ChebycheffBandPassFilter.conf

フィルタの設定は、デフォルトでは以下のようにした。

  • カットオフ周波数: 400[Hz]
  • カットオフ周波数: 2000[Hz]
  • 1オクターブの減衰率: -48[db/oct]

Chebycheff Band-pass -48dB/oct

ハイパスフィルタ

設定

Chebycheffハイパスフィルタの設定値は、以下のファイルから読み込む。

./config/ChebycheffHighPassFilter.conf

フィルタの設定は、デフォルトでは以下のようにした。

  • カットオフ周波数: 2000[Hz]
  • 1オクターブの減衰率: -48[db/oct]

Chebycheff High-pass -48dB/oct


参考情報

ホワイトノイズ

ホワイトノイズを周波数解析した。
ホワイトノイズは全ての周波数に対して同じ強度となる性質を持っている。
その為、ホワイトノイズをフィルタに通すことによって、フィルタの性能を確認することができる。
whitenoise

ホワイトノイズのファイルは、以下のサイトから借用した。
High Quality White Noise | Play & Download .wav .mp3 Audio Files

周波数解析

周波数解析には音声編集ソフトWavePadというアプリケーションを利用した。
以下のサイトからダウンローが可能。
WavePad 音声編集ソフト

デジタルフィルタ

サイト

デジタルフィルタに関しては以下サイトの実用ディジタル信号処理講座 第3章 デジタルフィルタの基礎を参考にした。
音響情報研究室

書籍

以下の書籍を参考にした。
「デジタルフィルタ (ビギナーズ)」 中村 尚五 (著)