soundがcaptureできれば...FPSの問題、解決編

1.やっとこさで、FPSが遅い原因が、解りました...

   NotificationEvent.WaitOne(Timeout.infinite,true)の、部分です。

何故かは、解らないのですが、この、WaitOne()が、うまく機能しないのです。

なんせ、Notifyを受けてから、読み込むbufferが、多い時は、131KBytesも、読み込むのですから、これには

無理が、あるのかも知れません。

んで、改良点は、

このNotificatinEvent.WaitOne()を止めて、THread.Sleep(ms)に、替えてみました。

とたんに、FPSが改良されたのです。

Thread.Sleepを使うと

FFTpoint    改良前FPS    改良後FPS(wait=0ms)    改良後FPS(wait=30ms)

    2048            43                    53                           33

    4096            24                    56                           33

    8192            12                    56                           33

  16384             6                    49                           30

  32768             3                     38                           24   

  65536             2                     21                           16

131072            -                     10                             9

Thread.Sleepのwaitを、0msにすると、CPUの使用率は、97%位になり、これは、危ない、あっちっちっ。

waitを30msに設定すると、途端に、CPU使用率は、5%以下になります、安心ですね、速度も充分です。

2.もう一点の、発見

FFTポイントが、2048点という、少ないポイント数にも、拘わらず、2次高調波6KHzとの、70dBの差を、拾えていることです。

LINE入力は、今、3000Hz丁度で、この時、オシロの画面は、殆ど、静止したように見えます。

このLINE入力を、1Hzずらしますと、もう、駄目! オシロの波形も、動き出し、はじめます。

LINE入力 2999Hz (AD9851 DDS使用)

この差を、比べてみてください。

    FFTポイントは、共に2048ポイント。上:2999Hz入力、下3000Hz入力

偶然、見つけたのですが、これは、差が大きい!

こう言うのを、同期が取れていると、言うのでしょうか...

これは、調べて見る価値がありますね....

H18.9.1.