問題タブ [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.

0 投票する
1 に答える
120 参照

audio - XNA マイクのオーディオ バッファ形式?

数フレームごとにマイクからデータを読み取り、そのピッチを推定する XNA スクリプトに取り組んでいます。このページ ( http://msdn.microsoft.com/en-us/library/ff827802.aspx )にほぼ正確に基づいて入力を行いました。

これで、バッファがいっぱいになりました。それは何を表していますか?すべてをリセットし、10 フレームごとにバッファーを確認したため、さまざまな時点で 1764 バイトのインスタンスが 9 つある巨大な配列のように見えます (全体は 15876 バイトの大きさです)。マイク入力の形式に関する情報が見つからないため、音圧の時間領域であると想定しています。これがどのように機能するか知っている人はいますか?FFT を稼働させている友人がいますが、プラグインを試みる前に、私が収集しているそのデータについてできる限り多くのことを学ぼうとしています。

0 投票する
1 に答える
813 参照

signal-processing - ピッチ検出のためにケプストラムを実行する方法

わかりました、ここにはたくさんの質問があり、グーグルにはたくさんの読み物がありますが、どういうわけかこれを理解することができません. 音声セグメントの基本周波数を取得したい。基本的な手順は次のとおりです。

  • ウィンドウ処理された信号の FFT を取る
  • FFT を直角座標から極座標に変換します (マグニチュードを取得できます)。
  • フェーズ情報を破棄します
  • 二乗してから、大きさの各ビンの自然対数を取る
  • 別の FFT を取得します (または、一部の情報源は逆 FFT を取得すると言いますか?)

AS3でこれを実装した方法は次のとおりです。

これを実行してFFTを取得して終了すると、プロットするとビンが逆の順序になっているように見えますか? また、基本波よりも 2 次高調波に大きなピークが見られます。これを行って逆 FFT を実行すると、N/2 付近で反射されたように見えるオーディオ信号が得られ、再びピークが反転しているように見えます。全体もかなりうるさいです。私は何を間違っていますか?

0 投票する
1 に答える
215 参照

android - App Inventor 2 の「ピッチ」を使用したイベント ドリブン サイン

私は App Inventor2 ツールを初めて使用するので、ラベルの可視性をトリガーする「ピッチ」値を取得しようとすると、少し問題が発生します。

「AccelerometerSensor」が -30 度または 30 度に達したときにラベルを表示する必要があります。これを実現するために、「zAccel」値を使用し、Android デバイスの右側にホーム ボタンを配置して、アプリをランドスケープ モードで実行します。

次の画像は、「警告」が常に表示されているため、これまでに使用したブロックを示していますが、あまり成功していません。

ここに画像の説明を入力

使用されているロジックのブロックまたは手がかりに関するヘルプは、非常に高く評価されます。お時間とご回答いただきありがとうございます。

0 投票する
1 に答える
609 参照

c - 陰周波数検出と倍音 (ギター弦)

私は周波数検出用の IOS アプリを開発しています。非常に正確な YIN アルゴリズムを使用しています。魔女 Audacity、さまざまな周波数の矩形波を生成しました。アルゴリズムの精度は約 0.1% です。たとえば、82,4 Hz (E ストリング) のトーンを生成すると、実際には 82,4 Hz しか得られず、他には何も得られません。

とにかく、ギターの弦をかき鳴らすと、基音 (F0) よりも強い (振幅が大きい) 倍音を得ることがよくあります。その結果、私のディスプレイは「踊って」トグルし始めます - 時々、(トーンが消えると) アルゴリズムが倍音の周波数 (例えば、E ではなく A) で停止することさえ起こります - そのため、ユーザーは再び弦をかき鳴らさなければなりません。彼の希望のトーン (周波数) が存在するかどうかを確認します。

この現象が私のアルゴリズムとは何の関係もないことはわかっています。なぜなら、それは単なる「ハードウェア」の問題だからです (単純に倍音を生成するギターを意味します)。

(周波数検出の) 結果を平滑化するか、重要な周波数 (たとえば、E ストリング +/- 許容範囲の場合は 82.4 Hz) が検出されるとすぐに固定周波数に「スナップ」しようとしましたが、無駄でした。とにかく、私のアルゴリズムが誤った周波数にスナップすることもよくあります。

安価なギター チューナー (ギター店で 10 ドル) がどのように機能しているかを自問しています。周波数検出も信頼性が高く安定しているからです。

アルゴリズムを変更したくありませんが、考えられる解決策が 2 つあります。

  1. 信号の前処理 (おそらくハニング ウィンドウ、ローパスまたはバンドパス フィルタリング) および/または
  2. 信号の後処理 (ある種の周波数平滑化)。

「途切れ途切れ」の結果を克服する方法を誰かが考えていますか?

0 投票する
0 に答える
777 参照

android - マイクからピッチレベルを取得

サウンド ファイルやマイク入力を分析するアプリケーションは数多くあります。たとえば、Android 用のチューナー アプリです。今、私は彼らがどのようにそれを達成したのか自問しています。どうやって始めたらいいのかわからない。誰かが私に情報やチュートリアルへのリンクを提供してくれるかもしれません。私はすでにグーグルで検索しましたが、情報の洪水に圧倒されています。私はこれを趣味としてやっているだけで、最初のステップでは、小さなチューナー アプリを開発したいと考えています。誰かが私を助けてくれることを願っています。

PS: 私はすでにいくつかの Android アプリを開発しましたが、ほとんどの場合、ASP .Net Web アプリケーションを開発しています。私はソフトウェア エンジニアリングの初心者ではありませんが、マイク入力などを分析したことはありません。

0 投票する
1 に答える
552 参照

audio - 高速周波数測定

ミュージシャンが音楽を演奏している間に信号周波数を測定する必要がありますが、たまたま FFT (高速フーリエ変換) には少し速すぎます。

ミュージシャンは 90 ~ 140 bpm で音楽を演奏します。これは、毎分 90 ~ 140 のノート グループがあり、各グループに最大 8 つ (多くの場合、最大 4 つ) のノートがあることを意味します (60/140/8 = 0.0536 秒、60/90/4 = 0.167 秒)。つまり、ノートは 1 秒あたり 6 ~ 19 ノートの割合で変化する可能性があります。

音楽は対数スケールを使用します。たとえば、440Hz と 880Hz の間の範囲が 12 の音符に分割され、そのうちの 7 つだけがメロディーに使用されます。(基本的に、彼らはピアノの白鍵のみを使用します。開始周波数をシフトしたい場合、黒鍵の一部を使用し、白鍵を使用しません。) つまり、次の各音の周波数が乗算されます。 2^(1/12) = 1.05946 です。

さらに複雑なことに、A (La) 周波数は 438 から 446 Hz まで変化する場合があります。弦楽器は理論的にはチューニングできますが、管楽器は気温と湿度に依存するため、サウンド チェック中にミュージシャンによって周波数がたまたま再調整されます。

ミュージシャンやボーカリストが周波数を間違えることがあり、彼らはそれを「調子外れ」と呼んでいます。彼らは、そのような「チューニングエラー」を知らせるデバイスを望んでいます。チューナーがありますが、チューナーは何かを表示し始める前に約 1 秒間同じサウンドを再生する必要があります。これはチューニングには機能しますが、音楽の再生中は機能しません。

ほとんどの場合、チューナーはFFTを実行しており、式のために

1Hz の分解能を得るために 1 秒間待ちます。

A=440Hz の場合、2 つの音符間の周波数の差は 440*0.05946 = 26.16 Hz です。その周波数分解能を得るには、0.038 秒の取得時間を使用する必要があります。 98 bpm では、ピッチが変化するまさにその瞬間に取得を開始する場合、50% のチューニング誤差を伝えることができます。取得期間中にピッチの変更を許可すると、49 bpm になりますが、これは遅すぎます。さらに、周波数をより正確にすること、たとえば 25% のチューニング外れエラーを検出することは非常に望ましいことです。

FFT よりも優れた周波数を測定する方法、つまり、短い取得時間でより高い分解能で測定する方法はありますか? (少なくとも 2 倍、理想的には 8 倍) 代わりに、異なるオクターブの音を区別する必要はありません。たとえば、440 と 880 の両方が A として認識される場合があります。(おそらく、より多くのトレードオフが可能です。今は他に何も思い浮かびません。)

UPD これは本当に良い絵です:

ウィキペディアからリンクされている周波数に注意してください

UPD2

博士論文とオープン ソース ソフトウェア ( TARTINI -- リアルタイム音楽分析ツール) を次の場所で見つけました。

http://miracle.otago.ac.nz/tartini/

(ページは Web アーカイブ サービスからも利用できます: http://web.archive.org = http://archive.org = http://waybackmachine.org )

0 投票する
1 に答える
1783 参照

python - Pythonで一連のトーンの各トーンの周波数を取得するためにaubioを使用する方法

aubio を使用してピッチを取得するサンプル コードを見つけましたが、ピッチを秒単位で表示するには何を変更すればよいかわかりません。

また、wav ファイルの代わりに出力から直接これを行うことは可能ですか?

0 投票する
2 に答える
1604 参照

audio - 独自の HPS アルゴリズムを実装するには?

私はピッチ検出システムを開発する必要があるPythonでプロジェクトを開始しています.基本的に私がしなければならないことは、ギターの弦からの音を録音し、その音のトーンを特定することです.

ウェブサイト (stackoverflow を含む) を読んで検索したので、FFT、タイムドメイン、周波数ドメイン、ハーモニクス、ピッチ検出アルゴリズム、オクターブエラーなどの重要な事柄の主なアイデアを理解できます。

調査の結果、HPS (高調波積スペクトル) アルゴリズムを使用できることがわかり、そのアルゴリズムは周波数ドメイン アプローチに属しています。つまり、(一般的な手順で) する必要があります。

  1. ギターの音を録音します(外部ノイズを避けます)。
  2. FFT 機能を使用して、オーディオを時間領域から周波数領域に変換できるようにします (これが FFT の機能です)。
  3. そのデータ (配列) を取得したら、HPS を使用して、トーン ストリング サウンドとなる最高のトーンを見つける必要があります。

私の問題は最後のステップから始まります.HPSのecuationとそれに関するいくつかの講義を読みましたが、それでも理解できず、独自の機能を開発できません.

私が理解していない何かまたは何かが欠けていますか? 独自の HPS アルゴリズムをプログラムする方法が見つかりません。