📄 bass.bas
字号:
BASS_StreamCreateFile = BASS_StreamCreateFile64(mem, file, offset, 0, length, 0, flags Or BASS_UNICODE)
End Function
Function BASS_ChannelBytes2Seconds(ByVal handle As Long, ByVal pos As Long) As Double
BASS_ChannelBytes2Seconds = BASS_ChannelBytes2Seconds64(handle, pos, 0)
End Function
Function BASS_ChannelSetPosition(ByVal handle As Long, ByVal pos As Long, ByVal mode As Long) As Long
BASS_ChannelSetPosition = BASS_ChannelSetPosition64(handle, pos, 0, mode)
End Function
Function BASS_ChannelSetSync(ByVal handle As Long, ByVal type_ As Long, ByVal param As Long, ByVal proc As Long, ByVal user As Long) As Long
BASS_ChannelSetSync = BASS_ChannelSetSync64(handle, type_, param, 0, proc, user)
End Function
' BASS_PluginGetInfo wrappers
Function BASS_PluginGetInfo(ByVal handle As Long) As BASS_PLUGININFO
Dim pinfo As BASS_PLUGININFO, plug As Long
plug = BASS_PluginGetInfo_(handle)
If plug Then
Call CopyMemory(pinfo, ByVal plug, LenB(pinfo))
End If
BASS_PluginGetInfo = pinfo
End Function
Function BASS_PluginGetInfoFormat(ByVal handle As Long, ByVal index As Long) As BASS_PLUGINFORM
Dim pform As BASS_PLUGINFORM, plug As Long
plug = BASS_PluginGetInfo(handle).formats
If plug Then
plug = plug + (index * LenB(pform))
Call CopyMemory(pform, ByVal plug, LenB(pform))
End If
BASS_PluginGetInfoFormat = pform
End Function
' callback functions
Function STREAMPROC(ByVal handle As Long, ByVal buffer As Long, ByVal length As Long, ByVal user As Long) As Long
'CALLBACK FUNCTION !!!
' User stream callback function
' NOTE: A stream function should obviously be as quick
' as possible, other streams (and MOD musics) can't be mixed until it's finished.
' handle : The stream that needs writing
' buffer : Buffer to write the samples in
' length : Number of bytes to write
' user : The 'user' parameter value given when calling BASS_StreamCreate
' RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end
' the stream.
End Function
Sub DOWNLOADPROC(ByVal buffer As Long, ByVal length As Long, ByVal user As Long)
'CALLBACK FUNCTION !!!
' Internet stream download callback function.
' buffer : Buffer containing the downloaded data... NULL=end of download
' length : Number of bytes in the buffer
' user : The 'user' parameter given when calling BASS_StreamCreateURL
End Sub
Sub SYNCPROC(ByVal handle As Long, ByVal channel As Long, ByVal data As Long, ByVal user As Long)
'CALLBACK FUNCTION !!!
'Similarly in here, write what to do when sync function
'is called, i.e screen flash etc.
' NOTE: a sync callback function should be very quick as other
' syncs cannot be processed until it has finished.
' handle : The sync that has occured
' channel: Channel that the sync occured in
' data : Additional data associated with the sync's occurance
' user : The 'user' parameter given when calling BASS_ChannelSetSync */
End Sub
Sub DSPPROC(ByVal handle As Long, ByVal channel As Long, ByVal buffer As Long, ByVal length As Long, ByVal user As Long)
'CALLBACK FUNCTION !!!
' VB doesn't support pointers, so you should copy the buffer into an array,
' process it, and then copy it back into the buffer.
' DSP callback function. NOTE: A DSP function should obviously be as quick as
' possible... other DSP functions, streams and MOD musics can not be processed
' until it's finished.
' handle : The DSP handle
' channel: Channel that the DSP is being applied to
' buffer : Buffer to apply the DSP to
' length : Number of bytes in the buffer
' user : The 'user' parameter given when calling BASS_ChannelSetDSP
End Sub
Function RECORDPROC(ByVal handle As Long, ByVal buffer As Long, ByVal length As Long, ByVal user As Long) As Long
'CALLBACK FUNCTION !!!
' Recording callback function.
' handle : The recording handle
' buffer : Buffer containing the recorded samples
' length : Number of bytes
' user : The 'user' parameter value given when calling BASS_RecordStart
' RETURN : BASSTRUE = continue recording, BASSFALSE = stop
End Function
' User file stream callback functions (BASS_FILEPROCS)
Sub FILECLOSEPROC(ByVal user As Long)
End Sub
Function FILELENPROC(ByVal user As Long) As Currency ' ???
End Function
Function FILEREADPROC(ByVal buffer As Long, ByVal length As Long, ByVal user As Long) As Long
End Function
Function FILESEEKPROC(ByVal offset As Long, ByVal offsethigh As Long, ByVal user As Long) As Long
End Function
Function BASS_SetEAXPreset(preset) As Long
' This function is a workaround, because VB doesn't support multiple comma seperated
' paramaters for each Global Const, simply pass the EAX_ENVIRONMENT_xxx value to this function
' instead of BASS_SetEAXParameters as you would do in C/C++
Select Case preset
Case EAX_ENVIRONMENT_GENERIC
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_GENERIC, 0.5, 1.493, 0.5)
Case EAX_ENVIRONMENT_PADDEDCELL
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_PADDEDCELL, 0.25, 0.1, 0)
Case EAX_ENVIRONMENT_ROOM
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_ROOM, 0.417, 0.4, 0.666)
Case EAX_ENVIRONMENT_BATHROOM
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_BATHROOM, 0.653, 1.499, 0.166)
Case EAX_ENVIRONMENT_LIVINGROOM
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_LIVINGROOM, 0.208, 0.478, 0)
Case EAX_ENVIRONMENT_STONEROOM
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_STONEROOM, 0.5, 2.309, 0.888)
Case EAX_ENVIRONMENT_AUDITORIUM
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_AUDITORIUM, 0.403, 4.279, 0.5)
Case EAX_ENVIRONMENT_CONCERTHALL
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_CONCERTHALL, 0.5, 3.961, 0.5)
Case EAX_ENVIRONMENT_CAVE
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_CAVE, 0.5, 2.886, 1.304)
Case EAX_ENVIRONMENT_ARENA
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_ARENA, 0.361, 7.284, 0.332)
Case EAX_ENVIRONMENT_HANGAR
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_HANGAR, 0.5, 10, 0.3)
Case EAX_ENVIRONMENT_CARPETEDHALLWAY
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153, 0.259, 2)
Case EAX_ENVIRONMENT_HALLWAY
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_HALLWAY, 0.361, 1.493, 0)
Case EAX_ENVIRONMENT_STONECORRIDOR
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_STONECORRIDOR, 0.444, 2.697, 0.638)
Case EAX_ENVIRONMENT_ALLEY
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_ALLEY, 0.25, 1.752, 0.776)
Case EAX_ENVIRONMENT_FOREST
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_FOREST, 0.111, 3.145, 0.472)
Case EAX_ENVIRONMENT_CITY
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_CITY, 0.111, 2.767, 0.224)
Case EAX_ENVIRONMENT_MOUNTAINS
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_MOUNTAINS, 0.194, 7.841, 0.472)
Case EAX_ENVIRONMENT_QUARRY
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_QUARRY, 1, 1.499, 0.5)
Case EAX_ENVIRONMENT_PLAIN
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_PLAIN, 0.097, 2.767, 0.224)
Case EAX_ENVIRONMENT_PARKINGLOT
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_PARKINGLOT, 0.208, 1.652, 1.5)
Case EAX_ENVIRONMENT_SEWERPIPE
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_SEWERPIPE, 0.652, 2.886, 0.25)
Case EAX_ENVIRONMENT_UNDERWATER
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_UNDERWATER, 1, 1.499, 0)
Case EAX_ENVIRONMENT_DRUGGED
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_DRUGGED, 0.875, 8.392, 1.388)
Case EAX_ENVIRONMENT_DIZZY
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_DIZZY, 0.139, 17.234, 0.666)
Case EAX_ENVIRONMENT_PSYCHOTIC
BASS_SetEAXPreset = BASS_SetEAXParameters(EAX_ENVIRONMENT_PSYCHOTIC, 0.486, 7.563, 0.806)
End Select
End Function
Public Function LoByte(ByVal lparam As Long) As Long
LoByte = lparam And &HFF&
End Function
Public Function HiByte(ByVal lparam As Long) As Long
HiByte = (lparam And &HFF00&) / &H100&
End Function
Public Function LoWord(ByVal lparam As Long) As Long
LoWord = lparam And &HFFFF&
End Function
Public Function HiWord(ByVal lparam As Long) As Long
If lparam < 0 Then
HiWord = (lparam \ &H10000 - 1) And &HFFFF&
Else
HiWord = lparam \ &H10000
End If
End Function
Function MakeWord(ByVal LoByte As Long, ByVal HiByte As Long) As Long
MakeWord = (LoByte And &HFF&) Or ((HiByte And &HFF&) * &H100&)
End Function
Function MakeLong(ByVal LoWord As Long, ByVal HiWord As Long) As Long
MakeLong = LoWord And &HFFFF&
HiWord = HiWord And &HFFFF&
If HiWord And &H8000& Then
MakeLong = MakeLong Or (((HiWord And &H7FFF&) * &H10000) Or &H80000000)
Else
MakeLong = MakeLong Or (HiWord * &H10000)
End If
End Function
Public Function VBStrFromAnsiPtr(ByVal lpStr As Long) As String
Dim bStr() As Byte
Dim cChars As Long
On Error Resume Next
' Get the number of characters in the buffer
cChars = lstrlen(lpStr)
If cChars Then
' Resize the byte array
ReDim bStr(0 To cChars - 1) As Byte
' Grab the ANSI buffer
Call CopyMemory(bStr(0), ByVal lpStr, cChars)
End If
' Now convert to a VB Unicode string
VBStrFromAnsiPtr = StrConv(bStr, vbUnicode)
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -