Работа со звуком в VB

В этой статье я нашёл очень много полезного и интересного!!! Надеюсь и остальным читателям она покажется не менее интересной! А теперь статья (всё, что ниже, написано автором):

Итак, код модуля для проигрывания звука:
'------------------------------------------------------------
' Работа со звуком
'------------------------------------------------------------

Option Explicit

' Функции и константы для проигрывания звуков. Декларации.
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Declare Function sndStopSound Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszNull As Long, ByVal uFlags As Long) As Long

' Звук воспроизводится синхронно, и функция не возвращает _
управления до окончания его проигрывания.

Global Const SND_SYNC = &H0

' Звук воспроизводится асинхронно, функция возвращает управление _
сразу после начала воспроизведения.

Global Const SND_ASYNC = &H1

' Для прекращения воспроизведения необходимо вызвать sndPlaySound() _
c NULL  в качестве аргумента-имени файла

' Если указанный файл отсутствует, функция неделает ничего.
Global Const SND_NODEFAULT = &H2

' Параметр SoundName указывает на звук, образ которого уже _
находится в оперативной памяти.

Global Const SND_MEMORY = &H4

' Воспроизведение звука повторяется до тех пор, пока не будет _
вызвана функция sndPlaySound() c NULL  в качестве

Global Const SND_LOOP = &H8

' параметра IpszSoundName. Для работы этого флага необходимо _
установить также флаг SND_ASYNC.

' Если звук уже воспроизводится, функция не прерывает его _
воспроизведение, а немедленно возвращает FALSE.

Global Const SND_NOSTOP = &H10

Function NoiseGet(ByVal FileName) As String
'------------------------------------------------------------
' Загрузка звука в строковую переменную.
'------------------------------------------------------------

Dim buffer As String
Dim f As Integer
Dim SoundBuffer As String

   On Error GoTo NoiseGet_Error

    buffer = Space$(1024)
    SoundBuffer = ""
    f = FreeFile
    Open FileName For Binary As f
    Do While Not EOF(f)
       Get #f, , buffer    ' Load in 1K chunks
        SoundBuffer = SoundBuffer & buffer
   Loop
   Close f
    NoiseGet = Trim$(SoundBuffer)
Exit Function

NoiseGet_Error:
    SoundBuffer = ""
   Exit Function
End Function

Sub NoisePlay(SoundBuffer As String, ByVal PlayMode As Integer)
'------------------------------------------------------------
' Проигрывание звука загруженного в память с помощью функции
' NoiseGet().
'------------------------------------------------------------
Dim retcode As Integer

   If SoundBuffer = "" Then Exit Sub

    ' Stop any sound that may currently be playing.
    retcode = sndStopSound(0, SND_ASYNC) ' код для прекращения звука

   ' PlayMode should be SND_SYNC or SND_ASYNC
    ' проигрывание звука
    retcode = sndPlaySound(ByVal SoundBuffer, PlayMode Or SND_MEMORY)
End Sub

'------------------------------------------------------------
' Примеры применения
'------------------------------------------------------------
' ' Определение и загрузка звука
'  wavFinal = NoiseGet(App.Path & "\" & "finalrealty.wav")
'
' код для прекращения звука (Мало ли, играл раньше)
'  NoisePlay 0, SND_ASYNC
' Проигрывание звука
'  NoisePlay wavFinal, SND_ASYNC

Хочу обратить ваше внимание на константы.
Этот модуль я нашел в исходных текстах какой-то программы, взятой на одной из страничек в Интернете, немножко его подкорректировал и написал все комментарии.

Hosted by uCoz