soundがcaptureできれば...

1.オシロスコープの真似事

1KHz Line入力の観測

soundがcaptureできれば、波形を表示したくなりますね。

前節のプログラムを、ちょっと変形しました。

16ビットmonoですから、captureしたデータは、16ビットで表現します。

赤丸の部分で、typeof(short)と、してやれば、captureした、音声データを、16ビットで表現してくれます、便利。

グラフを書くには、通常のGDI+を使用しました。

でも、ほぼ、リアルタイムで、波形を表示してくれます。(0.1second位、遅れるかも...)

まず、グローバル変数を決めておいて

//オシロ用

bool hakei_seishi = false;

//Point[] aptf = new Point[480];

Graphics grfx = null;

int mag = 1;

short[] CaptureData2 = null;

int recStartPos;

Point[] aptf = new Point[10];

Point[] aptf2 = new Point[10];

Point[] aptf3 = new Point[10];

Point[] aptf4 = new Point[10];

それから

    grfx = pictureBox1.CreateGraphics();

 

    if (CaptureData2 != null)

    {

 

        Point[] aptf5 = new Point[(int)440 / mag];

        for (int i = 0; i < a; i++)

        {

            aptf5[i].X =(int) i*mag;

            aptf5[i].Y = (int)(200 - CaptureData2[i] * 200 / 32767);

    }

    grfx.DrawLines(Pens.Gold, aptf5);

}

まあ、こんな感じです。

DirectXの、Direct3Dを使えば、、10倍位速くなるそうです.....やってみるかな.....ムムム、やっぱ、sprite使うんやろな....

2.性能は?

    あんまり、期待できません。

    LINE入力に、外部アナログオシレータの出力を入れ、観測しました。

    sin波は、比較的きれいですが、矩形波は、本物のオシロとは、比べ物になりません。

    まあ、大まかな波形と、言うことですね。

                最初の画面                                                       2番目の画面

LINE入力 1KHz sin波 

                                   22KHz sampling                                                                 48KHz  sampling

LINE 入力 5KHz sin波

 

では、48KH zsamplingで、どのくらいから、振幅が落ちるのか、調べてみますと

大体、17KHz位からでした。

                                 17.5KHz LINE input

 

矩形波 1KHz入力

                        soundcardでの観測                                                                            オシロスコープでの観測

    サウンドカード使用での観測波形は、エッジが、緩やかになってしまいますね.....

ウーム、96KHzサンプリングとか、192KHzサンプリングできて、24ビットの サウンドカードが、欲しくなってきましたわい....

H.18.7.14