Language

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 は、それぞれ k 番目の周波数成分の実数部と虚数部です</li><li> Fs が getSamplingRate() によって再チューニングされたサンプリング周波数の場合、kth 周波数は k * Fs / n </li></ul><table border="0" cellspacing="0" cellpadding="0"><tr><td>Index

</td><td>0 </p></td><td>1 </p></td><td>2 </p></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>Rf0 </p></td><td>Rf(n/2) </p></td><td>Rf1 </p></td><td>If1 </p></td><td>Rf2 </p></td><td>If2 </p></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ドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象