周波数領域の信号を時間領域の波形に変換する.
無し.
周波数領域の信号を時間領域の波形に変換する際に用いる.
典型的な接続例
パラメータ名 |
型 |
デフォルト値 |
単位 |
説明 |
LENGTH |
512 |
[pt] |
FFT長 |
|
ADVANCE |
160 |
[pt] |
シフト長 |
|
SAMPLING_RATE |
16000 |
[Hz] |
サンプリングレート |
|
MIN_FREQUENCY |
125 |
[Hz] |
最小周波数 |
|
MAX_FREQUENCY |
7900 |
[Hz] |
最大周波数 |
|
WINDOW |
HAMMING |
窓関数 |
||
OUTPUT_GAIN |
1.0 |
出力ゲイン |
入力
: Map<int, ObjectRef> 型. ObjectRef は Vector<complex<float> > .
出力
パラメータ
FFT長,他のノード( MultiFFT )と値を合わせる必要がある.
シフト長,他のノード( MultiFFT )と値を合わせる必要がある.
サンプリングレート,他のノードと値を合わせる必要がある.
波形生成時に用いる最小周波数値
波形生成時に用いる最大周波数値
窓関数,HAMMING,RECTANGLE, CONJ から選択
出力ゲイン
入力された周波数領域の信号に対して, 低域4バンド分,および,$\omega _ s/2-100$ [Hz] 以上の周波数ビンについては 0 を代入したのち逆FFTを適用する. 次に,指定された窓をかけ,overlap-add 処理を行う. overlap-add 処理は,フレーム毎に逆変換を行い,時間領域の戻した信号を ずらしながら加算することにより,窓の影響を軽減する手法である. 詳細は,参考文献で挙げているwebページを参照すること. 最後に,得られた時間波形に出力ゲインを乗じて,出力する.
なお,overlap-add 処理を行うために,フレームの先読みをする必要があり, 結果として,このノードは処理系全体に遅延をもたらす. 遅延の大きさは,下記で計算できる.
\begin{equation} delay = \left\{ \begin{array}{@{\, }ll} \left| \mathrm{LENGTH}/\mathrm{ADVANCE} \right| - 1, & {if~ ~ } \mathrm{LENGTH} \, mod\, \mathrm{ADVANCE} \ne 0,\\ \mathrm{LENGTH}/\mathrm{ADVANCE}, & {otherwise}. \end{array} \right. \end{equation} | (175) |
HARK のデフォルトの設定では,LENGTH = 512, ADVANCE = 160 であるので, 遅延は3 [frame],つまり,システム全体に与える遅延は 30 [ms] となる.
(1) http://en.wikipedia.org/wiki/Overlap-add