この問題には、DirectXを利用することで解決できます。事前に下記の設定をしたうえで、サンプルのように書けばOKです。このサンプルではボタンを押すと、他方のサウンド再生に関係なく、サウンドが再生します。なお、サンプルのように毎回インスタンスを生成しないと思ったように再生されません。
- C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.AudioVideoPlayback.dllを参照に追加
- app.configに<startup uselegacyv2runtimeactivationpolicy="true">を追加
以上の設定をした上で下記のコードのように書けばOK。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Microsoft.DirectX.AudioVideoPlayback; | |
private void button1_Click(object sender, EventArgs e) { | |
Audio audio1 = new Audio(@"C:\Windows\Media\tada.wav"); | |
audio1.Play(); | |
} | |
private void button2_Click(object sender, EventArgs e) { | |
Audio audio2 = new Audio(@"C:\Windows\Media\chimes.wav"); | |
audio2.Play(); | |
} |
はじめまして、コメント失礼します。プログラミング初心者です。
返信削除Visual C#で複数のwaveファイルを同時に再生するプログラムをかきたいのですが、やはり同時再生はむりで調べていたところここにたどり着きました。
もしよろしければ、DirectXを利用する際の設定をもう少し詳しく教えていただけないでしょうか?
初心者なものですいません(・_・;)
追記です。
返信削除調べていると少しわかってましたので、よければ「app.configに<startup uselegacyv2runtimeactivationpolicy="true">を追加」という部分のみでも教えていただけるとうれしいです。
加えて追記大変申し訳ないです。
返信削除解決することができました。コメントは無視か削除してください。
とても参考になる記事でした。ありがとうございました。