2015年05月14日

NAudioの調査-AudioFileReaderクラス

NAudioを利用した場合、手軽に音を再生するといったクラスは存在しません(よね?)。

多分、豊富な機能のなかから必要なものを組み込んで効率的なプログラムを組んで下さい、というスタンスなのだと思う。

しかしSoundPlayerクラスでは使えない、例えば
  • 多重再生が出来る様にしたい。
  • WAV以外のファイルも再生可能にしたい。
  • 再生終了のイベントが欲しい。
といった場合にNAudio使用を検討する場合だと、手軽に再生できるクラスが存在しないのはマイナスだと思われます。

しかし、若干は改善されている様です。その例が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
ブックマークボタン
posted by acha-ya at 22:07| Comment(0) | .NET一般 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
検索する
投稿する
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。