https://smdn.jp/programming/netfx/tips/set_volume_of_soundplayer/このページに音量を調整可能なWaveStreamのクラスのコードが載っています。複数の音声を扱うために、これを以下のようにクラス化しました。Public Class SoundClass Public strm As WaveStream Public player As System.Media.SoundPlayer = Nothing Public Sub Start() If player IsNot Nothing Then Exit Sub player = New System.Media.SoundPlayer(strm) player.PlayLooping() End Sub Public Sub Stop0() If player IsNot Nothing Then player.Stop() player.Dispose() player = Nothing End If End SubEnd Class Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly() Dim kkk = New SoundClass With {.strm = New WaveStream(myAssembly.GetManifestResourceStream("WindowsApplication1.test.wav"))} kkk.Start() Thread.Sleep(1000) kkk.Stop0() Thread.Sleep(1000) kkk.Start() ’←ここでエラーが発生する End Classしかし、一回目の再生はうまくいくのですが、一度、停止してから再度再生しようとすると player.PlayLooping()WAVEヘッダーが壊れていますというエラーが出てうまくいきません。Public Class SoundClassの中で、 Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly() Dim strm As New WaveStream(myAssembly.GetManifestResourceStream("WindowsApplication1.test.wav"))}の宣言を行うとなぜかうまくいきます。なぜ、このエラーが発生するのでしょうか?
- Child Tree -