コラム31 ラズベリーパイでFIRフィルタを実行する


●ラズベリーパイとOpenCVの準備

 本コラムではデジタルフィルタの周波数特性を計算するC言語ソースコードを
ラズベリーパイで実行します。また特性を描画するためにOpenCVコラム16参照)というライブラリを使用します。


■ラズベリーパイでコンパイルして実行する

 C言語で書かれたソースコードのコンパイルには
gcc(GNU Compiler Collection)を使用します。gccはラズベリーパイ(正確にはRasbianというOS)に含まれています。


●ソースコードのダウンロード

 ラズベリーパイをネット接続してWeb Browserを開き、このZIPファイルをダウンロードします。その後Terminalを開き、Downloadsディレクトリに行って次のように解凍します。

cd ~/Downloads
unzip chap3.zip

 するとchap3というディレクトリが出来るので次のようにデスクトップに移動します。

mv chap3 ../Desktop
cd ~/Desktop/chap3


●C言語で書かれたソースのコンパイル

 chap3ディレクトリにデジタルフィルタの周波数特性を計算するソースコード(firexec.c)があるので次のようにコンパイルします。(*1)(*2)

gcc `pkg-config --cflags opencv` firexec.c -o firexec `pkg-config --libs opencv`

(*1)`pkg-config ... opencv`を囲むキャラクタ(``)はクォーテーションマークではなく、
バッククオート。本サイトからコピー&ペーストすると良い。

(*2)OpenCVをインストールしないとエラーになります(コラム16にインストール手順)。


●周波数特性の計算と描画

 エラーなしで通ったら次のように実行します。

./firexec lpf100tap.txt DING.wav


●lpf100tap.txtの係数でFIRフィルタを実行

 図3-21のようなウインドウが現れます。上が入力、下がフィルタの出力です。
低域通過特性であることが分かります。


 図3-21 波形が滑らかになっている


●DING.wavがフィルタリングされてout.wavが生成される

 ウインドウ上で何かキーを押すか、Terminal上でCtrl+Cでアプリケーションは終了します。out.wavというファイルが生成されているので、ファイルマネージャーで図3-22のようにダブルクリックして再生してみましょう。


 図3-22 音が柔らかくなっているのを確認


●hpf100tap.txtの係数でFIRフィルタを実行

 他のTXTファイルでも試してみましょう。図2-135はhpf100tap.txtで実行した結果です。
高域通過特性を持っているのが分かります。


 図3-23 高周波成分だけが残る


 周波数特性の計算方法、Cソース(firexec.c)の説明に関してはコラム32を参照してください。


目次へ戻る