0

プロジェクトに FftPitchDetector.cs を追加しましたが、使用方法がわかりません。

私のコード:

private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
        {

            if (waveWriter == null) return;

            byte[] buffer = e.Buffer;

            float sample32 = 0;
            int bytesRecorded = e.BytesRecorded;
            float[] floats = new float[buffer.Length];


            waveWriter.Write(buffer, 0, bytesRecorded);

            for (int index = 0; index < e.BytesRecorded; index += 2)
            {

                short sample = (short)((buffer[index + 1] << 8) |
                                        buffer[index + 0]);
                sample32 = sample / 32768f;
                sampleAggregator.Add(sample32);
            }
            floats = bytesToFloats(buffer);

            FftPitchDetector PitchDetect = new FftPitchDetector(sample32);
            **PitchDetect.DetectPitch(XXXXXX, XXXXXXXXXXX);**

           }

        private static float[] bytesToFloats(byte[] bytes)
        {
            float[] floats = new float[bytes.Length / 2];
            for (int i = 0; i < bytes.Length; i += 2)
            {
                floats[i / 2] = bytes[i] | (bytes[i + 1] << 8);
            }

            return floats;
        }

PitchDetect.DetectPitch(XXXXXX, XXXXXXXXXXX)内に配置する必要があるパラメーターはどれですか。??

FftPitchDetector.cs を使用して入力周波数を取得するにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

1

このコードがどのように機能するかを説明する付随記事を書きました。ここからアクセスできます。基本的に、サンプルの配列と、その配列にあるサンプルの数を示す数値を渡します (配列の長さと同じでない場合)。周波数を Hz で返します。ただし、このコードは単に音符を選択して、オートチューン エフェクトのピッチ シフト量を計算しようとしているだけなので、特定の範囲内の値を探しているだけであり、実際には返されない可能性があることに注意してください。入力信号で最も大きな周波数。

于 2013-02-22T08:12:04.880 に答える