AsuYuHomepage
トップページ サイトの説明 子供の成長記録 JM BAR Delphi リンク集
Home>>プログラミング>>Tips&Tricks>>WAVEサウンド音を鳴らす
Delphi Tips
Delphi Win32API
ダウンロード

Counter

Delphi Tips & Tricks

WAVEサウンド音を鳴らす

 拡張子が.wavのファイルをMediaPlayerを使わずに再生する方法です。
uses節にMMSYSTEMを追加するのを忘れずにしてください。
uses
  MMSYSTEM;
-------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
 //一回だけ再生 
  PlaySound(PChar('test.wav'),0,SND_FILENAME or SND_ASYNC);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  wavname :string;
begin
  wavname :='test.wav';
  //くり返し再生
  PlaySound(PChar(wavname),0,SND_FILENAME or SND_ASYNC or SND_LOOP);
end;
//メモリから再生
procedure TForm1.Button3Click(Sender: TObject);
var
  MS :TMemoryStream;
begin
  MS :=TMemoryStream.Create;
  try
    MS.LoadFromFile('test.wav');
    PlaySound(MS.Memory,0,SND_MEMORY or SND_ASYNC);
  finally
    MS.Free;
  end;
end; 
//リソースのサウンドを再生
//リソースの埋めこみ方は他のサイトをを探してください
procedure TForm1.Button4Click(Sender: TObject);
var
  RS :TResourceStream;
begin
  RS :=TResourceStream.Create(hinstance,'TEST','WAVE');
  try
    PlaySound(RS.Memory,0,SND_MEMORY or SND_ASYNC);
  finally
    RS.Free;
  end;
end;

 効果音のような簡単なサウンドを鳴らしたいときにはPlaySound関数を使います。
第1引数でPCharに型変換したファイル名、第2引数は0、第3引数は再生方法を決めるるフラグの組み合わせを指定します。主なフラグをあげておきます。
SND_ASYNC プログラムと非同期に再生すぐに
処理を返す。
SND_FILENAME 第1引数がファイル名である。
SND_SYNC サウンドが終わるまで処理を返さない。 SND_MEMORY 第1引数がサウンドへのポインタである。
SND_LOOP くり返し再生します。 SND_RESOURCE 第1引数がリソースからのものである。
SND_NODEFAULT 指定されたサウンドがみつから
なった場合、一般の警告音を再
生することなく静かに処理を返し
ます。
SND_NOSTOP 他のサウンドがなっていた場合、
再生することなく処理を返します。
また再生中のサウンドをとめるには第1引数にnilを指定します。