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オブジェクトで参照できるようだ