残像ブログ

残像だった

C#でWAVEファイルを再生する

簡単なアラームを作りたかったので音再生ってどうやるのかメモ。
Windowsが用意してるデュン!とかの標準装備音も出せるみたいだけど、びっくりしそうなので今回は効果音を自作してWAVEファイルを再生させる事にした。

WAVEファイルの再生にはSoundPlayerクラスを使う

SoundPlayerクラスは .NET Framework 2.0以降(VisualStudio2005以降)で使える。

インスタンスの作成

コンストラクタは引数にWAVEファイルパスを指定するものとstreamを指定するものとか色々ある。

//ファイルパスを指定するもの
 System.Media.SoundPlayer player = new SoundPlayer(@"c:\test.wav");

パスを指定する時に「\」がエスケープシーケンスと認識されてしまうので、「\\」として回避するか、文字列の前に「@」をつけて文字列リテラルと明示的に書くとかなんとか

//streamオブジェクトを指定するもの
 System.Media.SoundPlayer player = new SoundPlayer(Properties.Resources.test);

WAVEファイルをリソースとして取り込んだ時(後述)に使える

再生

あとはメソッド呼び出して再生したり止めたりすればいい。
再生に使うメソッド

Play() 音声を再生。再生し終わらなくても他の処理ができる。
PlayLooping() 音声をループ再生。再生し終わらなくても他の処理ができる。
PlaySync() 音声を再生。再生し終わらないと他の処理ができない。
Stop() 再生を止める。

WAVEファイルの設置

ファイルパスから呼び出す場合

これはそのまんま好きな場所にWAVEファイルを保存すればいい

リソースに取り込む場合

以下の操作はVisual Studio 2005でのものです

メニューバーの[プロジェクト]→[(プロジェクト名)のプロパティ]を選択し、表示される一覧からさらに「リソース」を選択(下図の1)。
上のほうにある「リソースを追加」の右側にある▼を押して(下図の2)「既存のファイルを追加」からWAVEファイルを選択する。
(初期表示では文字列リソースの一覧になっているので図の「文字列」からリソースの種類を「オーディオ」に変更すれば「リソースの追加」を押して直でWAVEを追加できる)

取り込んだリソースにアクセスするには下記のようにする(test.wavを取り込んだ場合)

Properties.Resources.test

strmオブジェクトで参照できるようだ