2011-01-19 59 views
7

ノートパソコン用のゲームを設計する:同時に2つのサウンドを同時に再生する

同時に2つのサウンドを再生したいです!背景の音楽とボタンを押すと音がする!

System.Mediaを使用すると、2つのサウンドを同時に再生することはできません。バックグラウンドミュージックのために、私は次のように使用:

SoundPlayer sp = new SoundPlayer(@"..\..\bin\debug\tribal dance.wav"); 
sp.Play; 

私は別のSoundPlayerを果たした場合、以前のものは停止します!

フォームが閉じられるまで、バックグラウンドミュージックを再生しておきたいです。同時に、ボタンをクリックすると、別のサウンドが音楽で再生されます。

また、Windows Media Playerをツールボックスに追加して使用しました(2つのサウンドを同時に再生できます)。それはうまく動作しますが、もし私が(@""..\..\bin\debug\tribal dance.wav"); を入れれば、そのパスはエラーになり、どんなコンピュータでも読むことができるようにそれを置く必要があります。

提案がありますか?

+0

[wavファイルを非同期で複数回再生する](http://stackoverflow.com/questions/4429513/play-wav-file-async-multiple-times-with-net) –

+1

これは可能ではありませんあなたの質問への直接の回答ですが、私は強くあなたのゲームのサウンドのためにFMODを使用することをお勧めします。それは非常に使いやすく、ゲーム用に設計されています。 – JimDaniel

答えて

-3

http://msdn.microsoft.com/en-us/library/dd562851%28v=VS.85%29.aspxこの記事はあなたが一度SoundPlayerのを使用して2つのサウンドを再生することはできません ファイルへの絶対パスが必要な場合は、次のコードを使用することができます

string soundFile = Path.Combine(Directory.GetCurrentDirectory() + "file.wav"); 
6

に役立つことがあります。

SoundPlayerは、ネイティブのWINAPI PlaySound機能を使用して、同時サウンドの再生をサポートしていないタスクを実行しています。 SoundPlayerの複数のインスタンスを作成することは役に立ちません。

ウィンドウのネイティブ音声libraryまたはDirectSoundに低レベルAPIの多くを実装伴うほとんどは多くのオプション(C#のではないとの相互運用コードの多くを必要とどちらも注意してください)

が最も簡単なオプションが依存することですがありますあなたのためにオーディオを再生するWindows Media Player。

その後、

var player = new WMPLib.WindowsMediaPlayer(); 
player.URL = @"..\..\bin\debug\tribal dance.wav"; 

注意を使用します。

"\ WINDOWS \ System32に\のWmp.dll C" は:への参照を追加プレイはURLプロパティ

下側を設定した後すぐに開始このアプローチの利点は、アプリケーションが正しく動作するためのメディアプレーヤーへの依存です。また、メディアプレーヤーでサポートされているファイル形式を使用することもできます。

関連する問題