投稿者 bz9  (中学生) 投稿日時 2013/6/9 09:37:15
> GCが原因なら,Marshal.AllocHGlbalでアンマネージドメモリを割り当てれば済みそうな気がしますが……。

あれ、これ使ってもノイズが鳴っちゃうってことは、もしかしてGCが原因じゃなかったのか・・?
Dim Addr As IntPtr = IntPtr.Zero
Sub Wave(ByVal Data As Byte())
    Marshal.FreeHGlobal(Addr)
    Addr = Marshal.AllocHGlobal(Data.Length)
    Marshal.Copy(Data, 0, Addr, Data.Length)
    PlaySound(Addr, IntPtr.Zero, SND_ASYNC Or SND_MEMORY)
End Sub

これで呼び出してみているんですが、やっぱりノイズみたいなのがなっちゃいます。

一応どんな感じの音がなるのか録音してみました。

正常ななり方:http://sites.google.com/site/bz9okiba/Test.wav
ノイズ?:http://sites.google.com/site/bz9okiba/noise.wav


> PlaySoundではなく、mciSendStringを使うとどうでしょうか?

るきおさんのサンプルのファイル名だけ書き換えて実行したら、正しく再生されました。

mciSendStringで再生できたので解決にします。


ただ、何でPlaySound関数だと成功しないのかが気になります・・・・