1

MP3 ファイルのオーディオ データを分割し、各チャンクに対してFFT 変換を実行したいと考えています。

これまでのところ、オーディオ ストリームから読み取る試みはすべてうまくいきませんでした。これが私の最後の試みのコードです(wavファイルを使用しています)

        using (var ms = File.OpenRead("reggae.wav"))
         using (var rdr = new WaveFileReader(ms)) 
         {
             int steps = 100;
             int stepSize = (int)rdr.Length / steps;

             byte[][] audData = new byte[steps][];


             for (int i = 0; i < 10; i++)
             {
                 audData[i] = new byte[stepSize];
                 rdr.Read(audData[i], i * steps, stepSize);
             }

         }

このコードでは配列の範囲外の例外が発生します。

どのような種類のストリームを使用する必要があり、そこからデータを読み取るにはどうすればよいですか?

naudio api のドキュメントはありますか?

4

1 に答える 1

3

範囲外の配列例外は、Read メソッドへのオフセットにゼロ以外の値を渡すことによって発生します。そのはず:

rdr.Read(audData[i], 0, stepSize);

Web には、NAudio でさまざまなことを行う方法を説明する記事がいくつかあります。

NAudio で FFT を使用する例については、NAudio ソース コードの WpfDemo アプリと、.NET ボイス レコーダー アプリケーションのソース コードを参照してください (Coding4Fun に関する別の記事が間もなく登場することを願っています)。

于 2010-12-17T09:27:31.933 に答える