ハン窓の作り方

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

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

ハン窓の方程式
ハン窓の方程式

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

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

このような面倒くさい計算は「expr」にやらせてしまうのも1つの手です。「expr」を使って書くと以下のようになります。

「expr」による計算
「expr」による計算

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

様々なサイズを作れるようにする
様々なサイズを作れるようにする

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください