- 締切済み
サウンド再生方法について
DirectXを使用したwavの再生方法が分からなくて困っています。サンプルソースが合ってもバージョンが違って記載方法が違ったりと・・・。 開発環境は下記のとおりです。 VisualBasic2008 DirectX9 再生ファイルはWAVです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
DirectSoundは「波形データ」によって音を生成します。つまり、よりハードウェアに近いレベルでプログラミングすることができ、エフェクトを掛けたり、波形を編集したりなどが可能です。ただし、WAVEファイルから波形データを取り出す必要があることや、圧縮されたサウンド形式の場合はデコードを行う必要があったりと、扱いは難しくなります。 ファイルからの再生だけであれば、AudioVideoPlaybackがお手軽です。 ※Managed DirectXは、.NET FrameworkをインストールしたあとでDirectX9(?)をインストールしないと組み込まれないようです。他のコンピュータで使う場合は注意してください。 MDX以外でも音楽再生の方法はいくつかありますので、参考URLを載せておきます。
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
ネイティブな「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 のチェックをはずしてください。
補足
早速のご回答ありがとうございます。 うまくいきました。ついでで申し訳ないですが、AudioVideoPlaybackとDirectSoundの違いは何でしょう? ちょっと調べてみるとAudioVideoPlaybackのほうが色々使えて便利そうですね。DirectSoundを使わないほうがやりやすいでしょうか?人にもよると思いますが・・・。
お礼
適切なアドバイスをありがとうございます。