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