を役に立てば幸いあなたがコードを停止するように指示すると、この期間に記録されたデータを含む配列(通常はshort []型)が返されます。またはB)与えられたバッファーサイズで記録を開始するようにコードに指示し、各バッファーがいっぱいになると、コードは満たされたバッファーへの参照で定義したメソッドへのコールバックを行い、録音を停止します。
録音フォーマットがサンプルあたり16ビット(別名2バイト)、44100サンプル/秒、モノラル(1チャンネル)であるとします。 (A)の場合、録音を開始し、10秒後に録音を停止するとします。あなたは441,000(44,100 x 10)の長さの短い[]配列で終わるでしょう。私はあなたが "タップ"を検出するためにどのアルゴリズムを使用しているのかわかりませんが、この配列のタップを要素0、要素22,050、要素44,100、要素66,150などで検出するとしましょう。 5秒(22,050は44,100サンプル/秒の半分であるため)、これは秒当たり2タップ、したがって120 BPMを持つことを意味します。
(B)の場合、44,100サンプル(別名1秒)の固定バッファサイズで記録を開始するとします。各バッファが入ると、要素0と要素22,050でタップが見つかります。上記と同じロジックで、120 BPMを計算します。
これが役に立ちます。一般的にビート検出では、比較的長い時間録音し、大きなデータアレイでビートをカウントするのが最善です。 「瞬間」のテンポを推定しようとすると、録音の音程をフル・ノートで録音するよりリアルタイムで行うのが難しいように、エラーが発生しやすくなります。
私がモノをしている場合、私の配列のそれらの数字のそれぞれは、1つのチャンネルの1つのサンプルを表していますか?もし私が2つのチャンネルをしたら、私の配列は88200倍になりますか?チャネル間の交替? – zac
はい、ステレオは、毎秒2倍のサンプルを持ち、サンプルがインターリーブされている(左、右、左、右など)ことを意味します。したがって、要素0,2,4,6などは左チャンネルのデータを表し、要素1,3,5,7などは、右チャネルのデータを表す。 – MusiGenesis
別の質問:振幅を得るためにfftを実行すると、元の配列の半分のサイズが返されます。私が読んだことは、それを実数部と虚数部に変換し、振幅を得るためにそれらの両方を使用するためです。この配列の各値が現在どのような役割を果たすのでしょうか? 2サンプル? – zac