どのノート・オンセットがビートであるかはどのようにして決定しますか?現在、私が持っているものは「パルス列車」と呼ばれるものを使った「ブルートフォース」のようなものです。ノートオンセットからのビート検出?
基本的に、考えられるのは、最小テンポから最大テンポまでのパルス列を生成するということです。これらのパルス列は、特定のテンポでビートが発生したときの表示に過ぎません。たとえば、テンポ= 60bpm(1分あたりの拍数)の場合、パルス列は1秒間隔(60/60bpm)で拍動します。テンポ= 120bpmの場合、パルス列は0.5秒(60/120bpm)の間隔で発生するビートを持ちます。
基本的には、これらのパルス列を使用して、ノートオンセットが想定ビートにどのくらい近接しているかを比較して対比します。だから一般的には、ノートオンセットがビート位置に近づくと、全体の差は小さくなるという考えがあります。それから、基本的に、全体的な差が最も小さいテンポを基本的に選びます。
しかし、この実装に関する2つの問題が発生しました。
1.)ノートオンセットのための完璧な場所を持つことはめったにありません。特に、録音された音楽(これは私が作業しているものです)を使用すると一般的に結果が悪くなります。
2.)テンポを上げると音程が小さくなり、音楽の実際のテンポではなく、オフセットのオンセット(8分音符、16分音符)を持つ音楽の候補になりますつまり、純粋に8分音符の60bpmはおそらく120bpmを返します)
ビート検出の他の(単純な)方法を提案できますか?経験を積むために自分自身でアルゴリズムを実装したいので、チュートリアルの役に立つリンクは非常に高く評価されます。ありがとうございました!
不明な問題のようです。ソング全体が半音または全音で作られている場合はどうなりますか? – Pace