C#でmp3を再生するのはどうすればいいのでしょうか?

実は簡単にできます。

Windows Media Playerを使用します。まずプロジェクトの参照に、C:\Windows\System32\wmp.dllを追加します。

あとはこれでOK.

WMPLib.WindowsMediaPlayer player = new WindowsMediaPlayer();

演奏の途中でこれを実行するとこれまで再生されていたものは中止されて、新しく実行されたメソッドにわたされたファイルが再生されます。

同じファイルしか再生しない場合、ファイルパスをフィールド変数に保存したくなりますが、以下のコードでは再生中にSoundPlay(string filePath)を実行しても無視されます。

もし途中で最初から再生したい場合はいったん再生を停止しなければなりません。

ではエンドレスで音楽を再生する方法を考えます。ゲームのBGMとか途中でBGMが切れてしまっては興ざめです。

まずは再生時間を知る必要があります。

そのためには[参照の追加]で「Microsoft Shell Controls And Automation」を追加します。そして以下のようにすると再生時間を取得することができます。

GetDetailsOfでファイルプロパティを取得します。第二引数で「27」を指定すると「長さ」を取得できます。ほかにも様々なプロパティを取得できます。

最後に取得した文字列をTimeSpanに変換して返しています。取得できる再生時間の単位は秒なので、1秒に満たない場合は0秒になります。

ではこれを使ってエンドレスで再生させてみましょう。

それから特定の部分だけをエンドレスで再生するクラスもつくってみましょう。