2011-08-09 13 views
2

私は音楽のビジュアライザーに取り組んでいます。私は、それぞれの楽器に異なるビジュアル要素を表示したいと思います。たとえば、ボーカルを表す青いバー、ギターを表す赤いバー、ドラムを表す黄色のバーなどMP3を指定すると、高速フーリエ変換(FFT)を使用してさまざまな楽器を分割することは可能ですか?

FFTの結果を分析する方法はありますか?

ありがとうございました。

+0

これを行うには簡単ではありません。 – nibot

答えて

9

これは音楽技術の研究の活発な分野です。

ある程度までは可能ですが、確かに容易ではありません。多くの重要な情報が圧縮で失われるため、mp3を使用することは特に難しいでしょう。

あなたがしようとしていることは、オーディオソース分離、または音源分離と呼ばれています。オーディオ録音をその構成要素に分離することを追求しています。

これらの要素は、スピーチ(複数の人が同時に話す「カクテルパーティー問題」)または楽器(録音の「ブラインドデミキシング」で別の楽器を分離する)です。

さまざまなアプローチがありますが、そのうちのいくつかはサウンドの周波数領域特性に基づいており、その他は空間特性に基づいています。

バスドラムとフルートを分離しようとすると、周波数領域のアプローチがかなり簡単になるかもしれません(つまり、FFTの低周波数ビンはバスドラム、フルートに割り当てられた高周波数ビンです)。現実的には、音は有用な周波数領域にきれいに分離されることはめったにありません。例えば、バスドラムは、周波数スペクトルの上に高調波成分を持っています。したがって、これらのタイプの解法は数学的に複雑であり、しばしば統計的モデリングを伴う。重いもの。

音の空間的な特性に基づく分離は、各音源が録音する前の場所(これは「ノンブラインド」である)に関するいくつかの事前知識に依存することがよくあります。複数のマイクを用意する必要があることが多い(少なくともステレオ録音)。いくつかの巧妙な数学を使って、各マイクロホンでの信号の関係に基づいて、音源がどこにあるかの知識に基づいて音源を分離することができます。これは、ビームフォーミングと呼ばれる技術の基礎でもあり、それによって、マイクロフォンのアレイを使用して音源の位置を決定することができます。

だから、トラックに戻る。人々はそれをやろうとしていますが、それは複雑で、mp3を使うとあなたの人生は難しくなります!

は、私は本当に、より良いアプローチを説明するのに十分知らない怖いが、私は取得するには、いくつかの参照を見つけることができますが開始:

http://www.cs.tut.fi/~tuomasv/demopage.html

http://www.cs.northwestern.edu/~pardo/courses/eecs352/lectures/source%20separation.pdf(PDF警告!)

幸運を祈る!

+0

さらにリンク:http://itakura.kes.tul.cz/zbynek/tddeconv.htm < - この男はいくつかのMATLABコードをまとめています – Speedy

3

ボーカルとベースについては、通常はステレオミックスの中央にあるという事実を利用することができます。つまり、左右のチャンネルにまったく同じ波形が得られます。あるチャンネルを他のチャンネルから差し引くと、新しいチャンネルで終わることが多く、そのチャンネルはしばしばボーカルとベースなしになります。今、あなたは巧妙なFFTを可視化する方法(左)、FFT(右)とFFT(差)で見ることができ

sound = LoadMP3(...) 
length = sound.SampleCount 
left = sound.Channels[LEFT] 
right = sound.Channels[RIGHT] 
for i = 0:length 
    difference[i] = left[i] - right[i] 

:よう

何か。

これは、あなたが後になっているという効果に向けて、少しステップを踏むでしょうか?

関連する問題