次の方法で共有


Visualizer.GetFft(Byte[]) メソッド

定義

現在再生中のオーディオ コンテンツの周波数キャプチャを返します。

[Android.Runtime.Register("getFft", "([B)I", "GetGetFft_arrayBHandler")]
public virtual Android.Media.Audiofx.VisualizerStatus GetFft (byte[]? fft);
[<Android.Runtime.Register("getFft", "([B)I", "GetGetFft_arrayBHandler")>]
abstract member GetFft : byte[] -> Android.Media.Audiofx.VisualizerStatus
override this.GetFft : byte[] -> Android.Media.Audiofx.VisualizerStatus

パラメーター

fft
Byte[]

FFT が返されるバイトの配列

戻り値

#SUCCESS成功した場合、#ERROR_NO_MEMORY#ERROR_INVALID_OPERATIONまたは#ERROR_DEAD_OBJECT失敗した場合。

属性

例外

注釈

現在再生中のオーディオ コンテンツの周波数キャプチャを返します。

ビジュアライザーが有効になっている場合は、このメソッドを呼び出す必要があります。

キャプチャは 8 ビットの振幅 FFT で、カバーされる周波数範囲は 0 (DC) から返される #getSamplingRate()サンプリング レートの半分までです。 キャプチャは、キャプチャ サイズの半分に 1 を加えた数の周波数ポイントの実数部分と虚数部を返します。

注: 最初の点(DC)と最後の点(サンプリング周波数/2)の実数部分のみが返されます。

返されるバイト配列のレイアウトは次のとおりです。ul>li n は getCaptureSize()</li li><> Rfk によって返されるキャプチャ サイズです。 Ifk は、それぞれ kth 周波数成分</li li><> の実数部と虚数部です。Fs が getSamplingRate() によって再チューニングされたサンプリング周波数である場合、k 番目の周波数は k * Fs / n </li></ul><テーブル border="0" cellspacing="0" cellpadding="0"<>tr><td Index>><<

</td><td>0 </p></td td<>>1 </p></td<>td>2 </p></td<>td>3 </p></td<>td>4 </p></td<>td>5 </p></td td<>>... </p></td td><>n - 2 </p></td td<>>n - 1 </p></td></tr tr><td><>Data </p></td td><td>Rf0 </p></td td><Rf>(n/2) </p></td><td>Rf1 </p></td<>td>If1 </p></td<>td td>Rf2 </p></td td><td>If2 </p></td td<>td>... </p></td td>><Rf(n/2-1) </p></td><td>If(n/2-1) </p></td></tr></table>

大きさと位相の値を取得するには、次のコードを使用できます。

int n = fft.size();
                  float[] magnitudes = new float[n / 2 + 1];
                  float[] phases = new float[n / 2 + 1];
                  magnitudes[0] = (float)Math.abs(fft[0]);      // DC
                  magnitudes[n / 2] = (float)Math.abs(fft[1]);  // Nyquist
                  phases[0] = phases[n / 2] = 0;
                  for (int k = 1; k &lt; n / 2; k++) {
                      int i = k * 2;
                      magnitudes[k] = (float)Math.hypot(fft[i], fft[i + 1]);
                      phases[k] = (float)Math.atan2(fft[i + 1], fft[i]);
                  }

の Java ドキュメントandroid.media.audiofx.Visualizer.getFft(byte[])

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。

適用対象