Windows Forms アプリで WAV ファイルを再生する方法(ループあり・なし)
目次
概要
このチュートリアルでは、SoundPlayer
を使用して WAV ファイルをループ再生 する方法と 1回のみ再生する方法 の両方を解説します。
また、「出力ディレクトリにコピー」を「常にコピーする」に設定することで、実行ファイル (.exe
) と同じディレクトリに WAV ファイルを配置し、確実に動作させます。
1. プロジェクトのセットアップ
- Visual Studio で「Windows フォーム アプリ(.NET Framework)」を作成
- WAV ファイルをプロジェクトに追加
- プロジェクトフォルダを右クリックして、既存の項目から
wavファイル
を追加する
- プロジェクトフォルダを右クリックして、既存の項目から
- プロパティの設定
- ソリューションエクスプローラー (
Ctrl + Alt + L
) で追加したwavファイル
を選択 - 「出力ディレクトリにコピー」 →
常にコピーする
に設定
- ソリューションエクスプローラー (
2. フォームデザイン
ボタンを追加
- ツールボックス (
Ctrl + Alt + X
) を開く - 以下の3つのボタンを追加
- ループ再生ボタン
Text
プロパティ → 「ループ再生」Name
プロパティ →playLoopingButton
- 1回だけ再生ボタン
Text
プロパティ → 「1回だけ再生」Name
プロパティ →playOnceButton
- 停止ボタン
Text
プロパティ → 「停止」Name
プロパティ →stopPlayingButton
3. コードを記述
Form1.cs を開き、以下のコードを記述してください。
using System;
using System.IO;
using System.Media;
using System.Windows.Forms;
namespace SoundPlayerExample
{
public partial class Form1 : Form
{
private SoundPlayer Player = new SoundPlayer();
public Form1()
{
InitializeComponent();
}
/// <summary>
/// WAVファイルをループ再生
/// </summary>
private void playLoopingButton_Click(object sender, EventArgs e)
{
try
{
// 実行ファイルのあるフォルダにある wavファイル を参照
string soundFilePath = Path.Combine(Application.StartupPath, "サウンドファイル名.wav");
if (File.Exists(soundFilePath))
{
Player.SoundLocation = soundFilePath;
Player.PlayLooping(); // ループ再生
}
else
{
MessageBox.Show("サウンドファイルが見つかりません", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show("エラー: " + ex.Message, "再生エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// WAVファイルを1回だけ再生
/// </summary>
private void playOnceButton_Click(object sender, EventArgs e)
{
try
{
// 実行ファイルのあるフォルダにある chimes.wav を参照
string soundFilePath = Path.Combine(Application.StartupPath, "サウンドファイル名.wav");
if (File.Exists(soundFilePath))
{
Player.SoundLocation = soundFilePath;
Player.Play(); // 1回のみ再生
}
else
{
MessageBox.Show("サウンドファイルが見つかりません", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show("エラー: " + ex.Message, "再生エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 再生を停止
/// </summary>
private void stopPlayingButton_Click(object sender, EventArgs e)
{
Player.Stop(); // 再生停止
}
}
}
4. イベントの設定
フォームデザイン画面 (Form1.cs [デザイン]
) で、各ボタンのクリックイベントを設定します。
- 「ループ再生」ボタンをクリック
- プロパティウィンドウ (
F4
) の「イベント」タブ(雷マーク)を開く - 「Click」イベントをダブルクリック →
playLoopingButton_Click
のコードが自動生成される - 「1回だけ再生」ボタンも同様に「Click」イベントをダブルクリック →
playOnceButton_Click
のコードが自動生成される - 「停止」ボタンも同様に「Click」イベントをダブルクリック →
stopPlayingButton_Click
のコードが自動生成される
5. 動作確認
- F5 を押してアプリを実行
- 「ループ再生」ボタンを押す
- WAVファイルがループ再生される
- 「1回だけ再生」ボタンを押す
- WAVファイルが1回のみ再生される
- 「停止」ボタンを押す
- 再生が停止する
bin\Debug
フォルダを開いてwavファイル
が存在するか確認- 存在しない場合、「ビルド」→「クリーン」後に再ビルドを試す
6. 追加機能のアイデア
(1) ファイル選択ダイアログを追加
ユーザーがWAVファイルを自由に選択できる機能を追加できます。
private void selectFileButton_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "WAV files (*.wav)|*.wav";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
Player.SoundLocation = openFileDialog.FileName;
Player.PlayLooping();
}
}
}
- ボタンを追加して、このメソッドを割り当てる と、自由にWAVファイルを選択できるようになります。
7. まとめ
✅ WAVファイルを「ループ再生」「1回のみ再生」「停止」する方法を学んだ!
✅ 「出力ディレクトリにコピー」を「常にコピーする」に設定し、実行ファイルと一緒に管理!
✅ Application.StartupPath
を使用し、確実にファイルを取得!
これで、WAVファイルを扱う基本的なサウンドアプリ が完成しました! 🎵
ディスカッション
コメント一覧
まだ、コメントがありません