3

サウンド ファイル (WAV または MP3) のさまざまな「音符」を取得し、それぞれの周波数と振幅を取得できるプログラムを作成しようとしています。私はこれを探していましたが、もちろん、MIDI ではない音楽ファイルの個々の「音符」を区別するという問題がありますが、これらの線に沿った何かが NAudio または DirectSound で実行できるようです。何か案は?

ありがとう!

4

1 に答える 1

3

あなたが求めていることは非常に難しいです。

ステップ 1 は、オーディオを時間ドメインから周波数ドメインに変換することです。つまり、多数のサンプルを取得し、フーリエ変換を実行します (FFT としてソフトウェアに実装されます)。

次に、何を音符と呼ぶかを決定し始めます。これは、最も大きな周波数を選択するほど単純ではありません。楽器が異なれば、さまざまな倍音によって生み出される音色も異なります。正弦波だけの曲であれば、これはもっと簡単です。ただし、耳が存在しないと言っている音符が表示されるようになることがわかります。

ここで、心理音響学が登場します。人間が基音を持たない音を「聞く」ことは完全に可能です。これは特に音楽の文脈で当てはまります。トロンボーンを持って下の音階を弾き始めると、ある時点で基音が消えるか、ほとんどなくなってしまいます。しかし、実際には基音はほとんど消えてしまっているのに、その音階は下がっているように感じます。この時点で、物事は本当にトリッキーになります。

あなたの質問に答えるには、FFT から始めます。多分これはあなたのニーズに十分です。そうでない場合は、このテーマに関する大量の技術文献を読み始めてください。

于 2012-09-09T17:13:54.920 に答える