Getting bass.decls to work - HELP!

Blitz3D Forums/Blitz3D Programming/Getting bass.decls to work - HELP!

I have Nigel Browns bass.decls and associated bass.dll but I get a memory access violation when I try the included bass.bb sample...

Function BASS_GetDeviceAvailable(iCount)
	Local mBankIn,iResult
	
	mBankIn  = CreateBank(4)
	PokeInt mBankIn,0,iCount

	iResult = BASS_GetDeviceDescription( mBankIn )
	
	FreeBank mBankIn
	Return iResult
	
End Function


Any idea why? I *really* would like to get this working as I need to use the record functions available in this version. The decls is...

.lib "bass.dll"

; BASS functions

BASS_ErrorGetCode%()									: "BASS_ErrorGetCode"
BASS_Free()											: "BASS_Free"
BASS_GetCPU()
BASS_GetDeviceDescription$( devnum% )						: "BASS_GetDeviceDescription"
BASS_GetDSoundObject()
BASS_GetGlobalVolumes()
BASS_GetInfo()
BASS_GetVersion%()									: "BASS_GetVersion"
BASS_GetVolume()
BASS_Init%( device%, freq%, flags%, win% )					: "BASS_Init"
BASS_Pause()
BASS_SetBufferLength()
BASS_SetCLSID()
BASS_SetGlobalVolumes( musvol%, samvol%, strvol% )				: "BASS_SetGlobalVolumes"
BASS_SetLongCurves()
BASS_SetNetConfig()
BASS_SetVolume%( volume% )								: "BASS_SetVolume"
BASS_Start%()										: "BASS_Start"
BASS_Stop%()										: "BASS_Stop"
BASS_Update%()										: "BASS_Update"

; 3D/EAX functions

BASS_Apply3D()
BASS_Get3DFactors()
BASS_Get3DPosition()
BASS_GetEaxParameters()
BASS_Set3DAlgorithm()
BASS_Set3DFactors()
BASS_Set3DPosition()
BASS_SetEAXParameters()

; CD Audio functions

BASS_CDDoor()
BASS_CDFree()
BASS_CDGetID()
BASS_CDGetTrackLength()
BASS_CDGetTracks()
BASS_CDInDrive()
BASS_CDInit()
BASS_CDPlay()

; Sample functions

BASS_SampleCreate()
BASS_SampleCreateDone()
BASS_SampleFree()
BASS_SampleGetInfo()
BASS_SampleLoad%( mem%, file$, offset%, length%, max%, flags% )		: "BASS_SampleLoad"
BASS_SamplePlay%( Handle% )								: "BASS_SamplePlay"
BASS_SamplePlay3D()
BASS_SamplePlay3DEx()
BASS_SamplePlayEx%( Handle%, start%, freq%, volume%, pan%, loop% )	: "BASS_SamplePlayEx"
BASS_SampleSetInfo()
BASS_SampleStop%( Handle% )

; Stream functions

BASS_StreamCreate()
BASS_StreamCreateFile()
BASS_StreamCreateURL()
BASS_StreamFree()
BASS_StreamGetFilePosition()
BASS_StreamGetLength()
BASS_StreamGetTags()
BASS_StreamPlay()
BASS_StreamPreBuf()

; MOD/3 music functions

BASS_MusicFree()
BASS_MusicGetChannelVol()
BASS_MusicGetLength()
BASS_MusicGetName()
BASS_MusicLoad()
BASS_MusicPlay()
BASS_MusicPlayEx()
BASS_MusicPreBuf()
BASS_MusicSetAmplify()
BASS_MusicSetChannelVol()
BASS_MusicSetPanSep()
BASS_MusicSetPositionScaler()

; Recording functions

BASS_RecordFree()
BASS_RecordGetDeviceDescription()
BASS_RecordGetInfo()
BASS_RecordGetInput()
BASS_RecordGetInputName()
BASS_RecordInit()
BASS_RecordSetInput()
BASS_RecordStart()

; Channel functions

BASS_ChannelBytes2Seconds()
BASS_ChannelGet3DAttributes()
BASS_ChannelGet3DPosition()
BASS_ChannelGetAttributes()
BASS_ChannelGetData()
BASS_ChannelGetEAXMix()
BASS_ChannelGetFlags()
BASS_ChannelGetLevel()
BASS_ChannelGetPosition()
BASS_ChannelIsActive%( Handle% )							: "BASS_ChannelIsActive"
BASS_ChannelPause()
BASS_ChannelRemoveDSP()
BASS_ChannelRemoveFX()
BASS_ChannelRemoveLink()
BASS_ChannelRemoveSync()
BASS_ChannelResume()
BASS_ChannelSeconds2Bytes()
BASS_ChannelSet3DAttributes()
BASS_ChannelSet3DPosition()
BASS_ChannelSetAttributes()
BASS_ChannelSetDSP()
BASS_ChannelSetEAXMix()
BASS_ChannelSetFX()
BASS_ChannelSetLink()
BASS_ChannelSetPosition()
BASS_ChannelSetSync()
BASS_ChannelStop%( Handle% )								: "BASS_ChanelStop"

; FX functions

BASS_FXGetParameters()
BASS_FXSetParameters()



the full bass.bb is...

; BASS_ChannelIsActive Return values

Const BASS_ACTIVE_STOPPED	=0
Const BASS_ACTIVE_PLAYING	=1
Const BASS_ACTIVE_STALLED	=2
Const BASS_ACTIVE_PAUSED	=3

; Error codes returned by BASS_GetErrorCode()
Const BASS_OK             = 0 ; all is OK
Const BASS_ERROR_MEM      = 1 ; memory error
Const BASS_ERROR_FILEOPEN = 2 ; can't open the file
Const BASS_ERROR_DRIVER   = 3 ; can't find a free/valid driver
Const BASS_ERROR_BUFLOST  = 4 ; the sample buffer was lost - please report this!
Const BASS_ERROR_HANDLE   = 5 ; invalid handle
Const BASS_ERROR_FORMAT   = 6 ; unsupported format
Const BASS_ERROR_POSITION = 7 ; invalid playback position
Const BASS_ERROR_INIT     = 8 ; BASS_Init has not been successfully called
Const BASS_ERROR_START    = 9 ; BASS_Start has not been successfully called
Const BASS_ERROR_INITCD   = 10; can't initialize CD
Const BASS_ERROR_CDINIT   = 11; BASS_CDInit has not been successfully called
Const BASS_ERROR_NOCD     = 12; no CD in drive
Const BASS_ERROR_CDTRACK  = 13; can't play the selected CD track
Const BASS_ERROR_ALREADY  = 14; already initialized
Const BASS_ERROR_CDVOL    = 15; CD has no volume control
Const BASS_ERROR_NOPAUSE  = 16; not paused
Const BASS_ERROR_NOTAUDIO = 17; not an audio track
Const BASS_ERROR_NOCHAN   = 18; can't get a free channel
Const BASS_ERROR_ILLTYPE  = 19; an illegal type was specified
Const BASS_ERROR_ILLPARAM = 20; an illegal parameter was specified
Const BASS_ERROR_NO3D     = 21; no 3D support
Const BASS_ERROR_NOEAX    = 22; no EAX support
Const BASS_ERROR_DEVICE   = 23; illegal device number
Const BASS_ERROR_NOPLAY   = 24; not playing
Const BASS_ERROR_FREQ     = 25; illegal sample rate
Const BASS_ERROR_NOA3D    = 26; A3D.DLL is not installed
Const BASS_ERROR_NOTFILE  = 27; the stream is not a file stream (WAV/MP3/MP2/MP1/OGG)
Const BASS_ERROR_NOHW     = 29; no hardware voices available
Const BASS_ERROR_NOSYNC   = 30; synchronizers have been disabled
Const BASS_ERROR_EMPTY    = 31; the MOD music has no sequence data
Const BASS_ERROR_NONET    = 32; no internet connection could be opened
Const BASS_ERROR_CREATE   = 33; couldn't create the file
Const BASS_ERROR_NOFX     = 34; effects are not enabled
Const BASS_ERROR_PLAYING  = 35; the channel is playing
Const BASS_ERROR_NOOGG    = 36; OGG.DLL/VORBIS.DLL could not be loaded
Const BASS_ERROR_NOTAVAIL = 37; requested data is not available
Const BASS_ERROR_DECODE   = 38; the channel is a "decoding channel"
Const BASS_ERROR_UNKNOWN  = -1; some other mystery error

; Device setup flags
Const BASS_DEVICE_8BITS = 1  ; use 8 bit resolution, else 16 bit
Const BASS_DEVICE_MONO  = 2  ; use mono, else stereo
Const BASS_DEVICE_3D    = 4  ; enable 3D functionality
; If the BASS_DEVICE_3D flag is not specified when initilizing BASS,
; then the 3D flags (BASS_SAMPLE_3D and BASS_MUSIC_3D) are ignored when
; loading/creating a sample/stream/music.
Const BASS_DEVICE_NOSYNC   = 16  ; disable synchronizers
Const BASS_DEVICE_LEAVEVOL = 32	 ; leave the volume as it is
Const BASS_DEVICE_OGG      = 64	 ; enable OGG support (requires OGG.DLL & VORBIS.DLL)
Const BASS_DEVICE_NOTHREAD = 128 ; update buffers manually (using BASS_Update)
Const BASS_DEVICE_LATENCY  = 256 ; calculate device latency (BASS_INFO struct)

; DirectSound interfaces (for use with BASS_GetDSoundObject)
Const BASS_OBJECT_DS    = 1 ; IDirectSound
Const BASS_OBJECT_DS3DL = 2 ; IDirectSound3DListener

; BASS_INFO flags (from DSOUND.H)
Const DSCAPS_CONTINUOUSRATE = $00000010
; supports all sample rates between min/maxrate
Const DSCAPS_EMULDRIVER     = $00000020
; device does NOT have hardware DirectSound support
Const DSCAPS_CERTIFIED      = $00000040
; device driver has been certified by Microsoft
; The following flags tell what type of samples are supported by HARDWARE
; mixing, all these formats are supported by SOFTWARE mixing
Const DSCAPS_SECONDARYMONO   = $00000100 ; mono
Const DSCAPS_SECONDARYSTEREO = $00000200 ; stereo
Const DSCAPS_SECONDARY8BIT   = $00000400 ; 8 bit
Const DSCAPS_SECONDARY16BIT  = $00000800 ; 16 bit

; Music flags
Const BASS_MUSIC_RAMP      = 1       ; normal ramping
Const BASS_MUSIC_RAMPS     = 2       ; sensitive ramping
; Ramping doesn't take a lot of extra processing and improves
; the sound quality by removing "clicks". Sensitive ramping will
; leave sharp attacked samples, unlike normal ramping.
Const BASS_MUSIC_LOOP      = 4       ; loop music
Const BASS_MUSIC_FT2MOD    = 16      ; play .MOD as FastTracker 2 does
Const BASS_MUSIC_PT1MOD    = 32      ; play .MOD as ProTracker 1 does
Const BASS_MUSIC_MONO      = 64      ; force mono mixing (less CPU usage)
Const BASS_MUSIC_3D        = 128     ; enable 3D functionality
Const BASS_MUSIC_POSRESET  = 256     ; stop all notes when moving position
Const BASS_MUSIC_SURROUND  = 512     ; surround sound
Const BASS_MUSIC_SURROUND2 = 1024    ; surround sound (mode 2)
Const BASS_MUSIC_STOPBACK  = 2048    ; stop the music on a backwards jump effect
Const BASS_MUSIC_FX        = 4096    ; enable DX8 effects
Const BASS_MUSIC_CALCLEN   = 8192    ; calculate playback length
Const BASS_MUSIC_DECODE    = $200000 ; don't play the music, only decode (BASS_ChannelGetData)

Const BASS_SAMPLE_8BITS     = 1       ; 8 bit, else 16 bit
Const BASS_SAMPLE_MONO      = 2       ; mono, else stereo
Const BASS_SAMPLE_LOOP      = 4       ; looped
Const BASS_SAMPLE_3D        = 8       ; 3D functionality enabled
Const BASS_SAMPLE_SOFTWARE  = 16      ; it's NOT using hardware mixing
Const BASS_SAMPLE_MUTEMAX   = 32      ; muted at max distance (3D only)
Const BASS_SAMPLE_VAM       = 64      ; uses the DX7 voice allocation & management
Const BASS_SAMPLE_FX        = 128     ; the DX8 effects are enabled
Const BASS_SAMPLE_OVER_VOL  = $10000  ; override lowest volume
Const BASS_SAMPLE_OVER_POS  = $20000  ; override longest playing
Const BASS_SAMPLE_OVER_DIST = $30000  ; override furthest from listener (3D only)

Const BASS_MP3_HALFRATE     = $10000  ; reduced quality MP3/MP2/MP1 (half sample rate)
Const BASS_MP3_SETPOS       = $20000  ; enable pin-point seeking on the MP3/MP2/MP1/OGG

Const BASS_STREAM_AUTOFREE  = $40000  ; automatically free the stream when it stop/ends
Const BASS_STREAM_RESTRATE  = $80000  ; restrict the download rate of internet file streams
Const BASS_STREAM_BLOCK     = $100000 ; download/play internet file stream (MPx/OGG) in small blocks
Const BASS_STREAM_DECODE    = $200000 ; don't play the stream, only decode (BASS_ChannelGetData)

; DX7 voice allocation flags
Const BASS_VAM_HARDWARE = 1
Const BASS_VAM_SOFTWARE = 2

; DX7 voice management flags
Const BASS_VAM_TERM_TIME = 4
Const BASS_VAM_TERM_DIST = 8
Const BASS_VAM_TERM_PRIO = 16

; 3D channel modes
Const BASS_3DMODE_NORMAL   = 0
Const BASS_3DMODE_RELATIVE = 1
Const BASS_3DMODE_OFF      = 2

Const BASS_3DALG_DEFAULT = 0
Const BASS_3DALG_OFF     = 1
Const BASS_3DALG_FULL    = 2
Const BASS_3DALG_LIGHT   = 3

Const BASS_SYNC_MUSICPOS  = 0
Const BASS_SYNC_POS       = 0
Const BASS_SYNC_MUSICINST = 1
Const BASS_SYNC_END       = 2
Const BASS_SYNC_MUSICFX   = 3
Const BASS_SYNC_MESSAGE   = $20000000 ; FLAG: post a Windows message (instead of callback)
Const BASS_SYNC_MIXTIME   = $40000000 ; FLAG: sync at mixtime, else at playtime
Const BASS_SYNC_ONETIME   = $80000000 ; FLAG: sync only once, else continuously

; BASS_ChannelGetData flags
Const BASS_DATA_FFT512  = $80000000 ; 512 sample FFT
Const BASS_DATA_FFT1024	= $80000001 ; 1024 FFT
Const BASS_DATA_FFT2048	= $80000002 ; 2048 FFT

; BASS_StreamGetTags flags : what's returned
Const BASS_TAG_ID3   = 0 ; ID3v1 tags : 128 byte block
Const BASS_TAG_ID3V2 = 1 ; ID3v2 tags : variable length block
Const BASS_TAG_OGG   = 2 ; OGG comments : array of null-terminated strings
Const BASS_TAG_HTTP  = 3 ; HTTP headers : array of null-terminated strings
Const BASS_TAG_ICY   = 4 ; ICY headers : array of null-terminated strings

; DX8 effect types, use with BASS_ChannelSetFX()
Const BASS_FX_CHORUS      = 0   ; GUID_DSFX_STANDARD_CHORUS
Const BASS_FX_COMPRESSOR  = 1   ; GUID_DSFX_STANDARD_COMPRESSOR
Const BASS_FX_DISTORTION  = 2   ; GUID_DSFX_STANDARD_DISTORTION
Const BASS_FX_ECHO        = 3   ; GUID_DSFX_STANDARD_ECHO
Const BASS_FX_FLANGER     = 4   ; GUID_DSFX_STANDARD_FLANGER
Const BASS_FX_GARGLE      = 5   ; GUID_DSFX_STANDARD_GARGLE
Const BASS_FX_I3DL2REVERB = 6   ; GUID_DSFX_STANDARD_I3DL2REVERB
Const BASS_FX_PARAMEQ     = 7   ; GUID_DSFX_STANDARD_PARAMEQ
Const BASS_FX_REVERB      = 8   ; GUID_DSFX_WAVES_REVERB

Const BASS_FX_PHASE_NEG_180 = 0
Const BASS_FX_PHASE_NEG_90  = 1
Const BASS_FX_PHASE_ZERO    = 2
Const BASS_FX_PHASE_90      = 3
Const BASS_FX_PHASE_180     = 4

Const CDCHANNEL = 0 ; CD channel, for use with BASS_Channel functions

; BASS_CDGetID flags
Const BASS_CDID_IDENTITY = 0
Const BASS_CDID_UPC      = 1


;:: NOTE - These are wrapped. Not actually BASS values for these..

Const EAX_PRESET_GENERIC         = 0
Const EAX_PRESET_PADDEDCELL      = 1
Const EAX_PRESET_ROOM            = 2
Const EAX_PRESET_BATHROOM        = 3
Const EAX_PRESET_LIVINGROOM      = 4
Const EAX_PRESET_STONEROOM       = 5
Const EAX_PRESET_AUDITORIUM      = 6
Const EAX_PRESET_CONCERTHALL     = 7
Const EAX_PRESET_CAVE            = 8
Const EAX_PRESET_ARENA           = 9
Const EAX_PRESET_HANGAR          = 10
Const EAX_PRESET_CARPETEDHALLWAY = 11
Const EAX_PRESET_HALLWAY         = 12 
Const EAX_PRESET_STONECORRIDOR   = 13
Const EAX_PRESET_ALLEY           = 14
Const EAX_PRESET_FOREST          = 15
Const EAX_PRESET_CITY            = 16
Const EAX_PRESET_MOUNTAINS       = 17
Const EAX_PRESET_QUARRY          = 18
Const EAX_PRESET_PLAIN           = 19
Const EAX_PRESET_PARKINGLOT      = 20
Const EAX_PRESET_SEWERPIPE       = 21
Const EAX_PRESET_UNDERWATER      = 22
Const EAX_PRESET_DRUGGED         = 23
Const EAX_PRESET_DIZZY           = 24
Const EAX_PRESET_PSYCHOTIC       = 25

Const EAX_ENVIRONMENT_GENERIC         = 0
Const EAX_ENVIRONMENT_PADDEDCELL      = 1
Const EAX_ENVIRONMENT_ROOM            = 2
Const EAX_ENVIRONMENT_BATHROOM        = 3
Const EAX_ENVIRONMENT_LIVINGROOM      = 4
Const EAX_ENVIRONMENT_STONEROOM       = 5
Const EAX_ENVIRONMENT_AUDITORIUM      = 6
Const EAX_ENVIRONMENT_CONCERTHALL     = 7
Const EAX_ENVIRONMENT_CAVE            = 8
Const EAX_ENVIRONMENT_ARENA           = 9
Const EAX_ENVIRONMENT_HANGAR          = 10
Const EAX_ENVIRONMENT_CARPETEDHALLWAY = 11
Const EAX_ENVIRONMENT_HALLWAY         = 12 
Const EAX_ENVIRONMENT_STONECORRIDOR   = 13
Const EAX_ENVIRONMENT_ALLEY           = 14
Const EAX_ENVIRONMENT_FOREST          = 15
Const EAX_ENVIRONMENT_CITY            = 16
Const EAX_ENVIRONMENT_MOUNTAINS       = 17
Const EAX_ENVIRONMENT_QUARRY          = 18
Const EAX_ENVIRONMENT_PLAIN           = 19
Const EAX_ENVIRONMENT_PARKINGLOT      = 20
Const EAX_ENVIRONMENT_SEWERPIPE       = 21
Const EAX_ENVIRONMENT_UNDERWATER      = 22
Const EAX_ENVIRONMENT_DRUGGED         = 23
Const EAX_ENVIRONMENT_DIZZY           = 24
Const EAX_ENVIRONMENT_PSYCHOTIC       = 25

; Originals..

; EAX presets, usage: BASS_SetEAXParameters(EAX_PRESET_xxx)
;Const EAX_PRESET_GENERIC         EAX_ENVIRONMENT_GENERIC,0.5F,1.493F,0.5F
;Const EAX_PRESET_PADDEDCELL      EAX_ENVIRONMENT_PADDEDCELL,0.25F,0.1F,0.0F
;Const EAX_PRESET_ROOM            EAX_ENVIRONMENT_ROOM,0.417F,0.4F,0.666F
;Const EAX_PRESET_BATHROOM        EAX_ENVIRONMENT_BATHROOM,0.653F,1.499F,0.166F
;Const EAX_PRESET_LIVINGROOM      EAX_ENVIRONMENT_LIVINGROOM,0.208F,0.478F,0.0F
;Const EAX_PRESET_STONEROOM       EAX_ENVIRONMENT_STONEROOM,0.5F,2.309F,0.888F
;Const EAX_PRESET_AUDITORIUM      EAX_ENVIRONMENT_AUDITORIUM,0.403F,4.279F,0.5F
;Const EAX_PRESET_CONCERTHALL     EAX_ENVIRONMENT_CONCERTHALL,0.5F,3.961F,0.5F
;Const EAX_PRESET_CAVE            EAX_ENVIRONMENT_CAVE,0.5F,2.886F,1.304F
;Const EAX_PRESET_ARENA           EAX_ENVIRONMENT_ARENA,0.361F,7.284F,0.332F
;Const EAX_PRESET_HANGAR          EAX_ENVIRONMENT_HANGAR,0.5F,10.0F,0.3F
;Const EAX_PRESET_CARPETEDHALLWAY EAX_ENVIRONMENT_CARPETEDHALLWAY,0.153F,0.259F,2.0F
;Const EAX_PRESET_HALLWAY         EAX_ENVIRONMENT_HALLWAY,0.361F,1.493F,0.0F
;Const EAX_PRESET_STONECORRIDOR   EAX_ENVIRONMENT_STONECORRIDOR,0.444F,2.697F,0.638F
;Const EAX_PRESET_ALLEY           EAX_ENVIRONMENT_ALLEY,0.25F,1.752F,0.776F
;Const EAX_PRESET_FOREST          EAX_ENVIRONMENT_FOREST,0.111F,3.145F,0.472F
;Const EAX_PRESET_CITY            EAX_ENVIRONMENT_CITY,0.111F,2.767F,0.224F
;Const EAX_PRESET_MOUNTAINS       EAX_ENVIRONMENT_MOUNTAINS,0.194F,7.841F,0.472F
;Const EAX_PRESET_QUARRY          EAX_ENVIRONMENT_QUARRY,1.0F,1.499F,0.5F
;Const EAX_PRESET_PLAIN           EAX_ENVIRONMENT_PLAIN,0.097F,2.767F,0.224F
;Const EAX_PRESET_PARKINGLOT      EAX_ENVIRONMENT_PARKINGLOT,0.208F,1.652F,1.5F
;Const EAX_PRESET_SEWERPIPE       EAX_ENVIRONMENT_SEWERPIPE,0.652F,2.886F,0.25F
;Const EAX_PRESET_UNDERWATER      EAX_ENVIRONMENT_UNDERWATER,1.0F,1.499F,0.0F
;Const EAX_PRESET_DRUGGED         EAX_ENVIRONMENT_DRUGGED,0.875F,8.392F,1.388F
;Const EAX_PRESET_DIZZY           EAX_ENVIRONMENT_DIZZY,0.139F,17.234F,0.666F
;Const EAX_PRESET_PSYCHOTIC       EAX_ENVIRONMENT_PSYCHOTIC,0.486F,7.563F,0.806F

; Makes a long from 2 words. Usful for the version info and a few of the channel commands...
; See bass C++ examples.


Print BASS_GetDeviceAvailable(1)
WaitKey 

Function MAKELONG(word1,word2)
	Return (word2 Shl 16) Or (word1 And $0000FFFF)
End Function

; Added wrapper... Gets whether or not a device is there (available)..


Function BASS_GetDeviceAvailable(iCount)
	Local mBankIn,iResult
	
	mBankIn  = CreateBank(4)
	PokeInt mBankIn,0,iCount

	iResult = BASS_GetDeviceDescription( mBankIn )
	
	FreeBank mBankIn
	Return iResult
	
End Function



The full archive is here...

http://www.nigelibrown.pwp.blueyonder.co.uk/blitz/userlibs/download/bass.zip