あなたは間違ったことを期待しています!
図書館のせいではない
ライブラリが適切に生成するかどうかに関係なく、実際のサウンドにはめったに存在しないパターンを探しています。電子的に生成された完全な正弦波のみが、周波数に部分的に離散的に現れる「スパイク」を引き起こします。グラフ。信じられない場合は、winampまたはメディアプレーヤーで「スペクトルアナライザ」の視覚化を起動してみてください。それはそれほどPCのせいではありません。
本当の音波は複雑な動物です
あなたの心の目に鋸歯状または正方形の波を想像してください。それらの鋭いターンアラウンド-波のコーナーまたはポイントは、FFTまたは実際のフーリエに対してさえも大量の高調波のように見えます。また、スコープで実際の「sqaure wave / sawtooth」、または正弦波を生成するはずの楽器によって生成された「sine wave」を見たことがあれば、鋭い隅や隙間をすべて見てください。 1つのノート(スコープがない場合は、大胆な波にズームインするだけです。ズームするほど、見ているノートが高くなります)。はい、それらの偏差はすべて周波数としてカウントされます。
スペクトル分析では、1つの音符とオーケストラ全体の違いを区別するのは難しい場合があります。
しかし、私は単一のメモを聞きます!
では、耳はどのようにそれを行うのでしょうか?波形全体を考慮します。次に、下脳は入力が何であるかについて上脳に横たわります。倍音の混乱ではなく、1つの音符です。
あなたはそれを完全に行うことはできませんが、「トレーニング」を介してそれを概算することができます。
近似:いくつかのスマートを構築する
楽器のノートを演奏し、周波数グラフを「保存」します。いくつかの周波数範囲のノート、またはより良いのはすべてのノートに対してこれを行います。
次に、メモを補間して、その機器用に保存されたグラフに2 ^(1/12)(または1/4ステップの場合は1/24など)を掛けて、ギャップを埋めます(1/2または1/4ステップ)。
BSTやトライなどのすばやく検索可能なデータ構造にそれらを格納する方法を理解します。'これがどれだけ近いか'のスコアを返す必要があるのはそれだけです。それが異なるボリュームで来た場合には、頻度の比率によっても一致を識別する必要があります。
スマートを使用する
次回その楽器からの音符を探しているときは、「聞いた」周波数グラフを取り、そのデータ構造でそれを見つけてください。さまざまな波形を作成するいくつかの楽器を録音して、それらを検索することもできます。背景音や複数の音がある場合は、最も近い音を選びます。次に、他の音符を識別したい場合は、サンプリングされた音符から見つかった周波数パターンを「減算」し、すすぎ、泡立てを繰り返します。
それはあなたの声では機能しません...
あなたがギターチューナーに歌って自分自身をチューニングしようとしたことがあれば、チューナーがその賢いものではないことを知っているでしょう。もちろん、一部の楽器(音声esp)は実際にピッチの周りを浮遊し、(誰かが歌わなくても)絶えず進化する波形を生成します。
何を達成しようとしていますか?
「シンプルな」チューナーアプリでは、このような凝ったものを完全に手に入れる必要はありませんが、別のチューナーアプリだけを作成していない場合は、実際にノートを識別したいと思います(たとえば、ラジオの曲;-)
幸運を。私はあなたがあなた自身を転がす代わりにこのすべてのがらくたをする図書館を見つけることを望みます。
2017年を編集
このWebページに注意してください:http://www.feilding.net/sfuad/musi3012-01/html/lectures/015_instruments_II.htmページ
のかなり下に、さまざまなオルガンパイプのスペクトル分析があります。多くの倍音があります。これらは、十分な作業で、最初にアプリを「トレーニング」することで検出できます(子供に言うのと同じように、「これはクラリネットのように聞こえます...」)