wavファイルを再生する - SoundPlayerを用いたwaveファイルの再生 - C#

System.Media.SoundPlayerを用いて、C#でwavファイルを再生するコードを紹介します。

概要

C#でサウンドファイルを再生する方法は複数ありますが、この記事ではSoundPlayerオブジェクトを利用して、サウンドファイルを再生するコードを紹介します。SoundPlayerオブジェクトを利用することで容易にwavファイルを再生できますが、wavファイル以外のサウンドファイルは再生できません。また、指定した位置へのシークや再生速度の変更、再生サウンドのデータを取得するなどの高度な処理はできません。

UI

以下のUIを作成します。フォームにボタン2つを配置します。また、openFileDialogをフォームにドラッグして追加します。

コード

ボタンのClickイベントに下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SoundPlayer
{
  public partial class FormMain : Form
  {
    private System.Media.SoundPlayer player;

    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
        player = new System.Media.SoundPlayer(openFileDialog1.FileName);
        player.Play();
      }
    }

    private void button2_Click(object sender, EventArgs e)
    {
      player.Stop();
    }
  }
}

解説

button1

下記のコードでファイルを開くダイアログを表示し、再生するwavファイルを選択します。ファイルを開くダイアログで[OK]ボタンを押した場合はif文内を実行します。
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
}

System.Media.SoundPlayerクラスのインスタンスを作成します。コンストラクタの引数に再生するWaveファイルのファイル名を渡します。
Play()メソッドでWavの再生が始まります。Play()メソッドの再生は非同期で実行されるため再生によりUIが固まることはありません。
player = new System.Media.SoundPlayer(openFileDialog1.FileName);
player.Play();

button2

SoundPlayerクラスのStop()メソッドを呼び出すと再生を停止します。
player.Stop();

実行結果

フォームが表示されます。Button1を押します。


ファイルを開くダイアログが表示されます。wavファイルを選択し[OK]ボタンを押すと選択したWavファイルを生成します。


Button2を押すと再生が停止します。

補足

Waveファイルでない形式のファイルを開いた場合は System.InvalidOperationException 例外が発生します。

著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
掲載日: 2011-10-15
iPentec all rights reserverd.