「効果音」タグのついた投稿

結構時間は立ちましたがPSMゲームジャムでMonoGamesを使った際、音の再生で問題が有ったので音の再生に関してメモします (ドキュメントを見た方が早い気もしますが・・・)

 

今回は効果音の再生についてメモします。PSMではWave形式のファイルが効果音として使用されており、現在のバージョンでは他の形式はサポートしていないみたいです。

 

効果音の再生にはSce.PlayStation.Core.Audioネームスペース内にあるSoundクラスと、SoundPayerクラスが使用されます

 

Soundクラスは効果音自体を保持するクラスです。Soundクラスを生成するにはプロジェクトに追加している効果音ファイルのパスを渡すか、音データを表すByte型のデータを渡す事が出来ます。Byteデータの方はプログラム上で変換したり、別のファイル読み込みで獲得したデータを使う時等に使用できます。

 

Sound se = new Sound("/Application/SE/Select.wav" );

 

データを読み込みSoundクラスを作った後、今度は読み込んだ音を再生する為のSoundPlayerを作成します。SoundPlayerはSoundクラスのCreatPlayer()メソッドを呼び出す事で生成されます。

 

SoundPlayer soundPlayer = se.CreatPlayer();

 

後はSoundPlayerのPlay()メソッドを呼ぶだけで再生できます。

 

soundPlayer.Play();

 

ドキュメントにも書いてありますが、一つのSoundクラスから複数のSoundPlayerを作成する事が出来、それにより同じ効果音を別々に再生する事が出来ます。

 

再生する音の音量等はSoundPlayerクラスで調整できます。詳しくはドキュメントを参照した方が良いと思いますが、細かい調整意外で使用しそうなプロパティを書いておきます:

 

音量をの変更( 0.0f~1.0f の間。0.0fが0%で1.0fが100%)

soundPlayer.Volume = 0.75f;

ループ再生の切り替え

soundPlayer.Loop = false;

再生の状態( 停止中か再生中か)

// 停止中の場合は再生する処理
if ( soundPlayer.Status == SoundStatus.Stopped )
{
     soundPlayer.Play();
};

 

今回は以上です。

次回は多分BGMの再生をメモします。

今回はXACTを使用せず、簡単に効果音を再生する方法を紹介します。

効果音はSoundEffectクラスに読み込み、保存します。読み込みにはコンテントマネージャーを使用しますので、まずはプロジェクトに再生する効果音を足してください(ちなみに、私は効果音には waveファイルを使用しています)。

その後、効果音を読み込みます:

SoundEffect se;
se = Content.Load(“explosion”);

次に効果音の再生です:

se.Play();

これで、再生できます。なお、音量、ピッチ、パンを調整することも出来ます。

se.Play( volume, pitch, pan );

Play()メソッドはbool型を返します。trueの場合はファイルが再生され、falseの場合は再生の失敗を表します。この場合、基本的には再生しているファイル数が多すぎるのが原因です。

今回はココまでです。

 

参考リンク:

http://msdn.microsoft.com/ja-jp/library/microsoft.xna.framework.audio.soundeffect%28v=xnagamestudio.40%29.aspx