Wave信号を FFT(Fast Fourier Transform)変換の選択した範囲を フィルタとして IFFT(逆FFT変換)で Wave信号に再生して 倍音の`うなり'を視覚的に捉えて見ます。
(※改訂履歴:
v1.0.4['14/11/05] HTML5版を追加しました。
HTML5版です。
v1.0.3['12/12/08] cssファイルを別にしました。
v1.0.2['12/11/11]
ReadWave.javaのmonoとStereoの切替えの不具合を訂正しました。
v1.0.1['12/11/09] A(1)キーの例を削除しました。
v1.0['10/11/29] IFFT(逆FFT変換)を使用して
フィルタ(FIR.java)をなくしました。
v0.9.1['07/11/29] ReadWave.java(v0.2)に修正しました。
v0.9['07/08/31]
フィルタ部分を別クラス(FIR.java)にしました。
v0.8['06/11/02]
Hanning窓で[Java Pitch(JP)]の精度となりました。etc.
v0.7['05/09/10] Waveファイルの読み込み(クラス)を別にしました。
v0.6['05/08/31] FFTを変更しました。
周波数の計算方法を変更しました。
v0.5['04/02/21]
S・M・LでJava画面のサイズを変更出来るようになりました。
v0.4['04/02/08]
時間窓の選択をポップアップから普通の選択に変更しました。
v0.3['03/02/02] "Java FFT de Filter"から
"Java FFT to Filter"と改名しました。
信号のディジタルフィルタ(FIR)処理が行えるようになりました。
v0.2 [Band]として選択した周波数帯のみを
信号波形として再生して見ます。
(v0.3で FIRフィルタに変わりました)
FFT の時間窓を切替えられるようにしました)
上段上 テキストフィールド:[Wave] では
[ 25% 0.37/1.50[sec] ] 表示している部分の割合(%)と
その時間と全体の時間です。
[3DFFT | 2DFFT | F.F. | Peak] では [ 2487[Hz] 1.50[sec] ]
カーソル位置の周波数(小数点以下は切捨て)と全体の時間です。
[FFT_]の時は Waveファイルのサンプリング周波数・データ数
(・ラベル名)です。
[ a110.wav ]セレクター:Waveファイルを選択します。
[ 12 ]セレクター: FFTのサンプル数です。
[ 1/1 ]セレクター:[3DFFT | 2DFFT]で FFTのシフト量を サンプル数の分数で選択します。(1/1 1/2 1/4 1/8)
上段下「 F.F. (FFT Filter)」ボタン:
[3DFFT | 2DFFT]で選択した範囲を
IFFT(逆FFT変換)で Wave信号に再現します。
IFFTでは サンプル数の1/2で重ね合わせを行っています。
[窓関数] Hanning・Hammingで滑らかに継ります。
[ 257 ]セレクター:スペクトルの帯域幅を選択します。
画面下にその時の帯域周波数を表示しています。
[ 1 ]の時が スペクトルの最小分解能です。
「< | >」ボタン:[3DFFT | 2DFFT | F.F.]の時は スペクトル帯を・[Peak]では 時間帯を一つずつ上下します。
[ Gauss ]セレクター:FFTの窓関数(Window)を選択します。
左側「 Wave 」ボタン:Wave信号の波形を表示します。
「 3DFFT 」ボタン:三次元の FFTスペクトルを表示します。
「 2DFFT 」ボタン:二次元で FFTスペクトルを表示します。
「 FFT_ 」ボタン:普通に FFTスペクトルを表示します。
「 Peak 」ボタン: スペクトルのピーク(Peak)があれば表示します。
画面右 スライダー:[3DFFT] ではグラフの傾きを
[2DFFT]では上下の広がりを変更します。
[Peak]では 倍音列のはじまりの基音(Fundamental)を選びます。
倍音列のキーは赤色で表示されます。
画面右「 + | - 」ボタン:グラフの振幅(信号の高さ) を上下します。
「 < | > 」ボタン:[Wave | F.F.]では
信号の表示範囲を縮小・拡大します。
[3DFFT | 2DFFT | FFT_] ではスペクトル周波数を
1/2・x2倍します。
画面下 スライダー:[Wave | F.F.]では
Waveデータの表示位置を表します。
[3DFFT | 2DFFT] ではグラフの広がりを変更します。
[FFT_]では スライドバーはサンプル数の幅で
Waveデータの位置を表します。
[Peak]では サンプリングのクリッピングレベルを
(赤色のラインで表示しています)
上下します。
[3DFFT | 2DFFT | Peak]ではマウスの上下グリッドで
周波数帯域が上下します。
カーソル位置のスペクトルは白色で表示されます。
又 左右のグリッドで 時間帯が左右に変わります。
カーソル位置は黄色で表示されます。
[3DFFT | 2DFFT]表示画面で 左から右が時間軸[sec]で 上から下が周波数[Hz]です。
[2DFFT]表示で 画面右上に周波数帯の広さの %と 全体の周波数から表示されている範囲の %を表示しています。
Sweep信号(サンプリング周波数 11025[Hz]・1.0[sec]・
約10〜4200[Hz])で F.F.の動作を確認してみます。
左が Sweep信号で 右が幅 約 86[Hz]程で帯域通過を行った
FFT filter(F.F.)の結果です。
では「続 割振りについて (Laying the bearings #2)」 の G <- D の 5度(3:2)の`うなり'を見てみます。
Ch.2 #61:42<D..>293.717[Hz] 0.0[cent] 0.305 Ch.1 #54:35<G..>196.018[Hz] 0.0[cent] 0.182 P#: [Hz] : [Beats] ---------------------- 8: 1578.584 : 103.772 7: 1379.081 : 95.731 6: 1180.452 : 2.474 5: 982.572 : 100.178 4: 785.313 : 97.081 3: 588.551 : 0.807 2: 392.161 : 98.444 1: 196.018 : 97.698
[g-d-22.wav] で再現して見ました。 (周波数が少し異なり`うなり'数も少し違っています。)
(66KB)590[Hz]付近の FFT Filter[F.F.]を行った Wave波形です。 0.807の`うなり'が見えます。 (左は[3DFFT]で 範囲を選択した所です。)
1184[Hz]付近の[F.F.]波形です。 2.474の`うなり'です。
実際のピアノを見てみます。[fille.wave]の音です。
その基音を取り出してみます。
第2倍音です。
第3倍音です。(波高は変えてあります。)
第4倍音です。
第5倍音です。
これまでのWave信号を"Java FFT to Filter(JFF)"などで見てみます。 View Wave Files