肩の力を抜くためにも今回はとりあえず音を流してみましょう。
「Microsoft.DirectX」と「Microsoft.DirectX.DirectSound」を参照に追加しておいてください。
using System; using System.Windows.Forms; using System.IO; using Microsoft.DirectX.DirectSound; using DS = Microsoft.DirectX.DirectSound; namespace Sound2 { /// <summary> /// Class1 の概要の説明です。 /// </summary> public class SoundForm:Form { private Device device_; private DS.SecondaryBuffer secondaryBufferA_; //開くファイル private string fileName =@"i:\temp\test.wav"; public SoundForm() { this.Text="DirectSoundのテスト"; DSInitialize(); } protected override void Dispose( bool disposing ) { if( disposing ) { if(secondaryBufferA_ != null) { secondaryBufferA_.Stop(); secondaryBufferA_.Dispose(); } if(device_ != null) { device_.Dispose(); } } base.Dispose( disposing ); } private void DSInitialize() { device_ =new Device(); //協調レベルの設定 device_.SetCooperativeLevel(this,CooperativeLevel.Normal); //バッファについての情報設定クラス BufferDescription desc=new BufferDescription(); //セカンダリバッファを作成 secondaryBufferA_ = new SecondaryBuffer(fileName,desc,device_); //再生開始 secondaryBufferA_.Play(0,0); } } public class Program { public static void Main() { Application.Run(new SoundForm()); } } }
えーと、まあ動きます。ですが「Waveファイルしか再生できません」。これはDirectSoundの仕様です。DirectMusicならば、mp3等も再生しやすいのですが………。
ああ、そういえばメモリも大量に消費します。ここら辺については次回以降で頑張って改善していきましょう。