TDDSDWaveDataオブジェクトは、Waveファイルを読み込んでTDDSDChannelオブジェクトに格納するまでの仲介を行います。
(凡例:
読み取り専用
Published)
| 情報 | |
| その他 |
| コンストラクタ | Create |
| CreateFromQDA | |
| CreateBuffer | |
| CreateStream | |
| 転送 | BlockCopy |
property IsStream:Boolean;
このTDDSDWaveData(またはTDDSDWave3D)オブジェクトが、CreateStreamコンストラクタで生成されたものかを返します。
property Length:Integer;
このTDDSDWaveData(またはTDDSDWave3D)オブジェクトが持っている、サウンドバッファの長さを、バイト単位で示します。
property WaveFormat:TWaveFormatEx;
このTDDSDWaveData(またはTDDSDWave3D)オブジェクトが持っている、サウンドバッファのフォーマットを示します。
property Buffer:IDirectSoundBuffer;
このチャンネルの持つIDirectSoundBufferを表します。このプロパティはDDSDコンポーネントでは出来ない事をする時のための、拡張用です。
詳しい使い方は、DirectSoundに関する資料を各自で調べてくださいm(__)m
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;
constructor CreateFromQDA(OWner:TObject; QDAname:String; id:String);
QDAnameで示されたQDAファイルの、IDで示されるデータから、TDDSDWaveDataを作成します。
Ownerには、フォームに既に載せたTDDSDコンポーネントを指定してください。
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;
constructor CreateStream(OWner:TObject; freq,bps:DWord; isStereo:Boolean; length:DWord);
サンプリング周波数 freq [Hz]
サンプリング量子化数 bps [ビット]
ステレオ又はモノラル isSetreo
長さ length [バイト]
という空の波形データを作成します。
Ownerには、フォームに既に載せたTDDSDコンポーネントを指定してください。
TDDSDChannel.Playメソッド等によって再生されると、以下のタイミングでOnUpdateイベントを呼びます。
procedure BlockCopy(offset:DWord; src:Pointer; length:DWord);
サウンドバッファのoffsetバイト目からlengthバイトに渡って、srcで示されるメモリから読み込みます。
procedure OnUpdate(Sender:TDDSDGenWave; Player:TDDSDChannel; ofs,len:Integer) of object;
CreateStreamメソッドによって生成されたTDDDDWaveDataオブジェクトは、再生されると以下のタイミングでこのイベントを発生します。
注意
このイベントはVCL本体とは別のスレッドから実行されます。スレッド競合に注意してください。