はい、これがFFTのすべてです。フィードするデータの周波数スペクトルを提供します。あなたが言及したように、難しい部分は実装の詳細です。
何をしたいのかによって、正確に答えが変わります。
自分の音楽を分析したいだけなら、それを行うためのソフトウェアがすでにあります。応答(基本的にはFFT)を示すEQを見るか、ピッチも示す「音楽EQ」を取得できます。音声をMIDI VSTに送って、演奏内容を正しいMIDIノートに変換できます。キーボードがMIDIの場合、VSTをスキップして、MIDIを直接録音します。
FFTとそれが音楽にどのように関係するかを自分で学びたい場合は、任意のデータのFFTを計算できるMatlabのようなものを取得する方が良いでしょう。wavファイルなどを読み取りながら記録および再生する機能があります。これらは本当に使いやすいものになります。構文を知っていれば、オーディオをグラフ化し、あらゆる種類の分析をかなり迅速に行うことができます。
そのようなことを行うデバイスを構築したい場合、それは非常に複雑です。計算を行うにはuC / dsp / fpga / etcが必要です。ほとんどの一般的なデバイスにはすでにFFTコードが付属しているため、自分でコーディングする必要はありません(これも複雑です)。
回路などすべてを構築する必要があります。難しいことではありませんが、経験/知識によってはかなり時間がかかり、学習曲線が急です。また、最終製品の品質にも依存します。
数学的には、理想的な音符は「基本」の幾何学的なシリーズで構成されています。
F0が基本周波数であると仮定すると、ほとんどの音符はF(t)+ F0 * sum(a_k e ^(2 ^ k F0 * pi i t))= F0 + a_1 * F1 + a_2 * F2 + で近似されます。 ...
a_kはそれらのより高い周波数F_kの強さであり、F_kはF0の倍数です。すべてのkに対してa_k = 0の場合、純粋な正弦波が得られます。このピッチは簡単に検出できます。FFTの最大値を見つけるだけで、その周波数は音の基本=音符です。
FFTを実行すると、最終的にデータを取得し、計算を実行します。基本的には微積分です。
それはすべて比較的簡単です。
あなたが対処しなければならないいくつかの問題。これらのすべてが「解決」されるわけではないことに注意してください。
遅延-何らかのリアルタイムの処理を行う場合、これが問題になる可能性があります。
複数の音-すべての余分な倍音のため、音のグループを決定するのは困難です。再生A = 440hzおよびA '= 880hzの場合、ほとんどの倍音が重なります。A = 440hzを簡単に取得できますが、A '= 880hzを取得するのはより困難です。和音や高速走行などを考えると、すべての情報(メモ)を正確に取得することは非常に困難です。一般的にすべてが数学的に可能ですが、データ自体にはエラーと異常があり、場合によっては方程式が不十分に定義されます。
ノイズ-信号のノイズにより、誤った結果が生じる可能性があります。ミュージカルノイズが発生すると、結果が台無しになります。その場合、より良いアルゴリズムが必要になります=時間+お金+知識。