NAudioを利用してサウンドファイルを再生するコードを紹介します。
NAudioをインストールします。
NuGetパッケージマネージャーで以下のコマンドまたは、GUIのパッケージマネージャーでNAudioをインストールします。
Install-Package NAudio -Version 2.0.1
または
Install-Package NAudio
下図のフォームを作成します。ボタンを1つ、OpenFileDialogを1つ配置します。
下記のコードを記述します。
using NAudio.Wave;
namespace SimplePlaySound
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
WaveOutEvent outputDevice = new WaveOutEvent();
AudioFileReader afr = new AudioFileReader(openFileDialog1.FileName);
outputDevice.Init(afr);
outputDevice.Play();
}
}
}
}
OpenFileDialogを開き、ファイルを選択します。ファイルが選択された場合にifブロック内が実行されます。
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
/* 中略 */
}
WaveOutEventオブジェクトを作成し出力デバイスのオブジェクトを用意します。
WaveOutEvent outputDevice = new WaveOutEvent();
AudioFileReaderオブジェクトを作成しサウンドファイルを読み込みます。AudioFileReaderのコンストラクタの第一引数にサウンドファイルのパスを与えます。
AudioFileReader afr = new AudioFileReader(openFileDialog1.FileName);
WaveOutEventオブジェクトのInitメソッドを呼び出し、出力デバイスにサウンドファイルを設定します。Initメソッドの第一引数に再生するサウンドの
AudioFileReaderオブジェクトを与えます。
outputDevice.Init(afr);
WaveOutEventオブジェクトのPlayメソッドを呼び出し、サウンドを再生します。
outputDevice.Play();
上記のプロジェクトを実行します。下図のウィンドウが表示されます。
ボタンをクリックします。ファイルを開くダイアログが表示されますので、再生したいサウンドファイルを選択します。
サウンドが再生されます。ウィンドウの表示は変わりません。
サウンドファイルの停止やボリュームの変更ができるコードを紹介します。
下図のフォームを作成します。ボタンとOpeFileDialogとTrackBarコントロール(スライダー)を配置します。
下記のコードを記述します。
using NAudio.Wave;
namespace SoundPlayer
{
public partial class FormMain : Form
{
WaveOutEvent outputDevice;
AudioFileReader afr;
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
outputDevice = new WaveOutEvent();
afr = new AudioFileReader(openFileDialog1.FileName);
outputDevice.Init(afr);
label1.Text = openFileDialog1.FileName;
}
}
private void button2_Click(object sender, EventArgs e)
{
outputDevice.Play();
}
private void button3_Click(object sender, EventArgs e)
{
outputDevice.Pause();
}
private void button4_Click(object sender, EventArgs e)
{
outputDevice.Stop();
}
private void button6_Click(object sender, EventArgs e)
{
afr.Close();
outputDevice.Dispose();
label1.Text = "";
}
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
outputDevice.Volume = (float)(trackBar1.Value/100f);
}
private void button7_Click(object sender, EventArgs e)
{
afr.Position = 0;
}
}
}
[Open]ボタンのClickイベントです。WaveOutEventオブジェクトを作成して、AudioFileReaderでサウンドファイルを開き、
Initメソッドで設定します。先に紹介した再生のみのプログラムのコードとほぼ同じです。
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
outputDevice = new WaveOutEvent();
afr = new AudioFileReader(openFileDialog1.FileName);
outputDevice.Init(afr);
label1.Text = openFileDialog1.FileName;
}
}
[Play]ボタンのClickイベントです。WaveOutEventオブジェクトのPlayメソッドを呼び出し再生を開始します。
private void button2_Click(object sender, EventArgs e)
{
outputDevice.Play();
}
[Pause]ボタンのClickイベントです。WaveOutEventオブジェクトのPauseメソッドを呼び出します。~
private void button3_Click(object sender, EventArgs e)
{
outputDevice.Pause();
}
[Stop]ボタンのClickイベントです。WaveOutEventオブジェクトのStopメソッドを呼び出します。~
private void button4_Click(object sender, EventArgs e)
{
outputDevice.Stop();
}
[Prev]ボタンのClickイベントです。再生位置を最初に戻す場合は、AudioFileReaderオブジェクトのPositionプロパティを0に設定して、ファイルのシーク位置を最初に戻します。~
private void button7_Click(object sender, EventArgs e)
{
afr.Position = 0;
}
TrackBarのValueChangedイベントを実装します。トラックバーでつまみが変更したタイミングでイベントが呼び出されます。WaveOutEventオブジェクトのボリュームプロパティは0から1.0の範囲の値となるため、
トラックバーのMinプロパティを0、Maxプロパティを100に設定した場合は、100で割った値をVolumeプロパティに設定します。
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
outputDevice.Volume = (float)(trackBar1.Value/100f);
}
[Close]ボタンのクリックイベントです。WaveOutEventオブジェクトを開放し、AudioFileReaderオブジェクトを閉じます。
private void button6_Click(object sender, EventArgs e)
{
outputDevice.Dispose();
afr.Close();
label1.Text = "";
}
プロジェクトを実行します。下図のウィンドウが表示されます。
[Open]ボタンをクリックします。ファイルを開くダイアログが表示されますので、再生するサウンドファイルを選択します。ファイルが開かれるとラベルにファイルのパスが表示されます。
[Play]ボタンをクリックします。サウンドの再生が始まります。
スライダーをドラッグして変更するとボリュームが変化することが確認できます。
[Pause]ボタンをクリックするとサウンドが一時停止します。
[Play]ボタンをクリックすると再生が再開されます。
[Stop]ボタンをクリックすると再生が停止します。
[Prev]ボタンをクリックします。再生位置が最初に巻き戻されます。
[Play]ボタンをクリックすると、サウンドが最初から再生されます。
[Close]ボタンをクリックするとファイルが閉じられます。
ファイルが閉じられるとLabelの値がクリアされます。
サウンドの停止やボリュームの変更ができました。