Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

BASS 2.3 Include File

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • BASS 2.3 Include File

    BASS 2.3 Header file converted to a PowerBASIC Include File

    Code:
    ' Converted BASS 2.3 C/C++ Header file copyright (c) 1999-2006 Ian Luck.
    '
    ' Converting using PowerBASIC For Windows 8.03
    '
    'See the BASS.CHM file for more complete documentation
    
    #IF NOT %DEF(%BASS_H)
      %BASS_H = 1
      %BASSVERSION = &h203   ' API version
    #ENDIF
    
    MACRO HMUSIC   = DWORD      ' MOD music HANDLE
    MACRO HSAMPLE  = DWORD      ' sample HANDLE
    MACRO HCHANNEL = DWORD      ' playing sample's channel handle
    MACRO HSTREAM  = DWORD      ' sample stream HANDLE
    MACRO HRECORD  = DWORD      ' recording HANDLE
    MACRO HSYNC    = DWORD      ' synchronizer HANDLE
    MACRO HDSP     = DWORD      ' DSP HANDLE
    MACRO HFX      = DWORD      ' DX8 effect HANDLE
    MACRO HPLUGIN  = DWORD      ' Plugin HANDLE
    
    ' ERROR codes returned by BASS_ErrorGetCode
    %BASS_OK             = 0   ' ALL IS OK
    %BASS_ERROR_MEM      = 1   ' memory ERROR
    %BASS_ERROR_FILEOPEN = 2   ' can't open the file
    %BASS_ERROR_DRIVER   = 3   ' can't find a free/valid driver
    %BASS_ERROR_BUFLOST  = 4   ' the sample buffer was lost
    %BASS_ERROR_HANDLE   = 5   ' invalid HANDLE
    %BASS_ERROR_FORMAT   = 6   ' unsupported sample format
    %BASS_ERROR_POSITION = 7   ' invalid playback position
    %BASS_ERROR_INIT     = 8   ' BASS_Init has NOT been successfully called
    %BASS_ERROR_START    = 9   ' BASS_Start has NOT been successfully called
    %BASS_ERROR_ALREADY  = 14  ' already initialized/paused/whatever
    %BASS_ERROR_NOPAUSE  = 16  ' NOT paused
    %BASS_ERROR_NOCHAN   = 18  ' can't get a free channel
    %BASS_ERROR_ILLTYPE  = 19  ' an illegal TYPE was specified
    %BASS_ERROR_ILLPARAM = 20  ' an illegal parameter was specified
    %BASS_ERROR_NO3D     = 21  ' no 3D support
    %BASS_ERROR_NOEAX    = 22  ' no EAX support
    %BASS_ERROR_DEVICE   = 23  ' illegal device number
    %BASS_ERROR_NOPLAY   = 24  ' NOT playing
    %BASS_ERROR_FREQ     = 25  ' illegal sample rate
    %BASS_ERROR_NOTFILE  = 27  ' the stream IS NOT a file stream
    %BASS_ERROR_NOHW     = 29  ' no hardware voices available
    %BASS_ERROR_EMPTY    = 31  ' the MOD music has no sequence DATA
    %BASS_ERROR_NONET    = 32  ' no internet connection could be opened
    %BASS_ERROR_CREATE   = 33  ' couldn't create the file
    %BASS_ERROR_NOFX     = 34  ' effects are NOT available
    %BASS_ERROR_PLAYING  = 35  ' the channel IS playing
    %BASS_ERROR_NOTAVAIL = 37  ' requested DATA is not available
    %BASS_ERROR_DECODE   = 38  ' the channel IS a "decoding channel"
    %BASS_ERROR_DX       = 39  ' a sufficient DirectX version IS NOT installed
    %BASS_ERROR_TIMEOUT  = 40  ' connection timedout
    %BASS_ERROR_FILEFORM = 41  ' unsupported file format
    %BASS_ERROR_SPEAKER  = 42  ' unavailable speaker
    %BASS_ERROR_VERSION  = 43  ' invalid BASS version (used by ADD-ons)
    %BASS_ERROR_CODEC    = 44  ' codec IS NOT available/supported
    %BASS_ERROR_UNKNOWN  = -1  ' some other mystery ERROR
    
    ' Initialization flags
    %BASS_DEVICE_8BITS   = 1   ' use 8 BIT resolution, ELSE 16 BIT
    %BASS_DEVICE_MONO    = 2   ' use mono, ELSE stereo
    %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.
    
    %BASS_DEVICE_LATENCY   = 256   ' calculate device latency (BASS_INFO struct)
    %BASS_DEVICE_SPEAKERS  = 2048   ' force enabling OF speaker assignment
    %BASS_DEVICE_NOSPEAKER = 4096  ' ignore speaker arrangement
    
    ' DirectSound interfaces (FOR use WITH BASS_GetDSoundObject)
    %BASS_OBJECT_DS        = 1   ' IDirectSound
    %BASS_OBJECT_DS3DL     = 2   ' IDirectSound3DListener
    
    TYPE BASS_INFO
      flags     AS DWORD   ' device capabilities (DSCAPS_xxx flags)
      hwsize    AS DWORD   ' SIZE OF total device hardware memory
      hwfree    AS DWORD   ' SIZE OF free device hardware memory
      freesam   AS DWORD   ' number OF free sample slots IN the hardware
      free3d    AS DWORD   ' number OF free 3D sample slots IN the hardware
      minrate   AS DWORD   ' MIN sample rate supported by the hardware
      maxrate   AS DWORD   ' MAX sample rate supported by the hardware
      eax       AS BYTE    ' device supports EAX? (always FALSE IF BASS_DEVICE_3D was NOT used)
      minbuf    AS DWORD   ' recommended minimum buffer length IN ms (requires BASS_DEVICE_LATENCY)
      dsver     AS DWORD   ' DirectSound version
      latency   AS DWORD   ' delay (IN ms) before start OF playback (requires BASS_DEVICE_LATENCY)
      initflags AS DWORD   ' "flags" parameter OF BASS_Init CALL
      speakers  AS DWORD   ' number OF speakers available
      driver    AS DWORD   ' driver
      freq      AS DWORD   ' current OUTPUT rate (OSX only)
    END TYPE
    
    ' BASS_INFO flags (FROM DSOUND.H)
    %DSCAPS_CONTINUOUSRATE = &h00000010
    ' supports ALL sample rates between MIN/maxrate
    %DSCAPS_EMULDRIVER     = &h00000020
    ' device does NOT have hardware DirectSound support
    %DSCAPS_CERTIFIED      = &h00000040
    ' 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
    %DSCAPS_SECONDARYMONO   = &h00000100  ' mono
    %DSCAPS_SECONDARYSTEREO = &h00000200  ' stereo
    %DSCAPS_SECONDARY8BIT   = &h00000400  ' 8 BIT
    %DSCAPS_SECONDARY16BIT  = &h00000800  ' 16 BIT
    
    TYPE BASS_RECORDINFO
      flags    AS DWORD   ' device capabilities (DSCCAPS_xxx flags)
      formats  AS DWORD   ' supported standard formats (WAVE_FORMAT_xxx flags)
      inputs   AS DWORD    ' number OF inputs
      singlein AS BYTE   ' TRUE = only 1 INPUT can be SET AT a time
      driver   AS DWORD   ' driver
      freq     AS DWORD   ' current INPUT rate (OSX only)
    END TYPE
    
    ' BASS_RECORDINFO flags (FROM DSOUND.H)
    %DSCCAPS_EMULDRIVER = %DSCAPS_EMULDRIVER   ' device does NOT have hardware DirectSound recording support
    %DSCCAPS_CERTIFIED  = %DSCAPS_CERTIFIED    ' device driver has been certified by Microsoft
    
    ' defines FOR formats FIELD OF BASS_RECORDINFO (FROM MMSYSTEM.H)
    #IF NOT %DEF(%WAVE_FORMAT_1M08)
      %WAVE_FORMAT_1M08       = &h00000001       ' 11.025 kHz, Mono,   8-BIT
      %WAVE_FORMAT_1S08       = &h00000002       ' 11.025 kHz, Stereo, 8-BIT
      %WAVE_FORMAT_1M16       = &h00000004       ' 11.025 kHz, Mono,   16-BIT
      %WAVE_FORMAT_1S16       = &h00000008       ' 11.025 kHz, Stereo, 16-BIT
      %WAVE_FORMAT_2M08       = &h00000010       ' 22.05  kHz, Mono,   8-BIT
      %WAVE_FORMAT_2S08       = &h00000020       ' 22.05  kHz, Stereo, 8-BIT
      %WAVE_FORMAT_2M16       = &h00000040       ' 22.05  kHz, Mono,   16-BIT
      %WAVE_FORMAT_2S16       = &h00000080       ' 22.05  kHz, Stereo, 16-BIT
      %WAVE_FORMAT_4M08       = &h00000100       ' 44.1   kHz, Mono,   8-BIT
      %WAVE_FORMAT_4S08       = &h00000200       ' 44.1   kHz, Stereo, 8-BIT
      %WAVE_FORMAT_4M16       = &h00000400       ' 44.1   kHz, Mono,   16-BIT
      %WAVE_FORMAT_4S16       = &h00000800       ' 44.1   kHz, Stereo, 16-BIT
    #ENDIF
    
    ' Sample info structure & flags
    TYPE BASS_SAMPLE
      freq     AS DWORD      ' DEFAULT playback rate
      volume   AS DWORD    ' DEFAULT volume (0-100)
      pan      AS LONG     ' DEFAULT pan (-100=LEFT, 0=middle, 100=RIGHT)
      flags    AS DWORD   ' BASS_SAMPLE_xxx flags
      length   AS DWORD    ' length (IN bytes)
      MAX      AS DWORD     ' maximum simultaneous playbacks
      origres  AS DWORD   ' original resolution BITS
      chans    AS DWORD   ' number OF channels
      mingap   AS DWORD    ' minimum gap (ms) between creating channels
    ' The following are the sample's default 3D attributes (if the sample
    ' IS 3D, BASS_SAMPLE_3D IS IN flags) see BASS_ChannelSet3DAttributes
      mode3d   AS DWORD    ' BASS_3DMODE_xxx mode
      mindist  AS SINGLE   ' minimum distance
      maxdist  AS SINGLE   ' maximum distance
      iangle   AS DWORD    ' angle OF inside projection cone
      oangle   AS DWORD    ' angle OF outside projection cone
      outvol   AS DWORD    ' delta-volume outside the projection cone
    ' The following are the defaults used IF the sample uses the DirectX 7
    ' voice allocation/management features.
      vam      AS DWORD     ' voice allocation/management flags (BASS_VAM_xxx)
      priority AS DWORD    ' priority (0=lowest, 0xffffffff=highest)
    END TYPE
    
    %BASS_STREAM_RESTRATE  = &h80000   ' restrict the download rate OF internet file streams
    %BASS_STREAM_BLOCK     = &h100000' download/play internet file stream IN small blocks
    %BASS_STREAM_DECODE    = &h200000' don't play the stream, only decode (BASS_ChannelGetData)
    %BASS_STREAM_STATUS    = &h800000' give SERVER STATUS info (HTTP/ICY tags) IN DOWNLOADPROC
    
    %BASS_SAMPLE_8BITS = 1 ' 8 bit
    %BASS_SAMPLE_FLOAT = 256 ' 32-bit floating-point
    %BASS_SAMPLE_MONO = 2 ' mono, else stereo
    %BASS_SAMPLE_LOOP = 4 ' looped
    %BASS_SAMPLE_3D = 8 ' 3D functionality enabled
    %BASS_SAMPLE_SOFTWARE = 16 ' it's NOT using hardware mixing
    %BASS_SAMPLE_MUTEMAX = 32 ' muted at max distance (3D only)
    %BASS_SAMPLE_VAM = 64 ' uses the DX7 voice allocation & management
    %BASS_SAMPLE_FX = 128 ' old implementation of DX8 effects are enabled
    %BASS_SAMPLE_OVER_VOL = &H10000 ' override lowest volume
    %BASS_SAMPLE_OVER_POS = &H20000 ' override longest playing
    %BASS_SAMPLE_OVER_DIST = &H30000 ' override furthest from listener (3D only)
    
    %BASS_STREAM_PRESCAN = &h20000 ' enable pin-point seeking (MP3/MP2/MP1)
    %BASS_MP3_SETPOS = %BASS_STREAM_PRESCAN
    %BASS_STREAM_AUTOFREE = &h40000 ' automatically free the stream when it stop/ends
    %BASS_STREAM_RESTRATE = &h80000 ' restrict the download rate of internet file streams
    %BASS_STREAM_BLOCK = &h100000 ' download/play internet file stream in small blocks
    %BASS_STREAM_DECODE = &h200000 ' don't play the stream, only decode (BASS_ChannelGetData)
    %BASS_STREAM_STATUS = &h800000 ' give server status info (HTTP/ICY tags) in DOWNLOADPROC
    
    %BASS_MUSIC_FLOAT        = %BASS_SAMPLE_FLOAT ' 32-BIT floating-point
    %BASS_MUSIC_MONO         = %BASS_SAMPLE_MONO ' force mono mixing (less CPU usage)
    %BASS_MUSIC_LOOP         = %BASS_SAMPLE_LOOP ' LOOP music
    %BASS_MUSIC_3D           = %BASS_SAMPLE_3D ' ENABLE 3D functionality
    %BASS_MUSIC_FX           = %BASS_SAMPLE_FX ' ENABLE old implementation OF DX8 effects
    %BASS_MUSIC_AUTOFREE     = %BASS_STREAM_AUTOFREE ' automatically free the music when it STOP/ends
    %BASS_MUSIC_DECODE       = %BASS_STREAM_DECODE ' don't play the music, only decode (BASS_ChannelGetData)
    %BASS_MUSIC_PRESCAN      = %BASS_STREAM_PRESCAN   ' calculate playback length
    %BASS_MUSIC_CALCLEN      = %BASS_MUSIC_PRESCAN
    %BASS_MUSIC_RAMP         = &h200   ' normal ramping
    %BASS_MUSIC_RAMPS        = &h400   ' sensitive ramping
    %BASS_MUSIC_SURROUND     = &h800   ' surround sound
    %BASS_MUSIC_SURROUND2    = &h1000  ' surround sound (mode 2)
    %BASS_MUSIC_FT2MOD       = &h2000  ' play .MOD AS FastTracker 2 does
    %BASS_MUSIC_PT1MOD       = &h4000  ' play .MOD AS ProTracker 1 does
    %BASS_MUSIC_NONINTER     = &h10000   ' non-interpolated mixing
    %BASS_MUSIC_POSRESET     = &h8000  ' STOP ALL notes when moving position
    %BASS_MUSIC_POSRESETEX   = &h400000' STOP ALL notes AND RESET bmp/etc when moving position
    %BASS_MUSIC_STOPBACK     = &h80000   ' STOP the music ON a backwards jump effect
    %BASS_MUSIC_NOSAMPLE     = &h100000' don't load the samples
    
    ' Speaker assignment flags
    %BASS_SPEAKER_FRONT  = &h1000000   ' front speakers
    %BASS_SPEAKER_REAR   = &h2000000   ' rear/side speakers
    %BASS_SPEAKER_CENLFE   = &h3000000   ' center & LFE speakers (5.1)
    %BASS_SPEAKER_REAR2  = &h4000000   ' rear center speakers (7.1)
    MACRO BASS_SPEAKER_N(n) = n * (2 ^ 24)
    %BASS_SPEAKER_LEFT   = &h10000000  ' modifier: LEFT
    %BASS_SPEAKER_RIGHT  = &h20000000  ' modifier: RIGHT
    %BASS_SPEAKER_FRONTLEFT = %BASS_SPEAKER_FRONT OR %BASS_SPEAKER_LEFT
    %BASS_SPEAKER_FRONTRIGHT = %BASS_SPEAKER_FRONT OR %BASS_SPEAKER_RIGHT
    %BASS_SPEAKER_REARLEFT   = %BASS_SPEAKER_REAR OR %BASS_SPEAKER_LEFT
    %BASS_SPEAKER_REARRIGHT  = %BASS_SPEAKER_REAR OR %BASS_SPEAKER_RIGHT
    %BASS_SPEAKER_CENTER     = %BASS_SPEAKER_CENLFE OR %BASS_SPEAKER_LEFT
    %BASS_SPEAKER_LFE        = %BASS_SPEAKER_CENLFE OR %BASS_SPEAKER_RIGHT
    %BASS_SPEAKER_REAR2LEFT  = %BASS_SPEAKER_REAR2 OR %BASS_SPEAKER_LEFT
    %BASS_SPEAKER_REAR2RIGHT = %BASS_SPEAKER_REAR2 OR %BASS_SPEAKER_RIGHT
    
    %BASS_UNICODE      = &h80000000
    
    %BASS_RECORD_PAUSE     = &h8000  ' start recording paused
    
    MACRO MAKEMUSICPOS3(order, row) = &H80000000 OR MAK(LONG, order, row)
    
    ' DX7 voice allocation flags
    %BASS_VAM_HARDWARE     = 1
    ' Play the sample IN hardware. IF no hardware voices are available THEN
    ' the "play" CALL will fail
    %BASS_VAM_SOFTWARE     = 2
    ' Play the sample IN software (ie. non-accelerated). No other VAM flags
    ' may be used together WITH this flag.
    
    ' DX7 voice management flags
    ' These flags ENABLE hardware resource stealing... IF the hardware has no
    ' available voices, a currently playing buffer will be stopped TO make room FOR
    ' the NEW buffer. NOTE: only samples loaded/CREATED WITH the BASS_SAMPLE_VAM
    ' flag are considered FOR termination by the DX7 voice management.
    %BASS_VAM_TERM_TIME    = 4
    ' IF there are no free hardware voices, the buffer TO be terminated will be
    ' the one WITH the least time LEFT TO play.
    %BASS_VAM_TERM_DIST    = 8
    ' IF there are no free hardware voices, the buffer TO be terminated will be
    ' one that was loaded/CREATED WITH the BASS_SAMPLE_MUTEMAX flag AND IS beyond
    ' it's max distance. If there are no buffers that match this criteria, then the
    ' "play" CALL will fail.
    %BASS_VAM_TERM_PRIO    = 16
    ' IF there are no free hardware voices, the buffer TO be terminated will be
    ' the one WITH the lowest priority.
    
    TYPE BASS_CHANNELINFO
      freq    AS DWORD      ' DEFAULT playback rate
      chans   AS DWORD   ' channels
      flags   AS DWORD   ' BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
      ctype   AS DWORD   ' TYPE OF channel
      origres AS DWORD   ' original resolution
      plugin  AS HPLUGIN    ' plugin
    END TYPE
    
    ' BASS_CHANNELINFO types
    %BASS_CTYPE_SAMPLE       = 1
    %BASS_CTYPE_RECORD       = 2
    %BASS_CTYPE_STREAM       = &h10000
    %BASS_CTYPE_STREAM_OGG   = &h10002
    %BASS_CTYPE_STREAM_MP1   = &h10003
    %BASS_CTYPE_STREAM_MP2   = &h10004
    %BASS_CTYPE_STREAM_MP3   = &h10005
    %BASS_CTYPE_STREAM_AIFF  = &h10006
    %BASS_CTYPE_STREAM_WAV   = &h40000 ' WAVE flag, LOWORD=codec
    %BASS_CTYPE_STREAM_WAV_PCM   = &h50001
    %BASS_CTYPE_STREAM_WAV_FLOAT = &h50003
    %BASS_CTYPE_STREAM_WAV_MP3   = &h50055
    %BASS_CTYPE_MUSIC_MOD  = &h20000
    %BASS_CTYPE_MUSIC_MTM  = &h20001
    %BASS_CTYPE_MUSIC_S3M  = &h20002
    %BASS_CTYPE_MUSIC_XM     = &h20003
    %BASS_CTYPE_MUSIC_IT     = &h20004
    %BASS_CTYPE_MUSIC_MO3  = &h00100 ' MO3 flag
    
    TYPE BASS_PLUGINFORM
      ctype AS DWORD     ' channel TYPE
      NAME  AS DWORD   ' format description
      exts  AS DWORD   ' file extension filter (*.ext1;*.ext2;etc...)
    END TYPE
    
    TYPE BASS_PLUGININFO
      version AS DWORD           ' version (same form AS BASS_GetVersion)
      formatc AS DWORD           ' number OF formats
      formats AS DWORD   ' the ARRAY OF formats
    END TYPE
    
    ' 3D vector (FOR 3D positions/velocities/orientations)
    TYPE BASS_3DVECTOR
      x AS SINGLE   ' +=RIGHT, -=LEFT
      y AS SINGLE   ' +=up, -=down
      z AS SINGLE   ' +=front, -=behind
    END TYPE
    
    ' 3D channel modes
    %BASS_3DMODE_NORMAL    = 0
    ' normal 3D processing
    %BASS_3DMODE_RELATIVE  = 1
    ' The channel's 3D position (position/velocity/orientation) are relative to
    ' the listener. When the listener's position/velocity/orientation is changed
    ' with BASS_Set3DPosition, the channel's position relative to the listener does
    ' not change.
    %BASS_3DMODE_OFF       = 2
    ' Turn OFF 3D processing ON the channel, the sound will be played
    ' In the center.
    
    ' EAX environments, use WITH BASS_SetEAXParameters
    %EAX_ENVIRONMENT_GENERIC         = 1
    %EAX_ENVIRONMENT_PADDEDCELL      = 2
    %EAX_ENVIRONMENT_ROOM            = 3
    %EAX_ENVIRONMENT_BATHROOM        = 4
    %EAX_ENVIRONMENT_LIVINGROOM      = 5
    %EAX_ENVIRONMENT_STONEROOM       = 6
    %EAX_ENVIRONMENT_AUDITORIUM      = 7
    %EAX_ENVIRONMENT_CONCERTHALL     = 8
    %EAX_ENVIRONMENT_CAVE            = 9
    %EAX_ENVIRONMENT_ARENA           = 10
    %EAX_ENVIRONMENT_HANGAR          = 11
    %EAX_ENVIRONMENT_CARPETEDHALLWAY = 12
    %EAX_ENVIRONMENT_HALLWAY         = 13
    %EAX_ENVIRONMENT_STONECORRIDOR   = 14
    %EAX_ENVIRONMENT_ALLEY           = 15
    %EAX_ENVIRONMENT_FOREST          = 16
    %EAX_ENVIRONMENT_CITY            = 17
    %EAX_ENVIRONMENT_MOUNTAINS       = 18
    %EAX_ENVIRONMENT_QUARRY          = 19
    %EAX_ENVIRONMENT_PLAIN           = 20
    %EAX_ENVIRONMENT_PARKINGLOT      = 21
    %EAX_ENVIRONMENT_SEWERPIPE       = 22
    %EAX_ENVIRONMENT_UNDERWATER      = 23
    %EAX_ENVIRONMENT_DRUGGED         = 24
    %EAX_ENVIRONMENT_DIZZY           = 25
    %EAX_ENVIRONMENT_PSYCHOTIC       = 26
    %EAX_ENVIRONMENT_COUNT           = 26 ' total number OF environments
    
    ' EAX presets, usage: BASS_SetEAXParameters(EAX_PRESET_xxx)
    MACRO EAX_PRESET_GENERIC         = %EAX_ENVIRONMENT_GENERIC,0.5!,1.493!,0.5!
    MACRO EAX_PRESET_PADDEDCELL      = %EAX_ENVIRONMENT_PADDEDCELL,0.25!,0.1!,0.0!
    MACRO EAX_PRESET_ROOM            = %EAX_ENVIRONMENT_ROOM,0.417!,0.4!,0.666!
    MACRO EAX_PRESET_BATHROOM        = %EAX_ENVIRONMENT_BATHROOM,0.653!,1.499!,0.166!
    MACRO EAX_PRESET_LIVINGROOM      = %EAX_ENVIRONMENT_LIVINGROOM,0.208!,0.478!,0.0!
    MACRO EAX_PRESET_STONEROOM       = %EAX_ENVIRONMENT_STONEROOM,0.5!,2.309!,0.888!
    MACRO EAX_PRESET_AUDITORIUM      = %EAX_ENVIRONMENT_AUDITORIUM,0.403!,4.279!,0.5!
    MACRO EAX_PRESET_CONCERTHALL     = %EAX_ENVIRONMENT_CONCERTHALL,0.5!,3.961!,0.5!
    MACRO EAX_PRESET_CAVE            = %EAX_ENVIRONMENT_CAVE,0.5!,2.886!,1.304!
    MACRO EAX_PRESET_ARENA           = %EAX_ENVIRONMENT_ARENA,0.361!,7.284!,0.332!
    MACRO EAX_PRESET_HANGAR          = %EAX_ENVIRONMENT_HANGAR,0.5!,10.0!,0.3!
    MACRO EAX_PRESET_CARPETEDHALLWAY = %EAX_ENVIRONMENT_CARPETEDHALLWAY,0.153!,0.259!,2.0!
    MACRO EAX_PRESET_HALLWAY         = %EAX_ENVIRONMENT_HALLWAY,0.361!,1.493!,0.0!
    MACRO EAX_PRESET_STONECORRIDOR   = %EAX_ENVIRONMENT_STONECORRIDOR,0.444!,2.697!,0.638!
    MACRO EAX_PRESET_ALLEY           = %EAX_ENVIRONMENT_ALLEY,0.25!,1.752!,0.776!
    MACRO EAX_PRESET_FOREST          = %EAX_ENVIRONMENT_FOREST,0.111!,3.145!,0.472!
    MACRO EAX_PRESET_CITY            = %EAX_ENVIRONMENT_CITY,0.111!,2.767!,0.224!
    MACRO EAX_PRESET_MOUNTAINS       = %EAX_ENVIRONMENT_MOUNTAINS,0.194!,7.841!,0.472!
    MACRO EAX_PRESET_QUARRY          = %EAX_ENVIRONMENT_QUARRY,1.0!,1.499!,0.5!
    MACRO EAX_PRESET_PLAIN           = %EAX_ENVIRONMENT_PLAIN,0.097!,2.767!,0.224!
    MACRO EAX_PRESET_PARKINGLOT      = %EAX_ENVIRONMENT_PARKINGLOT,0.208!,1.652!,1.5!
    MACRO EAX_PRESET_SEWERPIPE       = %EAX_ENVIRONMENT_SEWERPIPE,0.652!,2.886!,0.25!
    MACRO EAX_PRESET_UNDERWATER      = %EAX_ENVIRONMENT_UNDERWATER,1.0!,1.499!,0.0!
    MACRO EAX_PRESET_DRUGGED         = %EAX_ENVIRONMENT_DRUGGED,0.875!,8.392!,1.388!
    MACRO EAX_PRESET_DIZZY           = %EAX_ENVIRONMENT_DIZZY,0.139!,17.234!,0.666!
    MACRO EAX_PRESET_PSYCHOTIC       = %EAX_ENVIRONMENT_PSYCHOTIC,0.486!,7.563!,0.806!
    
    
    ' software 3D mixing algorithm modes (used WITH BASS_Set3DAlgorithm)
    %BASS_3DALG_DEFAULT  = 0
    ' DEFAULT algorithm (currently translates TO BASS_3DALG_OFF)
    %BASS_3DALG_OFF      = 1
    ' Uses normal LEFT AND RIGHT panning. The vertical axis IS ignored except FOR
    ' scaling OF volume due TO distance. Doppler SHIFT AND volume scaling are still
    ' applied, but the 3D filtering IS NOT performed. This IS the most CPU efficient
    ' software implementation, but provides no virtual 3D audio effect. Head Related
    ' Transfer FUNCTION processing will NOT be done. Since only normal stereo panning
    ' IS used, a channel USING this algorithm may be accelerated by a 2D hardware
    ' voice IF no free 3D hardware voices are available.
    %BASS_3DALG_FULL     = 2
    ' This algorithm gives the highest QUALITY 3D audio effect, but uses more CPU.
    ' Requires Windows 98 2nd Edition OR Windows 2000 that uses WDM drivers, IF this
    ' mode IS NOT available THEN BASS_3DALG_OFF will be used instead.
    %BASS_3DALG_LIGHT    = 3
    ' This algorithm gives a good 3D audio effect, AND uses less CPU than the FULL
    ' mode. Requires Windows 98 2nd Edition OR Windows 2000 that uses WDM dri obv, IF
    ' this mode IS NOT available THEN BASS_3DALG_OFF will be used instead.
    
    FUNCTION STREAMPROC(BYVAL pbHANDLE AS DWORD, BYVAL buffer AS DWORD, length AS DWORD, USER AS DWORD) AS DWORD
      ' 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.
    
      ' pbHANDLE : 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
    
    %BASS_STREAMPROC_END     = &h80000000  ' END OF USER stream flag
    
    ' BASS_StreamGetFilePosition modes
    %BASS_FILEPOS_CURRENT  = 0
    %BASS_FILEPOS_DECODE   = %BASS_FILEPOS_CURRENT
    %BASS_FILEPOS_DOWNLOAD = 1
    %BASS_FILEPOS_END      = 2
    %BASS_FILEPOS_START    = 3
    
    ' STREAMFILEPROC actions
    %BASS_FILE_CLOSE       = 0
    %BASS_FILE_READ        = 1
    %BASS_FILE_LEN         = 3
    %BASS_FILE_SEEK        = 4
    
    FUNCTION STREAMFILEPROC(action AS DWORD, param1 AS DWORD, param2 AS DWORD, USER AS DWORD) AS DWORD
      ' USER file stream CALLBACK function.
    
      '  action : The action TO perform, one OF BASS_FILE_xxx values.
      '  param1 : Depends ON "action"
      '  param2 : Depends ON "action"
      '  USER   : The 'user' parameter value given when calling BASS_StreamCreate
      '  RETURN : Depends ON "action"
    END FUNCTION
    
    SUB DOWNLOADPROC(buffer AS DWORD, length AS DWORD, USER AS DWORD)
      ' 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 value given when calling BASS_StreamCreateURL
    END SUB
    
    ' Sync types (WITH BASS_ChannelSetSync "param" AND SYNCPROC "data"
    ' definitions) & flags.
    %BASS_SYNC_POS   = 0
    ' Sync when a channel reaches a position.
    ' param: position IN bytes
    ' DATA : NOT used
    %BASS_SYNC_END   = 2
    ' Sync when a channel reaches the end.
    ' param: NOT used
    ' DATA : 1 = the sync IS triggered by a backward jump IN a MOD music, otherwise NOT used
    %BASS_SYNC_META  = 4
    ' Sync when metadata IS received IN a stream.
    ' param: NOT used
    ' DATA : POINTER TO the metadata
    %BASS_SYNC_SLIDE = 5
    ' Sync when an attribute slide IS completed.
    ' param: NOT used
    ' DATA : the TYPE OF slide completed (one OF the BASS_SLIDE_xxx values)
    %BASS_SYNC_STALL = 6
    ' Sync when playback has stalled.
    ' param: NOT used
    ' DATA : 0=stalled, 1=resumed
    %BASS_SYNC_DOWNLOAD = 7
    ' Sync when downloading OF an internet (OR "buffered" USER file) stream has ended.
    ' param: NOT used
    ' DATA : NOT used
    %BASS_SYNC_FREE     = 8
    ' Sync when a channel IS freed.
    ' param: NOT used
    ' DATA : NOT used
    %BASS_SYNC_MUSICPOS = 10
    ' Sync when a MOD music reaches an order:row position.
    ' param: LOWORD=order (0=first, -1=ALL) HIWORD=row (0=first, -1=ALL)
    ' DATA : LOWORD=order HIWORD=row
    %BASS_SYNC_MUSICINST = 1
    ' Sync when an instrument (sample FOR the non-instrument based formats)
    ' IS played IN a MOD music (NOT including retrigs).
    ' param: LOWORD=instrument (1=first) HIWORD=note (0=c0...119=b9, -1=ALL)
    ' DATA : LOWORD=note HIWORD=volume (0-64)
    %BASS_SYNC_MUSICFX    = 3
    ' Sync when the "sync" effect (XM/MTM/MOD: E8x/Wxx, IT/S3M: S2x) IS used.
    ' param: 0  [img]http://www.powerbasic.com/support/forums/biggrin.gif[/img]ATA=pos, 1  [img]http://www.powerbasic.com/support/forums/biggrin.gif[/img]ATA="x" value
    ' DATA : param=0: LOWORD=order HIWORD=row, param=1: "x" value
    %BASS_SYNC_MESSAGE    = &h20000000  ' FLAG: POST a Windows message (instead OF CALLBACK)
    ' When USING a WINDOW message "callback", the message TO POST IS given IN the "proc"
    ' parameter OF BASS_ChannelSetSync, AND IS posted TO the WINDOW specified IN the BASS_Init
    ' call. The message parameters are: WPARAM = DATA, LPARAM = user.
    %BASS_SYNC_MIXTIME    = &h40000000  ' FLAG: sync AT mixtime, ELSE AT playtime
    %BASS_SYNC_ONETIME    = &h80000000  ' FLAG: sync only once, ELSE continuously
    
    SUB SYNCPROC(pbHANDLE AS HSYNC, channel AS DWORD, pbDATA AS DWORD, USER AS DWORD)
    ' Sync CALLBACK function. NOTE: a sync CALLBACK FUNCTION should be very
    ' quick AS other syncs can't be processed until it has finished. If the sync
    ' IS a "mixtime" sync, THEN other streams AND MOD musics can't be mixed until
    ' it's finished either.
    
    '    pbHANDLE : The sync that has occured
    '    channel  : Channel that the sync occured IN
    '    pbDATA   : Additional DATA associated with the sync's occurance
    '    USER     : The 'user' parameter given when calling BASS_ChannelSetSync
    END SUB
    
    SUB DSPPROC(pbHANDLE AS HDSP, channel AS DWORD, buffer AS DWORD, length AS DWORD, USER AS DWORD)
    '   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.
    
    '    pbHANDLE : 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(pbHANDLE AS HRECORD, buffer AS DWORD, length AS DWORD, USER AS DWORD) AS BYTE
    '   Recording CALLBACK function.
    
    '    pbHANDLE : The recording HANDLE
    '    buffer   : Buffer containing the recorded sample DATA
    '    length   : Number OF bytes
    '    USER     : The 'user' parameter value given when calling BASS_RecordStart
    '    RETURN   : TRUE = continue recording, FALSE = STOP
    END FUNCTION
    
    ' BASS_ChannelGetData flags
    %BASS_DATA_AVAILABLE = 0       ' query how much DATA is buffered
    %BASS_DATA_FLOAT     = &h40000000  ' flag: RETURN floating-point sample DATA
    %BASS_DATA_FFT512    = &h80000000  ' 512 sample FFT
    %BASS_DATA_FFT1024   = &h80000001  ' 1024 FFT
    %BASS_DATA_FFT2048   = &h80000002  ' 2048 FFT
    %BASS_DATA_FFT4096   = &h80000003  ' 4096 FFT
    %BASS_DATA_FFT_INDIVIDUAL = &h10   ' FFT flag: FFT FOR each channel, ELSE ALL combined
    %BASS_DATA_FFT_NOWINDOW  = &h20  ' FFT flag: no Hanning WINDOW
    
    ' BASS_ChannelGetTags types : what's returned
    %BASS_TAG_ID3    =0   ' ID3v1 tags : 128 BYTE block
    %BASS_TAG_ID3V2   = 1   ' ID3v2 tags : variable length block
    %BASS_TAG_OGG    =2   ' OGG comments : ARRAY OF NULL-terminated UTF-8 strings
    %BASS_TAG_HTTP   =  3   ' HTTP headers : ARRAY OF NULL-terminated ANSI strings
    %BASS_TAG_ICY    =4   ' ICY headers : ARRAY OF NULL-terminated ANSI strings
    %BASS_TAG_META    = 5   ' ICY metadata : ANSI STRING
    %BASS_TAG_VENDOR   =  9   ' OGG encoder : UTF-8 STRING
    %BASS_TAG_RIFF_INFO  = &h100 ' RIFF/WAVE tags : ARRAY OF NULL-terminated ANSI strings
    %BASS_TAG_MUSIC_NAME     = &h10000   ' MOD music NAME : ANSI STRING
    %BASS_TAG_MUSIC_MESSAGE  = &h10001   ' MOD message : ANSI STRING
    %BASS_TAG_MUSIC_INST     = &h10100   ' + instrument #, MOD instrument NAME : ANSI STRING
    %BASS_TAG_MUSIC_SAMPLE   = &h10300   ' + sample #, MOD sample NAME : ANSI STRING
    
    ' BASS_MusicSet/GetAttribute options
    %BASS_MUSIC_ATTRIB_AMPLIFY =  0
    %BASS_MUSIC_ATTRIB_PANSEP  =1
    %BASS_MUSIC_ATTRIB_PSCALER =  2
    %BASS_MUSIC_ATTRIB_BPM     =3
    %BASS_MUSIC_ATTRIB_SPEED    = 4
    %BASS_MUSIC_ATTRIB_VOL_GLOBAL =5
    %BASS_MUSIC_ATTRIB_VOL_CHAN  = &h100 ' + channel #
    %BASS_MUSIC_ATTRIB_VOL_INST  = &h200 ' + instrument #
    
    ' DX8 effect types, use WITH BASS_ChannelSetFX
    %BASS_FX_CHORUS      = 1       ' GUID_DSFX_STANDARD_CHORUS
    %BASS_FX_COMPRESSOR  = 2     ' GUID_DSFX_STANDARD_COMPRESSOR
    %BASS_FX_DISTORTION  = 3     ' GUID_DSFX_STANDARD_DISTORTION
    %BASS_FX_ECHO        = 4       ' GUID_DSFX_STANDARD_ECHO
    %BASS_FX_FLANGER     = 5    ' GUID_DSFX_STANDARD_FLANGER
    %BASS_FX_GARGLE      = 6       ' GUID_DSFX_STANDARD_GARGLE
    %BASS_FX_I3DL2REVERB = 7  ' GUID_DSFX_STANDARD_I3DL2REVERB
    %BASS_FX_PARAMEQ     = 8    ' GUID_DSFX_STANDARD_PARAMEQ
    %BASS_FX_REVERB      = 9  ' GUID_DSFX_WAVES_REVERB
    
    TYPE BASS_FXCHORUS
      fWetDryMix AS SINGLE
      fDepth     AS SINGLE
      fFeedback  AS SINGLE
      fFrequency AS SINGLE
      lWaveform  AS DWORD         ' 0=triangle, 1=sine
      fDelay     AS SINGLE
      lPhase     AS DWORD            ' BASS_FX_PHASE_xxx
    END TYPE     ' DSFXChorus
    
    TYPE BASS_FXCOMPRESSOR
      fGain      AS SINGLE
      fAttack    AS SINGLE
      fRelease   AS SINGLE
      fThreshold AS SINGLE
      fRatio     AS SINGLE
      fPredelay  AS SINGLE
    END TYPE     ' DSFXCompressor
    
    TYPE BASS_FXDISTORTION
      fGain                  AS SINGLE
      fEdge                  AS SINGLE
      fPostEQCenterFrequency AS SINGLE
      fPostEQBandwidth       AS SINGLE
      fPreLowpassCutoff      AS SINGLE
    END TYPE     ' DSFXDistortion
    
    TYPE BASS_FXECHO
      fWetDryMix  AS SINGLE
      fFeedback   AS SINGLE
      fLeftDelay  AS SINGLE
      fRightDelay AS SINGLE
      lPanDelay   AS BYTE
    END TYPE     ' DSFXEcho
    
    TYPE BASS_FXFLANGER
      fWetDryMix AS SINGLE
      fDepth     AS SINGLE
      fFeedback  AS SINGLE
      fFrequency AS SINGLE
      lWaveform  AS DWORD         ' 0=triangle, 1=sine
      fDelay     AS SINGLE
      lPhase     AS DWORD         ' BASS_FX_PHASE_xxx
    END TYPE     ' DSFXFlanger
    
    TYPE BASS_FXGARGLE
      dwRateHz    AS DWORD                      ' Rate OF modulation IN hz
      dwWaveShape AS DWORD                   ' 0=triangle, 1=square
    END TYPE     ' DSFXGargle
    
    TYPE BASS_FXI3DL2REVERB
      lRoom               AS LONG     ' [-10000, 0]      DEFAULT: -1000 mB
      lRoomHF             AS LONG     ' [-10000, 0]      DEFAULT: 0 mB
      flRoomRolloffFactor AS SINGLE   ' [0.0, 10.0]      DEFAULT: 0.0
      flDecayTime         AS SINGLE   ' [0.1, 20.0]      DEFAULT: 1.49s
      flDecayHFRatio      AS SINGLE   ' [0.1, 2.0]       DEFAULT: 0.83
      lReflections        AS LONG     ' [-10000, 1000]   DEFAULT: -2602 mB
      flReflectionsDelay  AS SINGLE   ' [0.0, 0.3]       DEFAULT: 0.007 s
      lReverb             AS LONG     ' [-10000, 2000]   DEFAULT: 200 mB
      flReverbDelay       AS SINGLE   ' [0.0, 0.1]       DEFAULT: 0.011 s
      flDiffusion         AS SINGLE   ' [0.0, 100.0]     DEFAULT: 100.0 %
      flDensity           AS SINGLE   ' [0.0, 100.0]     DEFAULT: 100.0 %
      flHFReference       AS SINGLE   ' [20.0, 20000.0]  DEFAULT: 5000.0 Hz
    END TYPE    ' DSFXI3DL2Reverb
    
    TYPE BASS_FXPARAMEQ
      fCenter    AS SINGLE
      fBandwidth AS SINGLE
      fGain      AS SINGLE
    END TYPE     ' DSFXParamEq
    
    TYPE BASS_FXREVERB
      fInGain          AS SINGLE      ' [-96.0,0.0]            DEFAULT: 0.0 dB
      fReverbMix       AS SINGLE      ' [-96.0,0.0]            DEFAULT: 0.0 db
      fReverbTime      AS SINGLE      ' [0.001,3000.0]         DEFAULT: 1000.0 ms
      fHighFreqRTRatio AS SINGLE      ' [0.001,0.999]          DEFAULT: 0.001
    END TYPE     ' DSFXWavesReverb
    
    %BASS_FX_PHASE_NEG_180       = 0
    %BASS_FX_PHASE_NEG_90     =    1
    %BASS_FX_PHASE_ZERO       =    2
    %BASS_FX_PHASE_90         =    3
    %BASS_FX_PHASE_180        =    4
    
    ' BASS_ChannelIsActive RETURN values
    %BASS_ACTIVE_STOPPED  = 0
    %BASS_ACTIVE_PLAYING  = 1
    %BASS_ACTIVE_STALLED  = 2
    %BASS_ACTIVE_PAUSED  =3
    
    ' BASS_ChannelIsSliding RETURN flags
    %BASS_SLIDE_FREQ  = 1
    %BASS_SLIDE_VOL = 2
    %BASS_SLIDE_PAN = 4
    
    ' BASS_RecordSetInput flags
    %BASS_INPUT_OFF    = &h10000
    %BASS_INPUT_ON     = &h20000
    %BASS_INPUT_LEVEL  = &h40000
    
    %BASS_INPUT_TYPE_MASK    = &hff000000
    %BASS_INPUT_TYPE_UNDEF     = &h00000000
    %BASS_INPUT_TYPE_DIGITAL     = &h01000000
    %BASS_INPUT_TYPE_LINE    = &h02000000
    %BASS_INPUT_TYPE_MIC       = &h03000000
    %BASS_INPUT_TYPE_SYNTH     = &h04000000
    %BASS_INPUT_TYPE_CD      = &h05000000
    %BASS_INPUT_TYPE_PHONE     = &h06000000
    %BASS_INPUT_TYPE_SPEAKER     = &h07000000
    %BASS_INPUT_TYPE_WAVE    = &h08000000
    %BASS_INPUT_TYPE_AUX       = &h09000000
    %BASS_INPUT_TYPE_ANALOG    = &h0a000000
    
    ' BASS_Set/GetConfig options
    %BASS_CONFIG_BUFFER     = 0
    %BASS_CONFIG_UPDATEPERIOD = 1
    %BASS_CONFIG_MAXVOL     = 3
    %BASS_CONFIG_GVOL_SAMPLE   =  4
    %BASS_CONFIG_GVOL_STREAM   =  5
    %BASS_CONFIG_GVOL_MUSIC  =  6
    %BASS_CONFIG_CURVE_VOL   =  7
    %BASS_CONFIG_CURVE_PAN   =  8
    %BASS_CONFIG_FLOATDSP  =  9
    %BASS_CONFIG_3DALGORITHM   =  10
    %BASS_CONFIG_NET_TIMEOUT   =  11
    %BASS_CONFIG_NET_BUFFER   = 12
    %BASS_CONFIG_PAUSE_NOPLAY = 13
    %BASS_CONFIG_NET_PREBUF   = 15
    %BASS_CONFIG_NET_AGENT    = 16
    %BASS_CONFIG_NET_PROXY    = 17
    %BASS_CONFIG_NET_PASSIVE  =   18
    %BASS_CONFIG_MP3_CODEC    = 19
    
    DECLARE FUNCTION BASS_SetConfig LIB "bass.dll" ALIAS "BASS_SetConfig" (BYVAL pbOPTION AS DWORD, BYVAL value AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_GetConfig LIB "bass.dll" ALIAS "BASS_GetConfig" (BYVAL pbOPTION AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_GetVersion LIB "bass.dll" ALIAS "BASS_GetVersion" AS DWORD
    DECLARE FUNCTION BASS_GetDeviceDescription LIB "bass.dll" ALIAS "BASS_GetDeviceDescription" (BYVAL device AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_ErrorGetCode LIB "bass.dll" ALIAS "BASS_ErrorGetCode" () AS LONG
    DECLARE FUNCTION BASS_Init LIB "bass.dll" ALIAS "BASS_Init" (BYVAL device AS LONG, BYVAL freq AS DWORD, BYVAL flags AS DWORD, BYVAL win AS DWORD, BYVAL dsguid AS DWORD) AS LONG
    DECLARE FUNCTION BASS_SetDevice LIB "bass.dll" ALIAS "BASS_SetDevice" (BYVAL device AS DWORD) AS LONG
    DECLARE FUNCTION BASS_GetDevice LIB "bass.dll" ALIAS "BASS_GetDevice" () AS DWORD
    DECLARE FUNCTION BASS_Free LIB "bass.dll" ALIAS "BASS_Free" () AS LONG
    DECLARE FUNCTION BASS_GetDSoundObject LIB "bass.dll" ALIAS "BASS_GetDSoundObject" (BYVAL pbObject AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_GetInfo LIB "bass.dll" ALIAS "BASS_GetInfo" (BYREF info AS BASS_INFO) AS LONG
    DECLARE FUNCTION BASS_Update LIB "bass.dll" ALIAS "BASS_Update" () AS LONG
    DECLARE FUNCTION BASS_GetCPU LIB "bass.dll" ALIAS "BASS_GetCPU" () AS SINGLE
    DECLARE FUNCTION BASS_Start LIB "bass.dll" ALIAS "BASS_Start" () AS LONG
    DECLARE FUNCTION BASS_Stop LIB "bass.dll" ALIAS "BASS_Stop" () AS LONG
    DECLARE FUNCTION BASS_Pause LIB "bass.dll" ALIAS "BASS_Pause" () AS LONG
    DECLARE FUNCTION BASS_SetVolume LIB "bass.dll" ALIAS "BASS_SetVolume" (BYVAL volume AS DWORD) AS LONG
    DECLARE FUNCTION BASS_GetVolume LIB "bass.dll" ALIAS "BASS_GetVolume" () AS DWORD
    DECLARE FUNCTION BASS_PluginLoad LIB "bass.dll" ALIAS "BASS_PluginLoad" (BYVAL file AS DWORD, BYVAL flags AS DWORD) AS HPLUGIN
    DECLARE FUNCTION BASS_PluginFree LIB "bass.dll" ALIAS "BASS_PluginFree" (BYVAL pbHandle AS HPLUGIN) AS LONG
    DECLARE FUNCTION BASS_PluginGetInfo LIB "bass.dll" ALIAS "BASS_PluginGetInfo" (BYVAL pbHandle AS HPLUGIN) AS DWORD 'BASS_PLUGININFO
    DECLARE FUNCTION BASS_Set3DFactors LIB "bass.dll" ALIAS "BASS_Set3DFactors" (BYVAL distf AS SINGLE, BYVAL rollf AS SINGLE, BYVAL doppf AS SINGLE) AS LONG
    DECLARE FUNCTION BASS_Get3DFactors LIB "bass.dll" ALIAS "BASS_Get3DFactors" (BYREF distf AS SINGLE, BYREF rollf AS SINGLE, BYREF doppf AS SINGLE) AS LONG
    DECLARE FUNCTION BASS_Set3DPosition LIB "bass.dll" ALIAS "BASS_Set3DPosition" (BYREF pbPos AS BASS_3DVECTOR, BYREF vel AS BASS_3DVECTOR, BYREF front AS BASS_3DVECTOR, BYREF top AS BASS_3DVECTOR) AS LONG
    DECLARE FUNCTION BASS_Get3DPosition LIB "bass.dll" ALIAS "BASS_Get3DPosition" (BYREF pbPos AS BASS_3DVECTOR, BYREF vel AS BASS_3DVECTOR, BYREF front AS BASS_3DVECTOR, BYREF top AS BASS_3DVECTOR) AS LONG
    DECLARE FUNCTION BASS_Apply3D LIB "bass.dll" ALIAS "BASS_Apply3D" AS LONG
    DECLARE FUNCTION BASS_SetEAXParameters LIB "bass.dll" ALIAS "BASS_SetEAXParameters" (BYVAL env AS LONG, BYVAL vol AS SINGLE, BYVAL decay AS SINGLE, BYVAL damp AS SINGLE) AS LONG
    DECLARE FUNCTION BASS_GetEAXParameters LIB "bass.dll" ALIAS "BASS_GetEAXParameters" (BYREF env AS DWORD, BYREF vol AS SINGLE, BYREF decay AS SINGLE, BYREF damp AS SINGLE) AS LONG
    
    DECLARE FUNCTION BASS_MusicLoad LIB "bass.dll" ALIAS "BASS_MusicLoad" (BYVAL mem AS LONG, file AS ASCIIZ, BYVAL offset AS DWORD, BYVAL length AS DWORD, BYVAL flags AS DWORD, BYVAL freq AS DWORD) AS HMUSIC
    DECLARE FUNCTION BASS_MusicFree LIB "bass.dll" ALIAS "BASS_MusicFree" (BYVAL pbHandle AS HMUSIC) AS LONG
    DECLARE FUNCTION BASS_MusicSetAttribute LIB "bass.dll" ALIAS "BASS_MusicSetAttribute" (BYVAL pbHandle AS HMUSIC, BYVAL nAttrib AS DWORD, BYVAL value AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_MusicGetAttribute LIB "bass.dll" ALIAS "BASS_MusicGetAttribute" (BYVAL pbHandle AS HMUSIC, BYVAL nAttrib AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_MusicGetOrders LIB "bass.dll" ALIAS "BASS_MusicGetOrders" (BYVAL pbHandle AS HMUSIC) AS DWORD
    DECLARE FUNCTION BASS_MusicGetOrderPosition LIB "bass.dll" ALIAS "BASS_MusicGetOrderPosition" (BYVAL pbHandle AS HMUSIC) AS DWORD
    
    DECLARE FUNCTION BASS_SampleLoad LIB "bass.dll" ALIAS "BASS_SampleLoad" (BYVAL mem AS LONG, file AS ASCIIZ, BYVAL offset AS DWORD, BYVAL length AS DWORD, BYVAL pbMax AS DWORD, BYVAL flags AS DWORD) AS HSAMPLE
    DECLARE FUNCTION BASS_SampleCreate LIB "bass.dll" ALIAS "BASS_SampleCreate" (BYVAL length AS DWORD, BYVAL freq AS DWORD, BYVAL chans AS DWORD, BYVAL nMax AS DWORD, BYVAL flags AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_SampleCreateDone LIB "bass.dll" ALIAS "BASS_SampleCreateDone" AS HSAMPLE
    DECLARE FUNCTION BASS_SampleFree LIB "bass.dll" ALIAS "BASS_SampleFree" (BYVAL pbHandle AS HSAMPLE) AS LONG
    DECLARE FUNCTION BASS_SampleGetInfo LIB "bass.dll" ALIAS "BASS_SampleGetInfo" (BYVAL pbHandle AS HSAMPLE, BYREF info AS BASS_SAMPLE) AS LONG
    DECLARE FUNCTION BASS_SampleSetInfo LIB "bass.dll" ALIAS "BASS_SampleSetInfo" (BYVAL pbHandle AS HSAMPLE, BYREF info AS BASS_SAMPLE) AS LONG
    DECLARE FUNCTION BASS_SampleGetChannel LIB "bass.dll" ALIAS "BASS_SampleGetChannel" (BYVAL pbHandle AS HSAMPLE, BYVAL onlynew AS LONG) AS HCHANNEL
    DECLARE FUNCTION BASS_SampleStop LIB "bass.dll" ALIAS "BASS_SampleStop" (BYVAL pbHandle AS HSAMPLE) AS LONG
    
    DECLARE FUNCTION BASS_StreamCreate LIB "bass.dll" ALIAS "BASS_StreamCreate" (BYVAL freq AS DWORD, BYVAL chans AS DWORD, BYVAL flags AS DWORD, BYREF proc AS DWORD, BYVAL USER AS DWORD) AS HSTREAM
    DECLARE FUNCTION BASS_StreamCreateFile LIB "bass.dll" ALIAS "BASS_StreamCreateFile" (BYVAL mem AS LONG, file AS ASCIIZ, BYVAL offset AS DWORD, BYVAL length AS DWORD, BYVAL flags AS DWORD) AS HSTREAM
    DECLARE FUNCTION BASS_StreamCreateURL LIB "bass.dll" ALIAS "BASS_StreamCreateURL" (BYVAL url AS DWORD, BYVAL offset AS DWORD, BYVAL flags AS DWORD, BYVAL proc AS DWORD, BYVAL USER AS DWORD) AS HSTREAM
    DECLARE FUNCTION BASS_StreamCreateFileUser LIB "bass.dll" ALIAS "BASS_StreamCreateFileUser" (BYVAL buffered AS LONG, BYVAL flags AS DWORD, BYVAL proc AS DWORD, BYVAL USER AS DWORD) AS HSTREAM
    DECLARE FUNCTION BASS_StreamFree LIB "bass.dll" ALIAS "BASS_StreamFree" (BYVAL pbHandle AS HSTREAM) AS LONG
    DECLARE FUNCTION BASS_StreamGetTags LIB "bass.dll" ALIAS "BASS_StreamGetTags" (BYVAL pbHandle AS HSTREAM, BYVAL tags AS DWORD) AS DWORD
    
    DECLARE FUNCTION BASS_RecordGetDeviceDescription LIB "bass.dll" ALIAS "BASS_RecordGetDeviceDescription" (BYVAL device AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_RecordInit LIB "bass.dll" ALIAS "BASS_RecordInit" (BYVAL device AS LONG) AS LONG
    DECLARE FUNCTION BASS_RecordSetDevice LIB "bass.dll" ALIAS "BASS_RecordSetDevice" (BYVAL device AS DWORD) AS LONG
    DECLARE FUNCTION BASS_RecordGetDevice LIB "bass.dll" ALIAS "BASS_RecordGetDevice" AS DWORD
    DECLARE FUNCTION BASS_RecordFree LIB "bass.dll" ALIAS "BASS_RecordFree" AS LONG
    DECLARE FUNCTION BASS_RecordGetInfo LIB "bass.dll" ALIAS "BASS_RecordGetInfo" (BYREF info AS BASS_RECORDINFO) AS LONG
    DECLARE FUNCTION BASS_RecordGetInputName LIB "bass.dll" ALIAS "BASS_RecordGetInputName" (BYVAL inputn AS LONG) AS DWORD
    DECLARE FUNCTION BASS_RecordSetInput LIB "bass.dll" ALIAS "BASS_RecordSetInput" (BYVAL inputn AS LONG, BYVAL setting AS DWORD) AS LONG
    DECLARE FUNCTION BASS_RecordGetInput LIB "bass.dll" ALIAS "BASS_RecordGetInput" (BYVAL inputn AS LONG) AS DWORD
    DECLARE FUNCTION BASS_RecordStart LIB "bass.dll" ALIAS "BASS_RecordStart" (BYVAL freq AS DWORD, BYVAL chans AS DWORD, BYVAL flags AS DWORD, BYVAL proc AS DWORD, BYVAL USER AS DWORD) AS HRECORD
    
    DECLARE FUNCTION BASS_ChannelBytes2Seconds LIB "bass.dll" ALIAS "BASS_ChannelBytes2Seconds" (BYVAL pbHandle AS DWORD, BYVAL pbPos AS QUAD) AS SINGLE
    DECLARE FUNCTION BASS_ChannelSeconds2Bytes LIB "bass.dll" ALIAS "BASS_ChannelSeconds2Bytes" (BYVAL pbHandle AS DWORD, BYVAL pbPos AS SINGLE) AS QUAD
    DECLARE FUNCTION BASS_ChannelGetDevice LIB "bass.dll" ALIAS "BASS_ChannelGetDevice" (BYVAL pbHandle AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_ChannelSetDevice LIB "bass.dll" ALIAS "BASS_ChannelSetDevice" (BYVAL pbHandle AS DWORD, BYVAL device AS DWORD) AS LONG
    DECLARE FUNCTION BASS_ChannelIsActive LIB "bass.dll" ALIAS "BASS_ChannelIsActive" (BYVAL pbHandle AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_ChannelGetInfo LIB "bass.dll" ALIAS "BASS_ChannelGetInfo" (BYVAL pbHandle AS DWORD, BYREF info AS BASS_CHANNELINFO) AS LONG
    DECLARE FUNCTION BASS_ChannelGetTags LIB "bass.dll" ALIAS "BASS_ChannelGetTags" (BYVAL pbHandle AS DWORD, BYVAL tags AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_ChannelSetFlags LIB "bass.dll" ALIAS "BASS_ChannelSetFlags" (BYVAL pbHandle AS DWORD, BYVAL flags AS DWORD) AS LONG
    DECLARE FUNCTION BASS_ChannelPreBuf LIB "bass.dll" ALIAS "BASS_ChannelPreBuf" (BYVAL pbHandle AS DWORD, BYVAL length AS DWORD) AS LONG
    DECLARE FUNCTION BASS_ChannelPlay LIB "bass.dll" ALIAS "BASS_ChannelPlay" (BYVAL pbHandle AS DWORD, BYVAL restart AS LONG) AS LONG
    DECLARE FUNCTION BASS_ChannelStop LIB "bass.dll" ALIAS "BASS_ChannelStop" (BYVAL pbHandle AS DWORD) AS LONG
    DECLARE FUNCTION BASS_ChannelPause LIB "bass.dll" ALIAS "BASS_ChannelPause" (BYVAL pbHandle AS DWORD) AS LONG
    DECLARE FUNCTION BASS_ChannelSetAttributes LIB "bass.dll" ALIAS "BASS_ChannelSetAttributes" (BYVAL pbHandle AS DWORD, BYVAL freq AS LONG, BYVAL volume AS LONG, BYVAL pan AS LONG) AS LONG
    DECLARE FUNCTION BASS_ChannelGetAttributes LIB "bass.dll" ALIAS "BASS_ChannelGetAttributes" (BYVAL pbHandle AS DWORD, BYREF freq AS LONG, BYREF volume AS LONG, BYREF pan AS LONG) AS LONG
    DECLARE FUNCTION BASS_ChannelSlideAttributes LIB "bass.dll" ALIAS "BASS_ChannelSlideAttributes" (BYVAL pbHandle AS DWORD, BYVAL freq AS LONG, BYVAL volume AS LONG, BYVAL pan AS LONG, BYVAL time AS DWORD) AS LONG
    DECLARE FUNCTION BASS_ChannelIsSliding LIB "bass.dll" ALIAS "BASS_ChannelIsSliding" (BYVAL pbHandle AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_ChannelSet3DAttributes LIB "bass.dll" ALIAS "BASS_ChannelSet3DAttributes"(BYVAL pbHandle AS DWORD, _
      BYVAL mode AS LONG, BYVAL pbMin AS SINGLE, BYVAL pbMax AS SINGLE, BYVAL iangle AS LONG, BYVAL oangle AS LONG, BYVAL outvol AS LONG) AS LONG
    DECLARE FUNCTION BASS_ChannelGet3DAttributes LIB "bass.dll" ALIAS "BASS_ChannelGet3DAttributes"(BYVAL nHandle AS DWORD, _
      BYREF mode AS DWORD, BYREF pbMin AS SINGLE, BYREF pbMax AS SINGLE, BYREF iangle AS LONG, BYREF oangle AS LONG, BYREF outvol AS LONG) AS LONG
    DECLARE FUNCTION BASS_ChannelSet3DPosition LIB "bass.dll" ALIAS "BASS_ChannelSet3DPosition" (BYVAL pbHandle AS DWORD, BYREF pbPos AS BASS_3DVECTOR, BYREF orient AS BASS_3DVECTOR, BYREF vel AS BASS_3DVECTOR) AS LONG
    DECLARE FUNCTION BASS_ChannelGet3DPosition LIB "bass.dll" ALIAS "BASS_ChannelGet3DPosition" (BYVAL pbHandle AS DWORD, BYREF nPos AS BASS_3DVECTOR, BYREF orient AS BASS_3DVECTOR, BYREF vel AS BASS_3DVECTOR) AS LONG
    DECLARE FUNCTION BASS_ChannelGetLength LIB "bass.dll" ALIAS "BASS_ChannelGetLength" (BYVAL pbHandle AS DWORD) AS QUAD
    DECLARE FUNCTION BASS_ChannelSetPosition LIB "bass.dll" ALIAS "BASS_ChannelSetPosition" (BYVAL pbHandle AS DWORD, BYVAL pbPos AS QUAD) AS LONG
    DECLARE FUNCTION BASS_ChannelGetPosition LIB "bass.dll" ALIAS "BASS_ChannelGetPosition" (BYVAL pbHandle AS DWORD) AS QUAD
    DECLARE FUNCTION BASS_ChannelGetLevel LIB "bass.dll" ALIAS "BASS_ChannelGetLevel" (BYVAL pbHandle AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_ChannelGetData LIB "bass.dll" ALIAS "BASS_ChannelGetData" (BYVAL nHandle AS DWORD, BYVAL buffer AS DWORD, BYVAL length AS DWORD) AS DWORD
    DECLARE FUNCTION BASS_ChannelSetSync LIB "bass.dll" ALIAS "BASS_ChannelSetSync" (BYVAL pbHandle AS DWORD, BYVAL pbType AS DWORD, BYVAL param AS QUAD, BYVAL proc AS DWORD, BYVAL USER AS DWORD) AS HSYNC
    DECLARE FUNCTION BASS_ChannelRemoveSync LIB "bass.dll" ALIAS "BASS_ChannelRemoveSync" (BYVAL pbHandle AS DWORD, BYVAL sync AS HSYNC) AS LONG
    DECLARE FUNCTION BASS_ChannelSetDSP LIB "bass.dll" ALIAS "BASS_ChannelSetDSP" (BYVAL pbHandle AS DWORD, BYVAL proc AS DWORD, BYVAL USER AS DWORD, BYVAL priority AS LONG) AS HDSP
    DECLARE FUNCTION BASS_ChannelRemoveDSP LIB "bass.dll" ALIAS "BASS_ChannelRemoveDSP" (BYVAL pbHandle AS DWORD, BYVAL dsp AS HDSP) AS LONG
    DECLARE FUNCTION BASS_ChannelSetLink LIB "bass.dll" ALIAS "BASS_ChannelSetLink" (BYVAL pbHandle AS DWORD, BYVAL chan AS DWORD) AS LONG
    DECLARE FUNCTION BASS_ChannelRemoveLink LIB "bass.dll" ALIAS "BASS_ChannelRemoveLink" (BYVAL pbHandle AS DWORD, BYVAL chan AS DWORD) AS LONG
    DECLARE FUNCTION BASS_ChannelSetEAXMix LIB "bass.dll" ALIAS "BASS_ChannelSetEAXMix" (BYVAL pbHandle AS DWORD, BYVAL pbMIX AS SINGLE) AS LONG
    DECLARE FUNCTION BASS_ChannelGetEAXMix LIB "bass.dll" ALIAS "BASS_ChannelGetEAXMix" (BYVAL pbHandle AS DWORD, BYREF pbMIX AS SINGLE) AS LONG
    DECLARE FUNCTION BASS_ChannelSetFX LIB "bass.dll" ALIAS "BASS_ChannelSetFX" (BYVAL pbHandle AS DWORD, BYVAL pbType AS DWORD, BYVAL priority AS DWORD) AS HFX
    DECLARE FUNCTION BASS_ChannelRemoveFX LIB "bass.dll" ALIAS "BASS_ChannelRemoveFX" (BYVAL pbHandle AS DWORD, BYVAL fx AS HFX) AS LONG
    DECLARE FUNCTION BASS_FXSetParameters LIB "bass.dll" ALIAS "BASS_FXSetParameters" (BYVAL nHandle AS HFX, BYVAL par AS DWORD) AS LONG
    DECLARE FUNCTION BASS_FXGetParameters LIB "bass.dll" ALIAS "BASS_FXGetParameters" (BYVAL nHandle AS HFX, BYVAL par AS DWORD) AS LONG
    Sincerely,

    Steve Rossell
    PowerBASIC Staff

Working...
X