![]() |
|
[VB6] DirectSound Example - Printable Version +- Sinisterly (https://sinister.ly) +-- Forum: Coding (https://sinister.ly/Forum-Coding) +--- Forum: Visual Basic & .NET Framework (https://sinister.ly/Forum-Visual-Basic-NET-Framework) +--- Thread: [VB6] DirectSound Example (/Thread-VB6-DirectSound-Example) |
[VB6] DirectSound Example - Coder-san - 12-02-2010 Hello people. Below is an example of DirectSound (DirectX 7). DirectX 7 should be available in many OS including XP, I am not sure about the newer ones but their usage should be similar. With DirectSound you can give your VB6 app multi-channel sounds, with very low usage. Loop or simple, perfect for games. ![]() I wouldn't say this is made or found by me, I just modded the original example. Full credits go to Jack Hoxley. Here is his website: www.dx4vb.da.ru I can't seem to find the original example now. Here is the source. "Y:\VB\Piano\b.wav" is the Wav file it will play. Code: Option Explicit
Dim Dx As New DirectX7
Dim Ds As DirectSound
Dim DsBuffer1 As DirectSoundBuffer
Dim DsDesc As DSBUFFERDESC, DsWave As WAVEFORMATEX
Sub Initialise()
Set Ds = Dx.DirectSoundCreate("")
If Err.Number <> 0 Then
MsgBox "Unable to Continue, Error creating Directsound object."
Exit Sub
End If
Ds.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL
DsDesc.lFlags = DSBCAPS_CTRLFREQUENCY Or DSBCAPS_CTRLPAN Or DSBCAPS_CTRLVOLUME Or DSBCAPS_STATIC
DsWave.nFormatTag = WAVE_FORMAT_PCM 'Sound Must be PCM otherwise we get errors
DsWave.nChannels = 2 '1= Mono, 2 = Stereo
DsWave.lSamplesPerSec = 22050
DsWave.nBitsPerSample = 16 '16 =16bit, 8=8bit
DsWave.nBlockAlign = DsWave.nBitsPerSample / 8 * DsWave.nChannels
DsWave.lAvgBytesPerSec = DsWave.lSamplesPerSec * DsWave.nBlockAlign
End Sub
Public Function PlaySound(Bool As Boolean)
On Error GoTo ExitThis
If Bool = True Then
Call Initialise
Set DsBuffer1 = Ds.CreateSoundBufferFromFile("Y:\VB\Piano\b.wav", DsDesc, DsWave): DsBuffer1.Play DSBPLAY_DEFAULT
Else
DsBuffer1.Stop: DsBuffer1.SetCurrentPosition 0
End If
ExitThis: Exit Function
End Function
Private Sub Command1_Click()
Call PlaySound(True)
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Call PlaySound(False)
End SubFor this to work, you would have to refer DirectX 7 Visual Basic Type Library |