unit ddsdtut21;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ddsd, StdCtrls;

type
  TForm1 = class(TForm)
    DDSD1: TDDSD;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
    wav:TDDSDWaveData;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  Buffer:Array[0..22049] of Byte; //Waveデータを計算するためのバッファ
  i:Integer;
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;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DDSD1[0].Play;
end;

end.
