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やデータベースの記事なども担当。