4

どのノートオンセットがビートであるかをどのように判断しますか? 現在、私が持っているのは、いわゆる「パルストレイン」を使用した「ブルートフォース」メソッドのようなものです。

基本的には、最小テンポから最大テンポまでのパルス列を生成するという考え方です。これらのパルス列は、特定のテンポでビートが発生するタイミングを表しています。たとえば、Tempo = 60bpm (1 分あたりのビート) の場合、パルス列には 1 秒間隔 (60 / 60 bpm) で発生するビートがあります。Tempo = 120bpm の場合、パルス列には 0.5 秒間隔 (60 / 120bpm) で発生するビートがあります。

基本的に、これらのパルス列を使用して、想定されるビートでノートオンセットがどれだけ近いかを比較対照します。したがって、一般的には、音符の開始が拍の位置に近いほど、全体的な差は小さくなるという考えです。次に、基本的に全体的な違いが最小のテンポを選択します。

ただし、この実装に関して 2 つの問題に遭遇しました。

1.) 特に録音された音楽 (私が取り組んでいる) では、音符の開始点に完璧な位置を設定することはめったにありません。

2.) テンポを高くすると間隔が狭くなり、実際の音楽のより良いテンポ (純粋に8 分音符はおそらく 120bpm を返します)

ビート検出の他の (単純な) 方法を提案できますか? 経験を積むためにアルゴリズムを自分で実装したいので、チュートリアルへの役立つリンクは大歓迎です。ありがとうございました!

4

3 に答える 3

1

このページには興味深いアプローチがかなりあります。

于 2011-07-02T04:16:13.880 に答える
0

ダン・エリスのテクニックをチェックすることをお勧めします。直感的で、MatlabとJavaで利用できるコードがあります。

于 2011-07-02T04:54:10.923 に答える
0

多くの音楽では、"Grove" と "Swing" は、ノートの開始位置を厳密なテンポの位置から変更します。小節全体またはフレーズ全体のスペクトル パターンを、タイム シフトされた音楽のコピーと照合する統計的パターン マッチング手法の方がうまくいく場合があります。次に、1 分あたりの測定値/フレーズから 1 分あたりの拍数に移行する除数を推定する必要があります。

于 2011-07-02T06:32:05.997 に答える