Windows Forms アプリで WAV ファイルを再生する方法(ループあり・なし)

2025年2月12日


概要

このチュートリアルでは、SoundPlayer を使用して WAV ファイルをループ再生 する方法と 1回のみ再生する方法 の両方を解説します。

また、「出力ディレクトリにコピー」を「常にコピーする」に設定することで、実行ファイル (.exe) と同じディレクトリに WAV ファイルを配置し、確実に動作させます。


1. プロジェクトのセットアップ

  1. Visual Studio で「Windows フォーム アプリ(.NET Framework)」を作成
  2. WAV ファイルをプロジェクトに追加
    • プロジェクトフォルダを右クリックして、既存の項目からwavファイルを追加する
  3. プロパティの設定
    • ソリューションエクスプローラー (Ctrl + Alt + L) で 追加したwavファイル を選択
    • 「出力ディレクトリにコピー」常にコピーする に設定

2. フォームデザイン

ボタンを追加

  1. ツールボックス (Ctrl + Alt + X) を開く
  2. 以下の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 [デザイン]) で、各ボタンのクリックイベントを設定します。

  1. ループ再生」ボタンをクリック
  2. プロパティウィンドウ (F4) の「イベント」タブ(雷マーク)を開く
  3. 「Click」イベントをダブルクリックplayLoopingButton_Click のコードが自動生成される
  4. 1回だけ再生」ボタンも同様に「Click」イベントをダブルクリックplayOnceButton_Click のコードが自動生成される
  5. 停止」ボタンも同様に「Click」イベントをダブルクリックstopPlayingButton_Click のコードが自動生成される

5. 動作確認

  1. F5 を押してアプリを実行
  2. ループ再生」ボタンを押す
    • WAVファイルがループ再生される
  3. 1回だけ再生」ボタンを押す
    • WAVファイルが1回のみ再生される
  4. 停止」ボタンを押す
    • 再生が停止する
  5. 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ファイルを扱う基本的なサウンドアプリ が完成しました! 🎵