C# Windows FormsでSoundPlayerを使ったWAVファイルの回数指定自動再生
このコードは、C# の Windows Forms アプリケーションで System.Media.SoundPlayer
を使用して、特定のWAVファイル (test.wav
) を再生するプログラムです。Timer
を利用して、一定間隔で最大4回まで音を再生する仕組みになっています。
目次
コードの解説
using System;
using System.Media;
using System.Windows.Forms;
public class Form1 : Form
{
private SoundPlayer player;
private Timer playTimer;
private int playCount;
public Form1()
{
player = new SoundPlayer("test.wav");
player.Load(); // WAVファイルを事前に読み込む
playTimer = new Timer { Interval = 500 }; // 500ms 間隔(音が途切れにくくなる)
playTimer.Tick += PlaySound;
}
private void TogglePlay(object sender, EventArgs e)
{
if (playTimer.Enabled)
{
playTimer.Stop();
}
else
{
playCount = 0;
playTimer.Start();
PlaySound(null, null);
}
}
private void PlaySound(object sender, EventArgs e)
{
if (playCount < 4)
{
player.Play();
playCount++;
}
else
{
playTimer.Stop();
}
}
}
ポイント
1. SoundPlayer
の事前読み込み
player = new SoundPlayer("test.wav");
player.Load();
SoundPlayer
はデフォルトでは 再生時にファイルを読み込む ため、最初の再生時に遅延が発生する可能性があります。Load();
を事前に実行することで、WAVファイルをメモリにロードし、スムーズに再生できます。
2. Timer
を使用した再生管理
playTimer = new Timer { Interval = 500 };
playTimer.Tick += PlaySound;
Timer
を使うことで、一定間隔(500msごと)にPlaySound
を呼び出し、4回まで自動的に再生できます。
3. TogglePlay()
で再生のON/OFF
private void TogglePlay(object sender, EventArgs e)
{
if (playTimer.Enabled)
{
playTimer.Stop();
}
else
{
playCount = 0;
playTimer.Start();
PlaySound(null, null);
}
}
playTimer
が動作中なら停止、停止中なら 再生カウントをリセットして開始。PlaySound(null, null);
を即時実行することで、最初の再生を待たずに行う。
4. PlaySound()
で最大4回の再生
private void PlaySound(object sender, EventArgs e)
{
if (playCount < 4)
{
player.Play();
playCount++;
}
else
{
playTimer.Stop();
}
}
playCount
が4未満ならplayer.Play();
を実行し、カウントを増やす。- 4回再生したら
playTimer.Stop();
でタイマーを停止する。
動作の流れ
TogglePlay()
が呼ばれる(ボタンを押すなど)。playTimer
が動作していれば停止し、そうでなければplayCount
をリセットしてplayTimer.Start()
。PlaySound(null, null);
が即時実行され、1回目のplayer.Play();
が実行。playTimer
のTick
イベントが 500ms ごとに発生し、PlaySound()
が呼ばれる。- 合計4回の再生が完了すると
playTimer.Stop();
で自動的に停止。
まとめ
仕様 | 説明 |
---|---|
SoundPlayer | WAVファイルを再生する |
player.Load(); | 事前読み込みで再生遅延を防ぐ |
Timer | 500ms ごとに PlaySound() を呼び出す |
TogglePlay() | 再生の開始・停止を管理 |
PlaySound() | 4回まで再生し、再生が終わったら Timer を停止 |
このプログラムは、一定回数のサウンド再生を制御するシンプルなWindows Formsアプリケーション になっています。
ディスカッション
コメント一覧
まだ、コメントがありません