• 締切済み

サウンド再生方法について

DirectXを使用したwavの再生方法が分からなくて困っています。サンプルソースが合ってもバージョンが違って記載方法が違ったりと・・・。 開発環境は下記のとおりです。 VisualBasic2008 DirectX9 再生ファイルはWAVです。 よろしくお願いします。

みんなの回答

回答No.2

DirectSoundは「波形データ」によって音を生成します。つまり、よりハードウェアに近いレベルでプログラミングすることができ、エフェクトを掛けたり、波形を編集したりなどが可能です。ただし、WAVEファイルから波形データを取り出す必要があることや、圧縮されたサウンド形式の場合はデコードを行う必要があったりと、扱いは難しくなります。 ファイルからの再生だけであれば、AudioVideoPlaybackがお手軽です。 ※Managed DirectXは、.NET FrameworkをインストールしたあとでDirectX9(?)をインストールしないと組み込まれないようです。他のコンピュータで使う場合は注意してください。 MDX以外でも音楽再生の方法はいくつかありますので、参考URLを載せておきます。

参考URL:
http://dobon.net/vb/dotnet/programing/playmidifile.html
noname#163501
質問者

お礼

適切なアドバイスをありがとうございます。

回答No.1

ネイティブな「DirectX」と.NET用の「Managed DirectX(MDX)」でコーディング方法が違うのでまずどちらを使うか、を。 さらにMDXの場合、AudioVideoPlaybackに丸投げする方法とDirectSoundのサウンドバッファを使う方法があります。 ひとまず簡単なMDX + AudioVideoPlaybackのコードだけ載せておきます。 [ 参照追加 ] Microsoft.DirectX.AudioVideoPlayback [ コード ] Private mdxAudio As Microsoft.DirectX.AudioVideoPlayback.Audio ' WinXPの起動音を再生 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click mdxAudio = New Microsoft.DirectX.AudioVideoPlayback.Audio("C:\WINDOWS\Media\Windows XP Startup.wav") mdxAudio.Play() End Sub ' 停止 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click mdxAudio.Stop() mdxAudio.Dispose() End Sub また、MDXを使うと、LoaderLockによる例外が発生するので、例外一覧からこれをはずします。 メニュー[デバッグ]->[例外] Managed Debugging Assistants にある LoaderLock のチェックをはずしてください。

noname#163501
質問者

補足

早速のご回答ありがとうございます。 うまくいきました。ついでで申し訳ないですが、AudioVideoPlaybackとDirectSoundの違いは何でしょう? ちょっと調べてみるとAudioVideoPlaybackのほうが色々使えて便利そうですね。DirectSoundを使わないほうがやりやすいでしょうか?人にもよると思いますが・・・。

関連するQ&A

専門家に質問してみよう