Please Winamp Plugin FX IN VB

Started by lagarto, 18 Aug '03 - 03:59

lagarto

Somebody can help myself to reproduce two audio files with in Plugin FX Winamp in VB...

I already tried with WinampDSP.ocx for RegG without success.

Please...  :'(

Chris

#1
Hi  I`m only a Delphianer but I have make a little Look
at the VB-Source of WinampDSPVBSource.
(much in Visual Basic is similarly as in Delphi)

Stupid error
Just Change this 2 Lines  in the frmPath.frm
Remove
Private Sub Form_Load()
   Drive1.drive = "c:"
   Dir1.Path = "c:\program files\winamp\plugins\"
End Sub



Remove this Form_load procedure and and all will work....

Greets Chris


lagarto

OK. Thank you Chris. But actually that is not my problem. My problem is the following, I need to execute two audio files MP3 with effect, but when I try to mix the two files, it is with the distorted sound. Will it be that anybody could not help myself?  :'(

Chris

#3
Mmm if I right understand  you have to streams with an effect and you want to mix the 2 streams to a final mix right ??

I recommend this Post
http://www.un4seen.com/YaBB.cgi?board=bass&action=display&num=1038170286#5
it shows how to mix 2 or more Streams to a final mix
(the code is C++ / delphi)  but i think its possible
to convert it.....to VB...

Chris

lagarto

::) OK Chris. I think now you understood my problem. My code source this below. Will it be that you can help myself?


Public m_hStreamA(2) As Long
Public m_hPlayHandleA(2) As Long

Public Const decblock = 4608
Public excess(decblock * 2) As Byte
Public exlen As Long

Public freq As Long

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal length As Long)

Public Function STREAMPROC(ByVal Channel As Long, ByVal buffer As Long, ByVal length As Long, ByVal user As Long) As Long
     On Error Resume Next
     Dim decbuff(decblock * 2) As Byte
     Dim tempbuffer() As Byte
     ReDim tempbuffer(length) As Byte
     Dim a As Long
     Dim c As Long
     Dim nBufferPos As Long
     nBufferPos = 0
     c = length
     If exlen Then
        a = 0
        If (c < exlen) Then
            a = c
        Else
            a = exlen
        End If
        Call CopyMemory(tempbuffer(nBufferPos), excess(0), a)
        exlen = exlen - a
        Call CopyMemory(excess(0), excess(a), exlen)
        nBufferPos = nBufferPos + a
        c = c - a
    End If
    Do While (c)
        a = BASS_ChannelGetData(m_hStreamA(1), decbuff(0), decblock)
        If a < 0 Then Exit Do
        If frmMain.StartedA Then
            a = 4 * frmMain.DSP.ModifySamples(VarPtr(decbuff(0)), a / 4, 16, 2, 44100)
        End If
        If (a > c) Then
            Call CopyMemory(tempbuffer(nBufferPos), decbuff(0), c)
            exlen = a - c
            Call CopyMemory(excess(0), decbuff(c), exlen)
            c = 0
        Else
            Call CopyMemory(tempbuffer(nBufferPos), decbuff(0), a)
            nBufferPos = nBufferPos + a
            c = c - a
        End If
    Loop
    Call CopyMemory(ByVal buffer, tempbuffer(0), length - c)
    STREAMPROC = length - c
End Function