高速フーリエ変換体感ソフト nfft07.exe
ダウンロードページへ
あらまし
このソフトを使うと、音楽CDのデータやパソコンのマイクから入力された音声信号を、
リアルタイムにスペクトル解析してくれます。つまり、簡単に言うと音や声がリアルタイムに映像化できるのです。合唱や声楽、歌謡曲などをフーリエ変換にかけてみると、いろいろなことがわかってきます。あと一歩で楽譜の自動生成もできそうな感じです。
このソフトはPentium以降のCPUで動作しますが、クロックは200MHz程度を推奨します。
対応機種
Windowsが動くPentium以上のCPUを乗せたパソコン。クロックは200MHz以上を推奨
応用例
将来的にはこんなことをやりたいな、と思っています。
- 合唱をフーリエ解析し、上手な合唱と下手な合唱の違いをスペクトル的に調べる。
- 猫や犬の泣き声をフーリエ解析し、動物と会話をできるようにする。
- 人間の声の善し悪しを解析し、合唱や声楽の発生指導に役立てる。
- フーリエ変換と逆フーリエ変換をリアルタイムで行い、フィルタリングや音響処理を行う。
- 聖徳太子(10人の会話を判別する)
- 楽譜入力支援ソフト
使い方
Windowsから起動します。起動後の画面のイメージは下の図のようになっています。この画面では、私の「あ」の声を解析しています。高調波がいっぱい見えていますね。

使い方を簡単に説明します。
★入力ソース
これはフーリエ変換したい波形のソースを選択します。NI-DAQというのはNational Instutruments社のMulti Function I/Oボードを使ってリアルタイムにサンプリングし、フーリエ変換する機能です。これが本来の目的なのですがまだ中途半波です。
Wave audio inputというのはWindowsの録音入力に入る音源をサンプリングしてフーリエ変換します。たとえば、CDを再生してそれをリアルタイムにフーリエ変換したり、パソコンにつながるAudioINやマイクの音を拾ってサンプリングするときに使います。
テストパターンというのはフーリエ変換の例題で出てくるような、サイン波やインパルス列や矩形波などをコンピューターで作り出しフーリエ変換のシミュレーションをします。とても美しい映像が動きます。
★詳細設定
NI-DAQを選択しているときにはアナログ入力のチャンネルを指定します。wave audio inを選択しているときには標準のサンプリングレートを選択します。テストパターンを選択しているときには変換したい波形を選択します。
★サンプリング周波数
NI-DAQやwave audio inを選択しているときにはそのサンプリング周波数を設定できます。Windowsに音を入力するサウンドカードでは標準では44.1kHz、22kHz、11kHzを設定するようになっていますが、任意の周波数に設定できるサウンドカードもあります。ちなみに私のノートパソコンでは100kHzサンプリングも可能でした。無理な周波数を入れるとエラーメッセージがでます。また、キロをkと書いてはいけません。必ずHz単位で入れてください。
テストパターンを選択しているときは表示波形には変化はありませんが、周波数軸の目盛が変わります。
★ワンショット
一度だけフーリエ変換して表示します。瞬間的な絵を見たいときに使います。連続フーリエ変換時に使用すると、次のフーリエ変換が終わり次第連続フーリエ変換を終わります。
★連続FFT
連続してフーリエ変換を行います。画面の更新の速さはCPUスピードに依存します。300MHzクラスのCPUなら問題なく動くでしょう。100MHz程度のCPUでもカクカクしますが動きます。
★表示範囲
4096ポイントのFFTなので、2048ポイントの周波数データーを表示させたいのですが、画面の都合上256ポイントしか表示できません。そこでどの範囲を表示するかを設定します。スクロールバーとあわせてお使いください。
★dB表示
表示をデシベル表示からリニア表示に切り替えます。スペクトルを保存するときの形式にもリニアで保存するか、デシベルで保存するかが効いてきます。
★窓関数
時系列データーに簡単な窓関数を掛けます。サインの半周期を掛けるだけの単純な窓ですが、効果はあります。
★ファイルメニュー
スペクトルと生データをテキスト形式で保存できます。GNUPLOTなどで読むことを考えて作っているので、タブで区切ったテキスト形式です。第一カラムが周波数で、第二カラムがスペクトルのパワーです。スペクトルデータの拡張子は.spcで波形データの拡張子は.rawです。
★QuickSave
QuickSaveというのは私が考え出した造語です。Saveのダイアログなどを出さずに、ファイル名を入力するだけでスペクトルと波形がセーブされます。セーブされるファイル名は、入力したファイル名に数字(通し番号)をつけ加えたものです。拡張子は普通のファイルセーブと同じです。QuickSaveをするとステータスバーに名前が表示されます。
たとえば、デフォルトのファイル名はFilenameなので、QuickSaveの場所でリターンキーを押すと、Filename1.rawとFilename1.spcが自動的にセーブされます。再びリターンキーを押すとFilename2.rawとFilename2.spcがセーブされます。リターンキーを押すだけで次々とセーブできるので、連続してセーブしたいときに便利です。
デフォルトのディレクトリはNFFT.EXEをおいてあるディレクトリです。
★計算ゲイン
とりこんだデータにいくらかの倍率を掛けます。
★ヘルプ
アバウトがでます。
★更新時間
1ブロック分のデーターを読み込み、FFTをし、生波形とスペクトルを画面に表示するのに要した時間です。1画面分のスループットです。私のノートパソコン(Let's note M1V,CPU=Cerelon 300MHz)では平均で30mSecくらいなので、1秒間に画面を30回くらい更新していることになります。
★フーリエ変換の方法
通常の複素FFTです。ポイント数は4096ポイント。データーの精度はfloat型の浮動小数点数です。このためPentium以降のCPUで実行することを前提としています。486の皆さん申し訳ありません。(_o_)
なお、パワースペクトルが1になるところを0dBと決めています。
Windowsなどのサウンドカードなどから得たデーターをフーリエ変換する場合、適当な縮尺を掛けることで、電圧の振幅に換算できます。
★Ver0.6.0からの変更点
- 波形ウィンドウにマウスカーソルを持っていくと、その音の周波数と音階を表示してくれるようになった。
- CDPLAYERとマルチメディアプロパティーがプログラム上から開けるようになった。
FFTを浮動小数点演算で行うようにした
★Ver0.5.0からの変更点
- FFTを浮動小数点演算で行うようにした
- NFFTDLL.DLLを廃止してメインプログラムに組み込んだ
- スペクトル表示を高速化
- 直流成分の扱いを変更(数学的に正しい方法かどうかはわからない)
- 「計算ゲイン」の追加
- メニューに「設定」の項目を追加
- FFT中でも波形とスペクトルのセーブが可能
- QuickSaveというセーブ方式を追加
- NI-DAQへの対応(現在はPCI-MIO-16E-4を前提としている)
- ステータスバーの追加(QuickSaveしたファイル名が表示される)
- プログラムからマルチメディアのプロパティーを簡単に開けるようにした
- 表示方法やソース設定の変更をしたら、速やかに波形やスペクトルに正しく反映させるようにした。
- 「詳細設定」項目に入力ができないようになった
- 画面の更新時間を表示するようにした
- 「対数スケール」から「dB表示」へ名前を変更
★このソフトについて
いずれピーク検出や楽譜変換などのバージョンアップしたいとおもいます。バグや致命的な不具合、機能追加の要望、励ましのお便りや苦情がありましたら、メールをください。
ホームページに戻る
平成12年5月21日 なひたふ記す
Copyright(c)1998-2000 Nahitafu All rights reserved