サウンドカードで直流電圧計測

概要

背景

原理

回路の製作

ソフトウェアに戻る

ソフトウェアの詳細

§なぜつたない説明をするのか

ソフトウェアのプログラミングはあまり得意ではありません。 DirectSoundによるマイク入力の録音というのは、2005年に初めて試みました。 これは私のようなプログラミングの素人にとっては結構大変な事でした。 最近、DirectX自体が更新されていますが、録音の部分はあまり変わっていないようで、 2005年当時と比較すると、かえって書籍やインターネットで情報を得にくくなっているようにも思います。 そのような状況ですから、古くなった情報を含んでいる可能性があるとはいえ、私と同様のプログラミングの素人には参考になるだろうと思います。

§システムの前提

繰り返しになりますが、WindowsXPを前提にしています。他のシステムでどうしたらいいかについては、何とも言えません。 また、DirectXのバージョンは9.0Cです。 DirectXについて、詳しく述べる事はできませんが、書籍はゲームプログラミングの棚に分類されています。 そして、その殆どの中身は3D描画に関してです。 ゲームで録音は殆ど行なわれないため、DirectXを用いた録音(Capture)の方法はなかなか見つけにくくなっています。 プログラミングの能力がきちんとある方なら、MSDNだけで十分なのでしょうが。

§プログラミングの手順

どのようにプログラミングしていったか、思い出しながら書いてみます。

開発環境の入手

まずはプログラミング環境を入手しました。私はMicrosoft Visual Basic Express Editionを用いました。 C++やC#の方がメジャーなようです。 無料で使用できます。

Microsoft DirectX SDKを入手します。 私のパソコンに入っているのは(June 2006)というバージョンです。これからはじめる人がどのバージョンを入手すべきか、残念ながらコメントできません。

プログラミングの最初

新しいプロジェクトから、Windowsアプリケーションを新規作成し、図のようにDirectXとDirectSoundの参照設定をします。

sansyosettei.png(467068 byte)

サンプルプログラムの入手

C#で書かれたサンプルプログラムをDirectX SDKのサンプルブラウザから入手します。 名前は CaptureSound (Managed)です。

サンプルプログラムの移植

C#はよく分からないのですが、頑張ってVisualBasicに移します。

拡張

サンプルプログラムはキャプチャーしたデータをWAVEファイルに保存するだけなので、RecordCapturedDataの部分を修正し、 実効値などを計算し、ファイルに保存するようにする。

データの表示

計算した実効値などを画面に表示しようとすると、エラーが生じる。 これは、マルチスレッドを使っている事によるので、Delegate、Invokeを用いて回避する。

§ソースコード

一応、参考の為にソースコードを置いておきます。 色々と変更を加えていったため、可読性は非常に悪いのですが、自力で上手く書けない時の参考にはなるかと思います。 また、私以外の環境で正常に動作するかは全く分かりません。 なお、フォームのデザインは前のページを見れば大体分かると思います。 きちんとしたソフトウェアとして公開できれば良かったのですが。。

応用例

ホーム
  [ホーム]