|
-
Jun 22nd, 2012, 03:36 AM
#26
Junior Member
Re: Sugestions or Comments about my Sound Tutorial
Here is the total code running
Private DX As New DirectX7
Private DSEnum As DirectSoundEnum
Private DIS As DirectSound
Private DSSecBuffer As DirectSoundBuffer
Private Sub Form_Load()
Dim BuffDesc As DSBUFFERDESC, WaveFormat As WAVEFORMATEX
' get enumeration object
Set DSEnum = DX.GetDSEnum
' select the first sound device, and create the Direct Sound object
Set DIS = DX.DirectSoundCreate(DSEnum.GetGuid(1))
' Set the Cooperative Level to normal
DIS.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL
' load the wave file, and create the buffer for it
Set DSSecBuffer = DIS.CreateSoundBufferFromFile("C:\WINDOWS\Media\tada.wav", BuffDesc, WaveFormat)
resultbuffer = ConvertWave16ReSample(DSSecBuffer, 22500, 14700, False)
resultbuffer.Play DSBPLAY_DEFAULT
End Sub
Public Function ConvertWave16ReSample(Buff() As Integer, ByVal FromSample As Long, ByVal ToSample As Long, ByVal Stereo As Boolean) As Integer()
Dim K As Long, Lx As Long, RX As Long
Dim Ret() As Integer, Per As Double, NewSize As Long
If Not Stereo Then
NewSize = Fix((UBound(Buff) + 1) * ToSample / FromSample + 0.5)
ReDim Ret(NewSize - 1)
For K = 0 To UBound(Ret) - 1
Per = K / UBound(Ret)
Lx = Fix(UBound(Buff) * Per)
Ret(K) = FindYForX(UBound(Buff) * Per, Lx, Buff(Lx), Lx + 1, Buff(Lx + 1))
Next K
Ret(UBound(Ret)) = Buff(UBound(Buff))
Else
NewSize = Fix((UBound(Buff) + 1) * ToSample / FromSample + 0.5)
NewSize = NewSize - (NewSize Mod 2)
ReDim Ret(NewSize - 1)
For K = 0 To UBound(Ret) Step 2
Per = K / (UBound(Ret) + 2)
' Left channel
Lx = Fix(UBound(Buff) * Per / 2#) * 2
Ret(K + 0) = FindYForX(UBound(Buff) * Per, Lx, Buff(Lx), Lx + 2, Buff(Lx + 2))
' Right channel
RX = Lx + 1
Ret(K + 1) = FindYForX(UBound(Buff) * Per + 1, RX, Buff(RX), RX + 2, Buff(RX + 2))
Next K
Ret(UBound(Ret) - 1) = Buff(UBound(Buff) - 1)
Ret(UBound(Ret)) = Buff(UBound(Buff))
End If
ConvertWave16ReSample = Ret
End Function
Last edited by jignesh142; Jun 23rd, 2012 at 06:12 AM.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|