問題タブ [pitch-tracking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - エレキギターのピッチトラッキング時に弦を検出する方法は?
こんにちは、私はオーディオ関連のコーディングの初心者で、ピッチ トラッキング DLL に取り組んでいます。この DLL を使用して、ビデオ ゲーム ロックスミスの一種のオープン ソース バージョンを学習体験として作成しようとしています。
これまでのところ、FFT を機能させることができたので、ピッチ周波数 (Hz) を検出できます。次に、アルゴリズムと下の表を使用して、オクターブ (2 番目から 6 番目) とノート (C から B) を決定できます。ノートを再生しました。
次のステップは、フレットを特定できるように弦を検出することです。
私はそれについて考えてきましたが、理論的にはこれで作業できます。ユーザーが正しい音符を演奏しているときはわかりますが、Hz を使用するだけではゲームが検出できないため、ゲームは「ハック」になる可能性があります。ノートは右の弦で演奏されます。たとえば、5 弦 + 1 フレット = C4 261.63Hzは、6 弦 + 5 フレット = C4 261.63Hzに等しくなります。
ユーザーが間違った弦で音符を弾いて正しく弾く可能性は低いですが、ユーザーが間違った弦を弾いたときにエラー フィードバックをユーザーに提供できるように、弦を知ることは本当に良いことだと思います (弦を上下に移動する必要があります)。
文字列を検出するために何ができるか知っていますか? 前もって感謝します :)
[編集]
使用しているギターと弦は音色に影響を与えるため、音色を分析することは弦を検出する簡単な方法ではないようです。
「ギターの音色のバリエーションは、ピックアップのデザインと位置、使用される木材 (木材の種類が異なります!) によるギターの自然な共鳴とダンピング、およびその構造と形状、弦のゲージと使用年数、演奏テクニック、弦をどこでフレットして弾くかなどです。」
android - アンドロイドで音の最大振幅を数える方法は?
私はここで、パンチの最大振幅音をカウントする機能を探しています。デモ アプリで Android 音声認識 API を使用しましたが、すべての音 (ノイズ) をカウントしており、カウントは弾丸のように実行されています。パンチバッグの音に影響を与えるパンチのカウントのみを行い、パンチを逃したくない場合、このカウントは音楽、会話、くしゃみの音で変化しません。
matlab - 高調波積スペクトルの MATLAB コード
MATLAB を使用してハーモニック プロダクト スペクトルを実装し、ハーモニクスの存在下でノートの基本周波数を見つける方法を教えてもらえますか?? 私は自分の信号を何度もダウンサンプリングし(もちろんfftを実行した後)、元の信号で乗算することになっていることを知っています。
私のfft信号が「FFT1」であるとしましょう
コードはおおよそ次のようになります
このコードは正しいですか?適切にダウンサンプリングしたかどうかを知りたいのですが、各変数の長さが異なるため、それらを乗算すると行列次元エラーが発生します..プロジェクトの作業のため、本当に迅速な助けが必要です...本当に必死です....ありがとうあらかじめ....
c# - オーディオピッチ分析
私はサウンド分析に非常に慣れていません。実際、初めて行う必要があるのは、mp3 ファイルまたはその他の形式を分析し、ピッチの変化を検出することだけです。単純に、高音が発生するオーディオ ファイルをトリミングしたいだけです。
私はNAudioといくつかの記事を試しましたが、役に立たなかったので、誰かがチュートリアルと使用するAPIの正しい方向に私を導いてくれたら.
matlab - ピッチ追跡に基づくピッチ同期ウィンドウ処理を見つける
コメント リンクにあるように、Talkin's Robust Algorithm for Pitch Tracking in voicebox (関数名は「fxrapt」) によってピッチが抽出されます。
http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/doc/voicebox/fxrapt.html
ただし、各ピッチ周期内の最大振幅を検出することにより、LP エラー信号内のピッチ パルスを見つける必要があります。各ピッチ パルスに対して、2 ピッチ周期の長さのハミング ウィンドウ。T(i-1)、T(i)、T(i+1) が 3 つの連続するピッチ パルスの位置を表す場合。次のリンクの図に示すように、T(i-1) から T(i+1) までの範囲でピッチ パルスの解析ウィンドウを設計するにはどうすればよいですか?
そのための MATLAB コードを探しています。誰かが私を助けてくれれば、本当に感謝します。ありがとう。
audio - 自動相関によるピッチ検出は、より高いピッチでは失敗します
自己相関を使用して、録音された音声 (44.1 kHz) からピッチ クラスを取得しようとしています。私がやっていることは基本的にここで説明されています: http://cnx.org/content/m11714/latest/また、ここで実装されています: http://code.google.com/p/yaalp/source/browse/trunk/csaudio /WaveAudio/WaveAudio/PitchDetection.cs (PitchDetectAlgorithm.Amdfを使っている部分)
したがって、ピッチ クラスを検出するために、C2 から B3 (2 オクターブ) の周波数の正規化された相関を持つ配列を構築し、最も高い値を持つものを選択します (「1 - 相関」変換を最初に実行するため、最小だが最大)
生成されたオーディオ(単純な洞)でテストしました:
ただし、B4 よりも低い入力周波数でのみ機能します。生成された配列を調査すると、G3 から始まる別のピークが進化し、最終的に正しいものよりも大きくなることがわかりました。私の B4 は E として検出されます。分析される周波数の数を変更しても、まったく役に立ちませんでした。
私のバッファ サイズは 4000 サンプルで、B4 の周波数は ~493Hz なので、これが失敗する理由が思いつきません。頻度またはバッファ サイズに関するその他の制約はありますか? そこで何がうまくいかないのですか?
Performousが使用しているようにFFTを使用できることは承知していますが、この方法を使用すると簡単に見え、視覚化を表示するために使用できる重み付けされた周波数も得られます。私はそれを簡単に捨てたくないし、少なくともこれが失敗する理由を理解しています。
更新:使用されるコア関数:
その関数では、ピッチ/トーンは (疑似コード)
また、実際の自己相関を使用してみました:
しかし、それは E としての B4 に加えて D としての A3 の取得に失敗します
注: Bufferlength で除算するのではなく、実際に比較したサンプル数で除算します。これが正しいかどうかはわかりませんが、論理のようです。