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.