1

基本的には、曲に含まれるベースの一般的な領域である 60 ~ 150 Hz の範囲を取得したいと考えています。この範囲内にあるときはいつでも、機能を実行したいのですが、その範囲だけです。私の問題は、そのために必要な機能を調べようとしましたが、運が悪かったことです。ここまたは良い記事またはこれについての説明は素晴らしいでしょう!私はすべての助けに感謝し、私は自分自身で探し続けます. さらに説明が必要な場合は、必要な情報を提供できます。

オースティン。

更新:ここでアルゴリズムを簡略化しました:

  1. ユーザーが希望の曲を選択
  2. 曲はプレーヤーにロードされます
  3. 関数は曲をスキャンし、曲全体でより低い周波数を見つけ、出力はパターンです。
4

1 に答える 1

1

ステップ1)高速フーリエ変換を実行します:http://en.wikipedia.org/wiki/Fast_Fourier_transform

FFTは音の一部を受け取り、それを周波数/時間領域に変換します。たとえば、どの周波数が再生され、どの程度の強さで、どの部分の音が鳴っているのかなどです。これは、どんなに複雑であっても、周波数と振幅が異なる1つまたは複数の正弦波から基本的にすべての音を構成できるという特性に依存する便利な数学演算です。

たとえばfoobar2000でスペクトログラムを見たことがあれば、FFTを使用して実装されます。

高速フーリエ変換を使用したfoobar2000からのスペクトログラム

自分でFFTを実装しようとする代わりに、Cで書かれたhttp://en.wikipedia.org/wiki/FFTWなど、十分にテストされた高速なライブラリを見つけることをお勧めします。

ステップ2)ユーザーが聞いている音の部分をFFTしたので、周波数ビンを調べて、好きなことをすることができます!バスキックの検出は「この周波数ビンは高い値ですか?」ほど単純ではありませんが。ベースラインをベースキックと間違える可能性があるからです。それを正しく機能させるには、さらにテストと調査を行う必要があるかもしれません。

編集:Delyanはhttp://www.clear.rice.edu/elec301/Projects01/beat_sync/beatalgo.htmlを提案しており、かなり見栄えがします。

于 2013-03-15T00:32:08.017 に答える