5

ギター ヒーローのようなゲーム (このようなもの) を作成しようとしています。ユーザーから提供されたオーディオ ファイルを分析してレベルを自動的に作成できるようにしたいのですが、その方法がわかりません。

BPM 検出アルゴリズムを使用して、ビートに矢印を配置し、繰り返しパターンにレールを配置する必要があるのではないかと考えましたが、それらを実装する方法がわかりません。

また、byte[] データをコピーする Read メソッドを持つ NAudio の BlockAlignReductionStream を使用していますが、2 チャンネルのオーディオ ファイルを読み取るとどうなりますか? 最初のチャネルから 1 バイト、2 番目のチャネルから 1 バイトを読み取りますか? (16ビットPCMと表示されているため)24ビットと32ビットの浮動小数点でも同じことが起こりますか?

4

1 に答える 1

8

ビート検出 (より具体的には BPM 検出)

コム フィルターを使用するためのビート検出アルゴリズムの概要:

彼らのように見えます:

ここで実装する必要がある多くのアルゴリズム。ただし、くし形フィルターはおそらく遅いです。 ウィキの記事は、他の特定の方法を私に指摘していませんでした。

編集:この記事には、ビート検出のストリーミング統計手法に関する情報が含まれています。それは素晴らしいアイデアのように思えます: http://www.flipcode.com/misc/BeatDetectionAlgorithms.pdf - 精度は劣りますが、リアルタイムでの動作は向上していると思います。

ところで、私はスキミングしてキーワードを取り出しました。私は、FFT、整流、および減衰フィルター (ローパス フィルター) をいじっただけです。残りはわかりませんが、リンクがあります。

これで曲の BPM を取得できますが、矢印は生成されません。

レベル生成

「ビートに矢印を配置し、繰り返しパターンにレールを配置する」に関しては、良い結果を得るために実装するのは少し難しいでしょう。

より積極的なコンテンツ抽出アプローチを採用して、曲から音符を引き出すこともできます。

この部分にもビート検出を使用する必要があります。これは上記の BPM 検出に似ているかもしれませんが、異なる範囲で、楽器の範囲のバンドパス フィルターを使用します。また、アルゴリズムの一部を交換または削除し、グローバルBPM を検出していないため、曲全体をサンプリングする必要があります。また、ある種のピッチ検出も必要です。

このアプローチは厄介で、すべての曲の結果を手作業でスクラブする必要があると思います. これで問題がなく、最初の手書きの書き起こし作業を避けたい場合は、おそらくこれでうまくいくでしょう。

コンテンツ生成アプローチを試すこともできます。

ほとんどの手続き型コンテンツ生成は試行錯誤の方法で行われており、人々はアルゴリズムを公開したり、特許を取得したりしていますが、それらは完全にうまくいかないわけではありません。多くの場合、コンテンツ生成アルゴリズムは美学を生成するため、コンテンツ生成アルゴリズムで実行できる実際の定性分析はありません。したがって、満足のいくサンプル結果が得られると思われるものを選択して、試してみる必要があります。

ほとんどのアルゴリズムは、地形、建築物、ヒューマノイド、植物などを含むビジュアル コンテンツの生成を中心にしています。オーディオ コンテンツの生成、Generative Musicなどに関する研究もあります。要件はこれらのいずれとも完全には一致しません。

プロシージャルな「ダンス ステップ」のアルゴリズム (そのようなものが存在する場合 - 私はアニメーション テクニックしか見つけられませんでした) またはジェネレーティブ ミュージックが、曲で検出したリズムによって駆動される場合、最も近いと思います。

コンポジション生成のアプローチを下に進めたい場合は、通常はほのめかされているだけで詳細には説明されていない、まったく異なる多くのアルゴリズムに備えてください。

例えば:

于 2011-11-20T07:30:39.017 に答える