TDDSDWaveData

タスク

TDDSDWaveDataオブジェクトは、Waveファイルを読み込んでTDDSDChannelオブジェクトに格納するまでの仲介を行います。

 

リファレンス目次

プロパティ

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

情報 IsStream
Length
WaveFormat
その他 Buffer

 

メソッド

コンストラクタ Create
CreateFromQDA
CreateBuffer
CreateStream
転送 BlockCopy

 

イベント

OnUpdate

 

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

IsStream

property IsStream:Boolean;

 このTDDSDWaveData(またはTDDSDWave3D)オブジェクトが、CreateStreamコンストラクタで生成されたものかを返します。

 

Length

property Length:Integer;

 このTDDSDWaveData(またはTDDSDWave3D)オブジェクトが持っている、サウンドバッファの長さを、バイト単位で示します。

 

WaveFormat

property WaveFormat:TWaveFormatEx;

 このTDDSDWaveData(またはTDDSDWave3D)オブジェクトが持っている、サウンドバッファのフォーマットを示します。

 

Buffer

property Buffer:IDirectSoundBuffer;

 このチャンネルの持つIDirectSoundBufferを表します。このプロパティはDDSDコンポーネントでは出来ない事をする時のための、拡張用です。

 詳しい使い方は、DirectSoundに関する資料を各自で調べてくださいm(__)m

 

リファレンス〜メソッド

Create

constructor Create(OWner:TObject; fname:String)

 fnameで示されたWaveファイル(*.wav)から、TDDSDWaveDataを作成します。

 Ownerには、TDDSDコンポーネントを指定してください。


DDSD1というTDDSDオブジェクトがあるとします。

precedure DDSDSamp1;
var
  Wave1:TDDSDWaveData;
begin
  Wave1:=TDDSDWaveData.Create(DDSD1,'foo.wav'); //foo.wavからWave1というWaveDataを作る
  DDSD1.Channels[0].WaveData:=Wave1; //Ch#0にWave1を載せる

  DDSD1[0].Play; //再生する .Channels を書く事は省略可
end;

 

CreateFromQDA

constructor CreateFromQDA(OWner:TObject; QDAname:String; id:String);

 QDAnameで示されたQDAファイルの、IDで示されるデータから、TDDSDWaveDataを作成します。

 Ownerには、フォームに既に載せたTDDSDコンポーネントを指定してください。


CreateBuffer

constructor CreateBuffer(OWner:TObject; freq,bps:DWord; isStereo:Boolean; length:DWord);

 サンプリング周波数 freq [Hz]
 サンプリング量子化数 bps [ビット]
 ステレオ又はモノラル isSetreo
 長さ length [バイト]

 という空の波形データを作成します。

 Ownerには、フォームに既に載せたTDDSDコンポーネントを指定してください。


DDSD1というTDDSDオブジェクトがあるとします。

procedure CreateBufferSamp;
var
  Buffer:Array[0..22049] of Byte; //Waveデータを計算するためのバッファ
  i:Integer;
  wav:TDDSDWaveData;
begin

  //WaveDataの作成
  wav:=TDDSDWaveData.CreateBuffer(DDSD1, 22050, 8, False, 22050);

  //矩形波で埋める(値の範囲は0〜255だけど、うるさいので128くらいにしておきます)
  For i:=0 to 22049 do
    Buffer[i]:=((i div 50) And 1) * 128;

  //バッファからWaveDataオブジェクトにコピー
  wav.BlockCopy(0, @Buffer, 22050);

  //チャンネルに乗せる
  DDSD1[0].WaveData:=wav;
end;

 

CreateStream

constructor CreateStream(OWner:TObject; freq,bps:DWord; isStereo:Boolean; length:DWord);

 サンプリング周波数 freq [Hz]
 サンプリング量子化数 bps [ビット]
 ステレオ又はモノラル isSetreo
 長さ length [バイト]

 という空の波形データを作成します。

 Ownerには、フォームに既に載せたTDDSDコンポーネントを指定してください。

 TDDSDChannel.Playメソッド等によって再生されると、以下のタイミングでOnUpdateイベントを呼びます。

 

BlockCopy

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

 サウンドバッファのoffsetバイト目からlengthバイトに渡って、srcで示されるメモリから読み込みます。

 

リファレンス〜イベント

OnUpdate

procedure OnUpdate(Sender:TDDSDGenWave; Player:TDDSDChannel; ofs,len:Integer) of object;

 CreateStreamメソッドによって生成されたTDDDDWaveDataオブジェクトは、再生されると以下のタイミングでこのイベントを発生します。

 注意

 このイベントはVCL本体とは別のスレッドから実行されます。スレッド競合に注意してください。