Сайт Влада

Как воспроизвести WMA, MP3, MIDI файлы?

Многие программисты знают, как на VB воспроизвести MIDI или WAV файл. Однако MIDI воспроизводится только после небольшого зависания, а, используя WAV для записи музыки, дистрибутив вашей программы будет весить на порядок больше и она станет непригодной для распространения по сети.

Как вы уже догадались, решить такую задачу без постороннего вмешательства VB не под силу. Для этого нам потребуется библиотека quartz.dll, которая распространяется с DirectX.

Подключите эту библиотеку к вашему проекту через меню Проект>Информация (Project>References), затем создайте новый класс clsSound, и поместите туда следующий код:

Dim snd As IMediaControl
Dim MP As IMediaPosition

Function LoadSound(ByVal SndPath As String)
Set snd = New FilgraphManager
Set MP = snd
snd.RenderFile SndPath
End Function

Function PlaySound()
snd.Run
MP.CurrentPosition = 0
End Function

Function StopSound()
snd.Stop
End Function

Function PauseSound()
snd.Pause
End Function

Public Property Get Position() As Integer
Position = MP.CurrentPosition
End Property

Public Property Let Position(ByVal NewPos%)
MP.CurrentPosition = NewPos
End Property

Теперь создайте новую форму, если у вас еще ее нет, и разместите на ней кнопки Command1 и Command2. Вставьте этот код в модуль формы:

Dim sndPlayer As New clsSound

Private Sub Form_Load()
sndPlayer.LoadSound "C:\1.mp3"
End Sub

Private Sub Command1_Click()
sndPlayer.PlaySound
End Sub

Private Sub Command2_Click()
sndPlayer.StopSound
End Sub

Ну и, напоследок, если вы хотите, чтобы ваша музыка повторялась, вставьте таймер и напишите:

Private Sub Timer1_Timer()
Static LastPos%
If sndPlayer.Position = LastPos Then
sndPlayer.Position = 0
sndPlayer.PlaySound
End If
LastPos = sndPlayer.Position
End Sub

Оригинальная статья Влада Рубцова. https://vladikcomper.scanf.su/