2016-03-23 6 views
1

私はwavファイルのFFTを実行してグラフをプロットし、peak utilsを使ってピークを取得し、その他。一度BPMを取得する方法PythonでFFTとピーク検出を実行しました

私はここから曲のBPM(毎分拍数)を取得するにはどうすればよいですか?

IFFTを実行する必要がありますか?私が仮定しているように、私は時間の文脈に戻る必要がある。あるいは、時間の流れに戻る別の方法がありますか?

私はコードの後ではなく、次のステップの正しい方向にプッシュしたいだけです。

感謝 ジャッキー

+1

だから、60で乗算BPMにピークの周波数を変換するには、この周波数範囲でピークを

を見ます、それを答えさせてください。 =) – Brett

+0

http://dsp.stackexchange.com/questions/1112/detecting-drum-bpm-in-a-noisy-wav-file – Reti43

+0

あなたのリンクをありがとうございますが、私はまだ何をすべきか分かりませんが、あなたの答えは、 "次に、ドラムビートの長さとおおよそ一致する時定数を使って、信号の時間領域エンベロープを計算します("ロッシーピーク "はこれを行う最も簡単な方法です)。ビット?信号の時間領域エンベロープをどのように計算するのですか?私はすでにピークを検出して見つけたので、 "ロッシーピーク"が必要ですか? –

答えて

0

は数秒でピーク距離にピークを測定し、その数で60を分割します。例えば0.5秒ピークツーピーク= 60/0.5 = 120bpm。これは通常のダンスミュージックではある程度は機能しますが、他のタイプのものはあまり良くありません

ごめんなさいあなたの質問を完全に誤解しました。上の例は、あなたが大胆に見えるような波の形でそれを行う方法です。

FFTをそのまま周波数領域に使用します。より低い周波数範囲のピークを探します。音楽が60〜180 bpmの範囲にある場合、これは1〜3 Hzの周波数に対応します。だから、これが答えである場合、あなたはおそらく、あなたが知っておくべき@Vorsprung 2ヘルツ* 60 = 120 BPM

+0

ピークからピークまでの距離を秒単位で測定していただき、ありがとうございます。私はIFFTを実行する必要がありますか?またはFFTデータから利用可能な時間値はまだありますか? –

+0

ああ、ええ、波wavない。はい、私はすでにピークを持っています、これらのピークからBPMを計算するにはどうしたらいいですか? –

+0

ありがとうございますが、複数のピークがあるときはどうしますか?それらの平均をとって、それを60倍してBPM(平均)を求めますか? –

関連する問題