@Polygon
Bass comes with a few examples, one of which I hacked (below).
Basically I was after some sort of UVmeter-like effect which would give me the amplitude of a wav file at any moment, then I could open and close a character's mouth in sync, using a bone.
Unfortunately other things have taken priority (it's probably 6 months ago) but at least the concept is proven
Graphics 200,130,32,2 : SetBuffer BackBuffer()
AppTitle "FX-Example" : Include "BASS.bb"
;File$ = "Example.mp3"
;File$ = "TITLE.xm"
File$ = "0.wav"
hWnd = GetActiveWindow()
If Not BASS_Init(-1,44100,0,hWnd) Then
RuntimeError "BASS.dll can't be initialize!"
EndIf
If Not BASS_Start() Then
BASS_Free()
RuntimeError "Can't start it!"
EndIf
Channel = BASS_StreamCreateFile(0,File$,0,0,BASS_SAMPLE_FX)
If Not Channel Then
Channel = BASS_MusicLoad(0,File$,0,0,BASS_MUSIC_LOOP Or BASS_MUSIC_RAMP Or BASS_MUSIC_FX)
If Not Channel Then
BASS_Stop()
BASS_Free()
RuntimeError "Can't load " + File$ + "!"
EndIf
EndIf
Dim ScrollValues(3) : Dim ScrollBarsSet(3)
ScrollValues(0) = 10
ScrollValues(1) = 10
ScrollValues(2) = 10
ScrollValues(3) = 00
Dim FX(3)
FX(0) = BASS_ChannelSetFX(Channel,BASS_FX_PARAMEQ)
FX(1) = BASS_ChannelSetFX(Channel,BASS_FX_PARAMEQ)
FX(2) = BASS_ChannelSetFX(Channel,BASS_FX_PARAMEQ)
FX(3) = BASS_ChannelSetFX(Channel,BASS_FX_REVERB)
BASS_FXPARAMEQ = CreateBank(12)
PokeFloat BASS_FXPARAMEQ,08,0.0
PokeFloat BASS_FXPARAMEQ,04,18.0
PokeFloat BASS_FXPARAMEQ,00,125.0
Result = BASS_FXSetParameters(FX(0),BASS_FXPARAMEQ)
PokeFloat BASS_FXPARAMEQ,00,1000.0
Result = BASS_FXSetParameters(FX(1),BASS_FXPARAMEQ)
PokeFloat BASS_FXPARAMEQ,00,8000.0
Result = BASS_FXSetParameters(FX(2),BASS_FXPARAMEQ)
UpdateFX(0)
UpdateFX(1)
UpdateFX(2)
UpdateFX(3)
BASS_StreamPlay(Channel, 0, 0) ;BASS_SAMPLE_LOOP)
BASS_MusicPlay(Channel)
While Not KeyDown(1)
Cls
; Q(+) And A(-) | W(+) And S(-) | E(+) And D(-) | R(+) And F(-)
If KeyHit(16) And ScrollValues(0) < 20 Then ScrollValues(0) = ScrollValues(0) + 1 : ScrollBarsSet(0) = 1
If KeyHit(30) And ScrollValues(0) > 00 Then ScrollValues(0) = ScrollValues(0) - 1 : ScrollBarsSet(0) = 1
If KeyHit(17) And ScrollValues(1) < 20 Then ScrollValues(1) = ScrollValues(1) + 1 : ScrollBarsSet(1) = 1
If KeyHit(31) And ScrollValues(1) > 00 Then ScrollValues(1) = ScrollValues(1) - 1 : ScrollBarsSet(1) = 1
If KeyHit(18) And ScrollValues(2) < 20 Then ScrollValues(2) = ScrollValues(2) + 1 : ScrollBarsSet(2) = 1
If KeyHit(32) And ScrollValues(2) > 00 Then ScrollValues(2) = ScrollValues(2) - 1 : ScrollBarsSet(2) = 1
If KeyHit(19) And ScrollValues(3) < 20 Then ScrollValues(3) = ScrollValues(3) + 1 : ScrollBarsSet(3) = 1
If KeyHit(33) And ScrollValues(3) > 00 Then ScrollValues(3) = ScrollValues(3) - 1 : ScrollBarsSet(3) = 1
For I = 0 To 3
If ScrollBarsSet(I) Then
UpdateFX(I)
ScrollBarsSet(I) = 0
EndIf
Next
DrawScrollBars()
;DWORD level,Left,Right;
level%=BASS_ChannelGetLevel(Channel);
;L=LOwWORD(level); // the left level
;R=HIWORD(level); // the right level
;L = level Shr 16
;L = level Xor %11111111111111110000000000000000
levleft = level% Shr 16
levright = level% Xor 8 ;%00000000000000000000000011111111
Text 0,0,levleft+" "
Line 0,10,levleft,10
Text 0,20,levright+" "
Flip
Wend
BASS_Stop : BASS_StreamFree(Channel)
BASS_MusicFree(Channel) : BASS_Free()
End
Function UpdateFX(ScrollIndex)
Local Value,Parameters,Result
Value = ScrollValues(ScrollIndex)
If ScrollIndex > - 1 And ScrollIndex < 3
Parameters = CreateBank(12)
Result = BASS_FXGetParameters(FX(ScrollIndex),Parameters)
PokeFloat Parameters,08,10 - (20 - Value)
Result = BASS_FXSetParameters(FX(ScrollIndex),Parameters)
Else
Parameters = CreateBank(16)
Result = BASS_FXGetParameters(FX(ScrollIndex),Parameters)
PokeFloat Parameters,04,-0.012 * (20 - Value)^3
Result = BASS_FXSetParameters(FX(ScrollIndex),Parameters)
EndIf
End Function
Function DrawScrollBars()
Text 000,100,"125-hz" : Text 000,112,Scrollvalues(0)
Text 050,100,"1-khz" : Text 050,112,Scrollvalues(1)
Text 100,100,"8-khz" : Text 100,112,Scrollvalues(2)
Text 150,100,"reverb" : Text 150,112,Scrollvalues(3)
Rect 000,100 - ScrollValues(0) * 5,49,ScrollValues(0) * 5,1
Rect 050,100 - ScrollValues(1) * 5,49,ScrollValues(1) * 5,1
Rect 100,100 - ScrollValues(2) * 5,49,ScrollValues(2) * 5,1
Rect 150,100 - ScrollValues(3) * 5,49,ScrollValues(3) * 5,1
End Function