2012-02-24 7 views
0

コード検出アルゴリズムに関しては既にここではごくわずかな質問があります。しかし、これらのほとんどは、歌を和音や和音の組に変換することにもっと関連しているようです。私の問題は、ギターのコードの1つの音符を録音し、次にこれを分析して演奏されたコードを戻すことにのみ関心があるので、はるかに単純でなければなりません。これが難しいことが判明した場合、特定のコードが正しく再生されているかどうかを知ることができます。ユーザは演奏しようとするコードを提示され、演奏後にアプリケーションは正しいコード(記憶ゲームの何か)を演奏したかどうかを彼らに知らせる。私はアプリケーションがすでにどのようなコードを期待しているか知っているので、この第2の選択肢は簡単だと思います。オーディオサンプルから個々のギターコードを認識する

私は既に同じアプリケーションの一部としてギターチューナー用にFFTとハーモニックプロダクトスペクトラムを使用していますが、ギターコードを認識するためにFFTで出力される周波数スペクトラムを分析する方法についてのアドバイスが本当に好きです。私はこの問題に関する他の提案にもオープンしており、私が得ることのできる助けに本当に感謝しています。

おかげ

+0

[この質問](https://stackoverflow.com/a/39234337/500207)への回答として、いくつかの手法、https://gist.github.com/fasiha/957035272009eb1c9eb370936a6af2ebを実装しました。 –

答えて

0

どのようにこのようなことをしているのか不思議な人は、Harmonic Product Spectrum and Pitch Class Profiles/Chroma Vectorsを見てください。これらの組み合わせが鍵です。また、「和音検出は、」より良い結果を保証しますとは対照的に、「複数のF0推定」の検索用語を使用して:)

1

あなたは、最も一般的な和音をフィンガープリントしてみてください、その後、指紋のあなたのセット内で最も一致正規化されたスペクトルを探している可能性があります。例えば周波数領域でパターンマッチングの問題として扱います。

+0

答えをありがとう。指紋採取法の使い方については何も教えていただけませんか?異なるコードのピークを特定してから、ある種の最尤アルゴリズムを使用するのはかなり単純な問題でしょうか? – nihilo90

0

お答えその遅すぎる、私はこれはあなたを助けることを願っていますが...

をお場合電子ギターやMIDIギターやその他のMIDI楽器のためのプログラミングですし、これらのもののための非常に効果的なJavaパッケージJFugueがあります。 私はあなたがそれを見てお勧めしますJfugue.org

0

私は自分自身がFFTを使用して全体のコードを最初に識別するのが難しいと感じました。しかし私の実験では、単一のサウンドデータの周波数を得るための基本的なアルゴリズムとして、FFTを使ってギターコードの識別子を作ることができました。 FFTチューナーの問題点は、音の根音のみを検出することです。私の実験では、演奏されている弦のすべての音符を取り、特定の音符を使って演奏されているコードを知ることができたことが証明されました。今のところ、私の研究は、主要なギターコードとEmやAmのようなマイナーなコードを検出することに限定されていました。

関連する問題