Results 1 to 40 of 181

Thread: Sugestions or Comments about my Sound Tutorial

Threaded View

  1. #26
    Junior Member
    Join Date
    Jun 2012
    Posts
    20

    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
  •  



Click Here to Expand Forum to Full Width