2011-12-29 14 views
-3

FFTの実装に問題があります。ターゲットデバイスはWindows Phone 7です。FFTの実装

これは私がやっている方法です。 バッファは固定サイズのバイト配列1024

var o = Observable.FromEvent<EventArgs>(Microphone.Default, "BufferReady"); 
     o.Subscribe(evt => 
     { 
      double[] dImageArray = this.buffer.Select(i => Convert.ToDouble(i)).ToArray(); 

      fftoutput = Saluse.MediaKit.Sample.FourierTransform.FFTDb(ref dImageArray); 

     }); 

私が使用しているクラスは、(あなたが見ることができるように)SaluseMediakit(source)から

は、これが正しい道はありますか?または私はどこか間違っている?

+4

FFTの実装に問題があります。 - 問題を説明してください。詳細を含める(コンパイラエラー、例外の詳細など) –

+0

これはfftoutputに関するものです。私は結果を確認する方法を知らない。それは適切かどうかです。 mikrophoneからのバイト配列、私はそれを正しく変換するのですか? –

+0

「私はどこか間違っていますか?」うまく動作しない場合はあります。 –

答えて

1

私はAFORGE(このライブラリは私を何度か保存しました)を使って良いFFTを実行することができました。マイクから波形情報を取得する適切な方法。

double[] sampleBuffer = new double[buffer.Length/2]; 
      int h = 0; 
      for (int i = 0; i < buffer.Length; i += 2) 
      { 
       sampleBuffer[h] = Convert.ToDouble(BitConverter.ToInt16((byte[])buffer, i)); 
       h++; 
      } 

別の質問にフォローアップしてください。私は視覚的なイコライザーを作るのが大好きです。しかし、私はハウツーには分かりません。

+0

マイク(byte [])からデータを取得してdouble []に​​変換し、AFortgeでいくつかの変更を加えました。データをどのように変換するかを記述できますか(double [] - > byte [])? – RredCat

+0

このようになりますhttp://stackoverflow.com/questions/6952923/conversion-double-array-to-byte-arrayは答えです。 – RredCat

+0

しかし、あなたが示すもの以外のアプローチがあります。 – RredCat