ポリフォニーをサポートする必要があるため、1 つの方法は、サウンドを再生するために waveOutXXXX Windows API に PInvoke することです。C# でこれを行う方法の良い例を次に示します。
https://www.codeproject.com/KB/audio-video/cswavplay.aspx
この例には、期間、サンプルレート、サンプルあたりのビット数などの情報を読み取るためのコードも含まれています。
検索すると、waveOutXXXX API は一度に 1 つのサウンドしか再生できないという主張が見つかる場合があります。これは Windows 95/98 では当てはまりましたが、現在は当てはまりません。
ところで、SoundPlayer はおそらく最もイライラする .NET クラスです。.Play() メソッドは、開始する前に、プロセスによって再生される他のサウンド (.NET アプリによって再生される他のサウンドである可能性があります) の再生を自動的に停止します。.DontStopJustPlay() メソッドまたは StopFirst bool パラメーターを .Play() メソッドに追加するのに、Microsoft の最悪のインターンは 1 分もかからなかったでしょう。Duration プロパティを追加するのに昼食の時間までかかったかもしれません。
waveOutXXXX は、適切に設計された最新の API に期待するよりも複雑ですが (.NET で使用すると、追加の問題が発生します)、比類のない利点の 1 つは、Windows 95 以降、すべての Windows コンピューターにプリインストールされていることです。 Windows モバイル デバイス。他のすべてのオプション (MediaPlayer を含む) は、誰かが常に何かをインストールする必要があることを意味します。