DirectXVisual Studio .NET 2003Windows 2003.NET 1.1Windows 2000Windows XP中级开发Visual StudioWindows.NETVisual Basic
简单的 VB.NET MIDI & 波形播放类






2.89/5 (7投票s)
2004年10月8日

138266
VB.NET 的 MIDI & 波形播放器。
引言
这是一个简单的类,用于在您的 VB.NET 应用程序中播放 MIDI 和波形文件。
使用代码
将一个新的类文件添加到您的项目中,并将代码复制到其中。 引用 DirectX7 COM 对象。
Imports System
Imports DxVBLib
Public Class SoundPlayer
' Basic Wave and MIDI Player Class for VB.net 1.1
' Requires COM-Object : DirectX7
Private Declare Function mciSendString Lib "Winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private File As String
Private m_dx As New DirectX7
Private m_ds As DirectSound
Public Sub New(ByVal strFileName As String)
Me.File = strFileName
End Sub
' To show what file is selected (if needed)
Public ReadOnly Property FileName() As String
Get
Return File
End Get
End Property
Public Function PlaySound() As Boolean
If InitAudio() = True Then
If PlayFile() = True Then
Return True
Else
Return False
End If
Else
' Audiohardware not found
' exit here
Return False
End If
End Function
Public Function StopSound() As Boolean
StopFile()
End Function
Private Function PlayFile() As Boolean
Dim lRet As Long
Try
StopFile()
lRet = mciSendString("open " & Me.File & " alias track", "", 0, 0)
lRet = mciSendString("play track", "", 0, 0)
PlayFile = (lRet = 0)
Catch ex As Exception
Return False
End Try
Return True
End Function
Public Function CloseAudio()
mciSendString("close all", 0, 0, 0)
End Function
Private Function StopFile() As Boolean
Dim lRet As Long
Try
lRet = mciSendString("stop track", "", 0, 0)
lRet = mciSendString("close track", "", 0, 0)
Return True
Catch ex As Exception
Return False
End Try
End Function
Private Function InitAudio() As Boolean
m_ds = m_dx.DirectSoundCreate("")
If Err.Number <> 0 Then
Return False
Else
Return True
End If
End Function
End Class
在您的应用程序中,像这样播放声音
Dim Sound As New SoundPlayer(".\sound\testmidi.mid")
Sound.PlaySound()
或
Sound.StopSound()
停止播放。
Sound.FileName
显示在声明时提供给类的文件名。
我没有测试过,但我相信它也适用于 DX8 或 DX9。 并且始终记住:这段代码是为初学者提供的,用于演示如何播放 MIDI 和波形文件。 该类只播放每个文件一次。 不循环...