はじめまして。VB2005で幼児向けのゲームを制作しています。そこで、ゲームを進める上でBGMと効果音を再生したいと考えています。音楽を再生するプログラムは様々なサイトで見つけることができました。プログラムをUSBに保存した場合には音楽を再生できます。しかし、誰のどのパソコンでも、ネットワークにあげた場合でも問題なく音楽が再生される方法が分かりません。どのようにすべきなのか、ご指導お願いします。
[My Project] の「リソース」タブから、必要なオーディオ リソース(*.wav)を登録してください。例えばそれが、"ding.wav" ファイルであれば、それを再生するために My.Computer.Audio.Play(My.Resources.ding, AudioPlayMode.BackgroundLoop)のようなコードを記述する事ができます。リソースとして指定すると、wav ファイルが EXE 内に取り込まれるため、EXE の配置先がどこであっても、再生することができるようになります。
返信ありがとうございます。この方法ではmp3やmidファイルの場合でも再生は可能なのでしょうか?そして、ネットワーク上に保存した場合でも同じ方法で適用できますか?お答え頂けると助かります。
> この方法ではmp3やmidファイルの場合でも再生は可能なのでしょうか?My.Computer.Audio.Play メソッドhttp://msdn.microsoft.com/ja-jp/library/cf1shcah(VS.80).aspx>.wav サウンド ファイルを再生します。というわけで,SMFは間違いなく無理です。で,内部ではSystem.Media.SoundPlayer.Play等を呼び出しています。# .NET 3.5のソースを参照しました。で,そのSoundPlayer.Playですが,http://msdn.microsoft.com/ja-jp/library/system.media.soundplayer.play(VS.80).aspx例外に>InvalidOperationException> .wav ヘッダーが破損しています。SoundLocation で指定したファイルは、> PCM .wav ファイルではありません。とあるため,通常のMP3ファイルはもちろん,WAVEに入れたMP3ファイルも再生することは出来ません。MCIをP/Invokeするとか,Windows Media PlayerをCOMで扱うなどするのが,再生方法としては簡単な部類に入るのではないでしょうか。
> この方法ではmp3やmidファイルの場合でも再生は可能なのでしょうか?たとえば、Managed DirectX を使う事ができます。Microsoft.DirectX.AudioVideoPlayback.Audio クラスの Play メソッドで音楽ファイルを再生できます。参照設定で、"Microsoft.DirectX" と "Microsoft.DirectX.AudioVideoPlayback" を有効にしておいた上で、 Dim audio As New Microsoft.DirectX.AudioVideoPlayback.Audio(fileName) audio.Play()といった感じですね。ストリームからの再生機能が無いようなので、もしもリソースから再生したい場合には、リソースを一時ファイルとしてHDDにコピーする必要があるかも知れません。他にも再生方法はありますが、とりあえずはこの辺りとか。http://dobon.net/vb/dotnet/programing/playmidifile.html