多分、豊富な機能のなかから必要なものを組み込んで効率的なプログラムを組んで下さい、というスタンスなのだと思う。
しかしSoundPlayerクラスでは使えない、例えば
- 多重再生が出来る様にしたい。
- WAV以外のファイルも再生可能にしたい。
- 再生終了のイベントが欲しい。
しかし、若干は改善されている様です。その例がAudioFileReaderクラス。
このクラスが、NAudioのどのバージョンからサポートされたのか不明ですが、わりと最近のバージョンからだと思われます。NAudioを使用した再生関連記事のソースを見ると、よく拡張子によって、".wav"ならWaveFileReader、".mp3"ならMp3FileReaderといった、使い分けをしているソースを見かけます。
私が調査している現行バージョン1.7.3では、AudioFileReaderクラスが使えます。これを使用すれば、こういったFileReaderの振り分けは内部で自動的にやってくれます。ちなみにAudioFileReaderクラスでは、上記以外に、".aiff"ならAiffFileReader、それ以外(.wav,.mp3,.aiff以外)ならMediaFoundationReaderに振り分けられます。
そしてAudioFileReaderでは、Volumeプロパティが実装されています!
これは内部的にSampleChannelクラスを使用してこのクラスのVolumeプロパティを、AudioFileReaderクラスから操作出来るように、公開プロパティとして実装されたものです。もちろん再生前だけでなく、再生中にVolumeを変更しても、きちんと再生音量が調整されます。なかなか便利です。
個人的には、このAudioFileReaderクラスにLoop再生のサポートが組み込まれれば最高なのですが、残念ながらそこまでは実装されていませんね。
※最後にLoop再生に触れたので、ちょっと紹介しておくと、NAudioのDOCUMENTATION部分に、"Implement Looped Playback"というのがあって、ここでLoop再生のやり方が示されています。
ラベル:NAudio
【関連する記事】