XNAでイントロ付きBGMを簡単にループ再生する方法

XNAでイントロ部分を一度だけ再生し、それ以降の部分をループ再生する方法です。
ひにけにXNAのひげねこさんが行った2ちゃんねるへの投稿がソースなのですが、とても有益な情報だと思ったので、ここでも記事にしておきます。


Waveファイルそのものにループポイントの情報を埋め込むことによって実現します。
XACTやプログラム上で特別な操作なしに実現できます。
また、ソースのWaveファイルをイントロ部分とループ部分に分ける必要もありません。
一応、実際に実験して、動作確認は取ってます。

方法

まずは、ループポイントを埋め込むことの出来る波形編集ソフトを入手します。
自分は、Wavosaurというフリーソフトを使いました。
http://www.wavosaur.com/


Wavosaurを例に取って説明します。

Waveファイルをドラッグ&ドロップで読み込み、
ループ指定したい箇所をドラッグで選択します。
そして、メニューバーの[Tools]->[Loop]->[Create loop points]を選択するとループポイントが設定されます。

そして、Waveフォーマットで保存します。


後は、XACTに普段通りに登録するだけです。
XACT上で特別な設定をしたり、特別なプログラムコードを用意する必要はありません。
ループ部分を無限ループにするには、Sound Bankに登録後、普段通りLoopingのInfiniteにチェックを付けます。

XACT Auditioning Utilityを経由して視聴したり、実際にプログラムに組み込むと、イントロ部分を再生した後、ループ指定した範囲でループ再生が行われるのを確認出来ます。