TDDSDCapture

タスク

 TDDSDCaptureオブジェクトは、DirectSoundCaptureの機能を利用して、マイクやライン・インなどの、音声入力デバイスからの入力を取り扱うためのオブジェクトです。

 

リファレンス目次

プロパティ

(凡例:    読み取り専用   Published)

情報 Length
Position
Status
その他 Buffer
DSCapture

 

メソッド

コンストラクタ Create
録音 Start
StartLoop
録音停止 Stop
設定 IsSupportedFormat
SetupCaptureBuffer
転送 BlockCopy


イベント

初期化 OnRecording

 

リファレンス〜プロパティ

Length

property Length:Integer;

 録音用のバッファのサイズを、バイト単位で返します。

 コンストラクタである、Createメソッドに渡した引数によって決定されます。

 

Position

property Position:DWord;

 現在録音の終了した、バッファ上のオフセットをバイト単位で示します。

 このプロパティで示されるオフセットより前の領域ならば、BlockCopyメソッドで読み取っても安全です。

 

Status

property Status:DWord;

 現在の録音についての状態を、以下のDWord値の和で返します。

 

Buffer

property Buffer:IDirectSoundCaptureBuffer8;

 TDDSDCaptureオブジェクトのカプセル化する、IDirectSoundCaptureBuffer8オブジェクトを示します。

 詳細はDirectX SDKを参照してください。

 

DSCapture

property DSCapture:IDirectSoundCapture8;

 TDDSDCaptureオブジェクトのカプセル化する、DirectSoundCaptureオブジェクトを示します。

 詳細はDirectX SDKを参照してください。

 

リファレンス〜メソッド

Create

constructor Create(Owner:TObject);

 コンストラクタです。

 録音に必要なIDirectSoundCapture8オブジェクトを生成します。

 このメソッドを読んだ後に、SetupCaptureBufferメソッドを呼ぶ事で、初期化が完了します。

 

Start

rocedure Start(wait:Boolean);

 録音用バッファの先頭から終端までを一度埋める間だけ、録音を行います。

 waitフラグがTrueの時、録音する間、処理を中断します。

 Falseの時は、録音の終了を待たずに処理を続行します。その際は、Statusプロパティを参照して、録音の終了を知ることが出来ます。


StartLoop

procedure StartLoop;

 Stopメソッドを呼ぶまで、バッファの先頭から録音を続けます。

 バッファの終端まで録音を終えると、またバッファの先頭から録音を続けます。

 バッファの先頭、またはバッファの中間(Lengthプロパティの半分のオフセット)まで録音を行った時点で、OnRecordingイベントを呼びます。

Stop

procedure Stop;

 Startまたは、StartLoopメソッドによって開始された録音を、中断します。

 

IsSupportedFormat

function IsSupportedFormat(freq,bps:DWord; isStereo:Boolean):Boolean;

 サンプリング周波数 freq[Hz]、ビットレート bps [ビット] の録音をサポートしているか、チェックします。

 サポートしている場合、Trueを返します。



 量子化数(ビットレート)16ビット、サンプリング周波数44100Hzで、モノラルでの録音をサポートしているか、チェックします。

 capture.IsSupportedFormat(44100, 16, False);

 

SetupCaptureBuffer

procedure SetupCaptureBuffer(freq,bps:DWord; isStereo:Boolean; length:DWord); 

 録音に必要なIDirectSoundCaptureBufferオブジェクトを確保します。

 引数の意味は以下の通りです。

 環境によっては全てのサンプリング周波数、ビットレートをサポートしているわけではないので、必ずIsSupportedFormatメソッドで、使いたいバッファフォーマットをサポートしているか、チェックしてください。

 量子化数(ビットレート)16ビット、サンプリング周波数44100Hzで、モノラルの録音をするためのTDDSDCaptureオブジェクトを生成します。バッファサイズはちょうど10秒録音できるようなサイズだとします。

capture.SetupCaptureBuffer(DDSD1, 44100, 16, False, 44100*2*10);

 

BlockCopy

procedure BlockCopy(offset:DWord; dest:Pointer; length:DWord);

 録音済みのバッファの offset で示されるオフセット(バイト単位、0がバッファの先頭)から、length バイトを、destで示されるメモリ領域にコピーします。

 

リファレンス〜イベント

OnRecording

property OnRecording:TDDSDRecordingEvent;

TDDSDRecordingEvent = procedure (Sender:TDDSDCapture; StartOffset,bufferSize:DWord) of object;

 TDDSDCaptureオブジェクトは、バッファの先頭、またはバッファの中間(Lengthプロパティの半分のオフセット)まで録音を行った時点で、このイベントを呼びます。

 引数の意味は以下の通りです。