1
我想在我的VB.NET(VB 2010 Express)中播放一個MIDI文件,並且與我翻譯的代碼this other question here on Stack Overflow從C到VB。VB.NET中的MIDI聲音:暫停和恢復後,它聽起來不同
但是,我也需要暫停,而該代碼僅用於打開和停止。我編輯這樣的代碼:
Imports System.Runtime.InteropServices
Imports System.IO
''' <summary>
''' MCIPlayer is based off code by Slain.
''' Found here: http://www.sadeveloper.net/Articles_View.aspx?articleID=212
''' </summary>
Public Class MCIPlayer
Private Shared ReadOnly sAlias As String = "TeaTimerAudio"
<DllImport("winmm.dll")> _
Private Shared Function mciSendString(ByVal strCommand As String, ByVal strReturn As StringBuilder, ByVal iReturnLength As Integer, ByVal hwndCallback As IntPtr) As Long
End Function
Public Shared Sub Open(ByVal sFileName As String)
If _Status() <> "" Then
_Close()
End If
Dim sCommand As String = "open """ & sFileName & """ alias " & sAlias
mciSendString(sCommand, Nothing, 0, IntPtr.Zero)
End Sub
Public Shared Sub Close()
Dim sCommand As String = "close " & sAlias
mciSendString(sCommand, Nothing, 0, IntPtr.Zero)
End Sub
Public Shared Sub Pause()
Dim sCommand As String = "pause " & sAlias
mciSendString(sCommand, Nothing, 0, IntPtr.Zero)
End Sub
Public Shared Sub Play()
Dim sCommand As String = "play " & sAlias
mciSendString(sCommand, Nothing, 0, IntPtr.Zero)
End Sub
Public Shared Function Status() As String
Dim sBuffer As New StringBuilder(128)
mciSendString("status " & sAlias & " mode", sBuffer, sBuffer.Capacity, IntPtr.Zero)
Return sBuffer.ToString()
End Function
End Class
我這樣稱呼它:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MCIPlayer.Open("C:\Users\User\Desktop\aqua-roses_are_red.mid")
End Sub
Private Sub PlayButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PlayButton.Click
MCIPlayer.Play()
End Sub
Private Sub PauseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PauseButton.Click
MCIPlayer.Pause()
End Sub
Private Sub StopButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StopButton.Click
MCIPlayer.Close()
End Sub
的問題是,由於某種原因,如果我點擊播放,然後暫停,然後再次,在打文件實際上是從剩下的地方繼續播放,但是樂器完全不同。旋律切換回默認的鋼琴,而在暫停之前它是完全不同的聲音。
你能幫助我嗎?
我在Win7x64
非常感謝!最好
顯然,有人有同樣的問題,並能解決它: [http://www.freebasic.net/forum/viewtopic.php?p=23358&sid=937c1f6c627fec492be6eb08f837fa55][1] 我會明天檢查一下。 謝謝大家! [1]:http://www.freebasic.net/forum/viewtopic.php?p=23358&sid=937c1f6c627fec492be6eb08f837fa55 – Davide