はじめてのサウンドプログラミング3(フーリエ変換とFFT)

2008/09/12

こんにちは。今回は、フーリエ変換についてです。

フーリエ級数
昔々あるところ(フランス)にフーリエという学者がいたそうな。そのフーリエは、周期性のある関数(周期関数)に、ある法則を発見したのだった。

周期関数は、三角関数の和で表すことができる。

つまりどういうことかというと、周期関数は三角関数つまり、正弦波(サイン波)や余弦波(コサイン波)をいくつも重ね合わせることで表現できる。ということです。

これを用いて、周期関数を三角関数の和に分解する変換を「フーリエ変換」と呼びます。
フーリエ変換は連続した点に対して行うものです。しかし、デジタル信号はとびとびの値なので、そのまま適用することはできません。とびとびの値(離散)に対してフーリエ変換を適用したものを、離散フーリエ変換(discrete Fourier transform (DFT))と呼びます。
DFTは便利なのですが、コンピュータにそのまま適用すると少々計算量が多くなってしまいます。そこで、コンピュータに最適化されたアルゴリズムを用いてDFTを行うことが検討されました。それが高速フーリエ変換(Fast Fourier Transform = FFT)です。だから、FFTとはフーリエ変換をデジタル用に適用したものを、計算量を減らして高速にしたものということになります。


さて、FFTを音の信号に対して適用すると何がわかるのでしょうか?結論からいうと、周波数成分に分解することができるのです。音は以前に紹介した3要素の他にも要素があり、そのうちのひとつが周波数成分です。例えば、サイン波の周波数成分はひとつだけです。そのため、非常に澄んだ音になります。しかし、楽器や人間の声などは、いくつもの周波数成分がまじっています。このことが音色に影響して複雑な表情を生み出します。

実際に分解したものを見てみると面白いかと思います。
サンプルはこちら(要Player10)

サイン波と三角波は、波形が似ているため、周波数成分もほとんどかわりません。三角波の方がちょっと別の周波数がまじっているだけです。それに比べると矩形波やのこぎり波は、いくつもの周波数成分がまじっていることがわかります。これが独特の音色を生み出しているわけです。また、もとの周波数をあげていくことで、周波数成分の間隔も開いていくことがわかります。
ノイズの周波数成分はまんべんなくまじっています。

さてさて、いろいろと基礎知識を説明してみました。次回はようやくプログラムに入ります。


自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る