Twitter

ハン窓の作り方

FFT処理やグラニュラー処理などでもよくお世話になる窓関数には様々な種類のものがあります。
今回はこれらの中で最もよく使われるものの1つ、ハン窓の作り方を紹介します。

ハン窓は以下の方程式によって作成できます。

[caption id="attachment_1566" align="aligncenter" width="300"]ハン窓の方程式 ハン窓の方程式[/caption]

これをPdのパッチの中でプログラムとして作ってみると以下のようになります。

ハン窓
まず「until」は2048を受け取ると、2048回連続でbangを出力します。そして、カウンターに入っているので0から2047までがカウントされます。
それを「/ 2048」で割っているため出力が0からおよそ1までにスケーリングされます。それに2πである6.2819を掛けて、「cos」オブジェクトに入力することで余弦を算出し、0.5を掛け、その値を0.5から引いています。

このような面倒くさい計算は「expr」にやらせてしまうのも1つの手です。「expr」を使って書くと以下のようになります。
[caption id="attachment_1569" align="aligncenter" width="512"]「expr」による計算 「expr」による計算[/caption]

この例ではhann窓は2048サンプルに固定されていますが、他のサイズの窓も作りたいのでプログラムをより柔軟にしてみましょう。
以下の例では、512、1024、2048などのサンプル数を指定すると、まずArray「hann」のサイズを変更し、その後、カウンターをリセットしてからhann窓の書き込みを行うようにしています。
[caption id="attachment_1570" align="aligncenter" width="543"]様々なサイズを作れるようにする 様々なサイズを作れるようにする[/caption]

この項のパッチをダウンロード

Post a Comment

Your email is kept private. Required fields are marked *