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アプリケーション になっています。
訪問数 101 回, 今日の訪問数 1回





ディスカッション
コメント一覧
まだ、コメントがありません