#include-once
; ===============================================================================================================================
; Error codes returned by $BASS_ErrorGetCode
; ===============================================================================================================================
Global Const $BASS_OK = 0               ;all is OK
Global Const $BASS_ERROR_MEM = 1        ;memory error
Global Const $BASS_ERROR_FILEOPEN = 2   ;can;t open the file
Global Const $BASS_ERROR_DRIVER = 3     ;can;t find a free sound driver
Global Const $BASS_ERROR_BUFLOST = 4    ;the sample buffer was lost
Global Const $BASS_ERROR_HANDLE = 5     ;invalid handle
Global Const $BASS_ERROR_FORMAT = 6     ;unsupported sample format
Global Const $BASS_ERROR_POSITION = 7   ;invalid position
Global Const $BASS_ERROR_INIT = 8       ;$BASS_Init has not been successfully called
Global Const $BASS_ERROR_START = 9      ;$BASS_Start has not been successfully called
Global Const $BASS_ERROR_ALREADY = 14   ;already initialized/paused/whatever
Global Const $BASS_ERROR_NOCHAN = 18    ;can;t get a free channel
Global Const $BASS_ERROR_ILLTYPE = 19   ;an illegal type was specified
Global Const $BASS_ERROR_ILLPARAM = 20  ;an illegal parameter was specified
Global Const $BASS_ERROR_NO3D = 21      ;no 3D support
Global Const $BASS_ERROR_NOEAX = 22     ;no EAX support
Global Const $BASS_ERROR_DEVICE = 23    ;illegal device number
Global Const $BASS_ERROR_NOPLAY = 24    ;not playing
Global Const $BASS_ERROR_FREQ = 25      ;illegal sample rate
Global Const $BASS_ERROR_NOTFILE = 27   ;the stream is not a file stream
Global Const $BASS_ERROR_NOHW = 29      ;no hardware voices available
Global Const $BASS_ERROR_EMPTY = 31     ;the MOD music has no sequence data
Global Const $BASS_ERROR_NONET = 32     ;no internet connection could be opened
Global Const $BASS_ERROR_CREATE = 33    ;couldn;t create the file
Global Const $BASS_ERROR_NOFX = 34      ;effects are not available
Global Const $BASS_ERROR_NOTAVAIL = 37  ;requested data is not available
Global Const $BASS_ERROR_DECODE = 38    ;the channel is a "decoding channel"
Global Const $BASS_ERROR_DX = 39        ;a sufficient DirectX version is not installed
Global Const $BASS_ERROR_TIMEOUT = 40   ;connection timedout
Global Const $BASS_ERROR_FILEFORM = 41  ;unsupported file format
Global Const $BASS_ERROR_SPEAKER = 42   ;unavailable speaker
Global Const $BASS_ERROR_VERSION = 43   ;invalid BASS version (used by add-ons)
Global Const $BASS_ERROR_CODEC = 44     ;codec is not available/supported
Global Const $BASS_ERROR_ENDED = 45     ;the channel/file has ended
Global Const $BASS_ERROR_UNKNOWN = -1   ;some other mystery problem

; ===============================================================================================================================
; $BASS_SetConfig options
; ===============================================================================================================================
Global Const $BASS_CONFIG_BUFFER = 0
Global Const $BASS_CONFIG_UPDATEPERIOD = 1
Global Const $BASS_CONFIG_GVOL_SAMPLE = 4
Global Const $BASS_CONFIG_GVOL_STREAM = 5
Global Const $BASS_CONFIG_GVOL_MUSIC = 6
Global Const $BASS_CONFIG_CURVE_VOL = 7
Global Const $BASS_CONFIG_CURVE_PAN = 8
Global Const $BASS_CONFIG_FLOATDSP = 9
Global Const $BASS_CONFIG_3DALGORITHM = 10
Global Const $BASS_CONFIG_NET_TIMEOUT = 11
Global Const $BASS_CONFIG_NET_BUFFER = 12
Global Const $BASS_CONFIG_PAUSE_NOPLAY = 13
Global Const $BASS_CONFIG_NET_PREBUF = 15
Global Const $BASS_CONFIG_NET_PASSIVE = 18
Global Const $BASS_CONFIG_REC_BUFFER = 19
Global Const $BASS_CONFIG_NET_PLAYLIST = 21
Global Const $BASS_CONFIG_MUSIC_VIRTUAL = 22
Global Const $BASS_CONFIG_VERIFY = 23
Global Const $BASS_CONFIG_UPDATETHREADS = 24

; ===============================================================================================================================
; $BASS_SetConfigPtr options
; ===============================================================================================================================
Global Const $BASS_CONFIG_NET_AGENT = 16
Global Const $BASS_CONFIG_NET_PROXY = 17

; ===============================================================================================================================
; Initialization flags
; ===============================================================================================================================
Global Const $BASS_DEVICE_8BITS = 1     ;use 8 bit resolution, else 16 bit
Global Const $BASS_DEVICE_MONO = 2      ;use mono, else stereo
Global Const $BASS_DEVICE_3D = 4        ;enable 3D functionality
Global Const $BASS_DEVICE_LATENCY = 256 ;calculate device latency ($BASS_INFO struct)
Global Const $BASS_DEVICE_CPSPEAKERS = 1024 ;detect speakers via Windows control panel
Global Const $BASS_DEVICE_SPEAKERS = 2048 ;force enabling of speaker assignment
Global Const $BASS_DEVICE_NOSPEAKER = 4096 ;ignore speaker arrangement

; ===============================================================================================================================
; DirectSound interfaces (for use with $BASS_GetDSoundObject)
; ===============================================================================================================================
Global Const $BASS_OBJECT_DS = 1                     ; DirectSound
Global Const $BASS_OBJECT_DS3DL = 2                  ;IDirectSound3DListener

Global Const $BASS_DEVICEINFO = "ptr name;" & _ 	;name Description of the device. 
								"ptr driver;" & _ 	;driver The filename of the driver... NULL = no driver ("no sound" device)
								"dword flags;"		;flags The device's current status...

; ===============================================================================================================================
; $BASS_DEVICEINFO flags
; ===============================================================================================================================
Global Const $BASS_DEVICE_ENABLED = 1
Global Const $BASS_DEVICE_DEFAULT = 2
Global Const $BASS_DEVICE_INIT = 4

$BASS_INFO = 'dword flags;' & _ ; device capabilities (DSCAPS_xxx flags)
		'dword hwsize;' & _			; size of total device hardware memory
		'dword hwfree;' & _			; size of free device hardware memory
		'dword freesam;' & _			; number of free sample slots in the hardware
		'dword free3d;' & _			; number of free 3D sample slots in the hardware
		'dword minrate;' & _		; min sample rate supported by the hardware
		'dword maxrate;' & _			; max sample rate supported by the hardware
		'int eax;' & _				; device supports EAX? (always BASSFALSE if $BASS_DEVICE_3D was not used)
		'dword minbuf;' & _			; recommended minimum buffer length in ms (requires $BASS_DEVICE_LATENCY)
		'dword dsver;' & _			; DirectSound version
		'dword latency;' & _			; delay (in ms) before start of playback (requires $BASS_DEVICE_LATENCY)
		'dword initflags;' & _		; $BASS_Init "flags" parameter
		'dword speakers;' & _		; number of speakers available
		'dword freq' 	; current output rate (OSX only)

; ===============================================================================================================================
; $BASS_INFO flags
; ===============================================================================================================================
Global Const $DSCAPS_CONTINUOUSRATE = 16    ; supports all sample rates between min/maxrate
Global Const $DSCAPS_EMULDRIVER = 32        ; device does NOT have hardware DirectSound support
Global Const $DSCAPS_CERTIFIED = 64         ; device driver has been certified by Microsoft
Global Const $DSCAPS_SECONDARYMONO = 256    ; mono
Global Const $DSCAPS_SECONDARYSTEREO = 512  ; stereo
Global Const $DSCAPS_SECONDARY8BIT = 1024   ; 8 bit
Global Const $DSCAPS_SECONDARY16BIT = 2048  ; 16 bit

; ===============================================================================================================================
; Recording device info structure
; ===============================================================================================================================
$BASS_RECORDINFO = "dword flags;" & _ ; device capabilities (DSCCAPS_xxx flags)
		'dword formats;' & _			; supported standard formats (WAVE_FORMAT_xxx flags)
		'dword inputs;' & _			; number of inputs
		'int singlein;' & _		; BASSTRUE = only 1 input can be set at a time
		'dword freq' 	; current input rate (Vista/OSX only)

; ===============================================================================================================================
; $BASS_RECORDINFO flags
; ===============================================================================================================================
Global Const $DSCCAPS_EMULDRIVER = $DSCAPS_EMULDRIVER ; device does NOT have hardware DirectSound recording support
Global Const $DSCCAPS_CERTIFIED = $DSCAPS_CERTIFIED   ; device driver has been certified by Microsoft

; ===============================================================================================================================
; defines for formats field of $BASS_RECORDINFO
; ===============================================================================================================================
Global Const $WAVE_FORMAT_1M08 = 0x1          ; 11.025 kHz, Mono,   8-bit
Global Const $WAVE_FORMAT_1S08 = 0x2          ; 11.025 kHz, Stereo, 8-bit
Global Const $WAVE_FORMAT_1M16 = 0x4          ; 11.025 kHz, Mono,   16-bit
Global Const $WAVE_FORMAT_1S16 = 0x8          ; 11.025 kHz, Stereo, 16-bit
Global Const $WAVE_FORMAT_2M08 = 0x10         ; 22.05  kHz, Mono,   8-bit
Global Const $WAVE_FORMAT_2S08 = 0x20         ; 22.05  kHz, Stereo, 8-bit
Global Const $WAVE_FORMAT_2M16 = 0x40         ; 22.05  kHz, Mono,   16-bit
Global Const $WAVE_FORMAT_2S16 = 0x80         ; 22.05  kHz, Stereo, 16-bit
Global Const $WAVE_FORMAT_4M08 = 0x100        ; 44.1   kHz, Mono,   8-bit
Global Const $WAVE_FORMAT_4S08 = 0x200        ; 44.1   kHz, Stereo, 8-bit
Global Const $WAVE_FORMAT_4M16 = 0x400        ; 44.1   kHz, Mono,   16-bit
Global Const $WAVE_FORMAT_4S16 = 0x800        ; 44.1   kHz, Stereo, 16-bit

; ===============================================================================================================================
; Sample info structure
; ===============================================================================================================================
$BASS_SAMPLE = 'dword freq;' & _	; default playback rate
		'float volume;' & _			; default volume (0-100)
		'float pan;' & _				; default pan (-100=left, 0=middle, 100=right)
		'dword flags;' & _			; $BASS_SAMPLE_xxx flags
		'dword length;' & _			; length (in samples, not bytes)
		'dword max;' & _				; maximum simultaneous playbacks
		'dword origres;' & _			; original resolution
		'dword chans;' & _			; number of channels
		'dword mingap;' & _			; minimum gap (ms) between creating channels
		'dword mode3d;' & _			; $BASS_3DMODE_xxx mode
		'float mindist;' & _			; minimum distance
		'float MAXDIST;' & _			; maximum distance
		'dword iangle;' & _			; angle of inside projection cone
		'dword oangle;' & _			; angle of outside projection cone
		'float outvol;' & _			; delta-volume outside the projection cone
		'dword vam;' & _				; voice allocation/management flags ($BASS_VAM_xxx)
		'dword priority;' 		; priority (0=lowest, 0xffffffff=highest)

Global Const $BASS_SAMPLE_8BITS = 1          ; 8 bit
Global Const $BASS_SAMPLE_FLOAT = 256        ; 32-bit floating-point
Global Const $BASS_SAMPLE_MONO = 2           ; mono
Global Const $BASS_SAMPLE_LOOP = 4           ; looped
Global Const $BASS_SAMPLE_3D = 8             ; 3D functionality
Global Const $BASS_SAMPLE_SOFTWARE = 16      ; not using hardware mixing
Global Const $BASS_SAMPLE_MUTEMAX = 32       ; mute at max distance (3D only)
Global Const $BASS_SAMPLE_VAM = 64           ; DX7 voice allocation & management
Global Const $BASS_SAMPLE_FX = 128           ; old implementation of DX8 effects
Global Const $BASS_SAMPLE_OVER_VOL = 0x10000 ; override lowest volume
Global Const $BASS_SAMPLE_OVER_POS = 0x20000 ; override dwordest playing
Global Const $BASS_SAMPLE_OVER_DIST = 0x30000 ; override furthest from listener (3D only)

Global Const $BASS_STREAM_PRESCAN = 0x20000   ; enable pin-point seeking/length (MP3/MP2/MP1)
Global Const $BASS_MP3_SETPOS = $BASS_STREAM_PRESCAN
Global Const $BASS_STREAM_AUTOFREE = 0x40000 ; automatically free the stream when it stop/ends
Global Const $BASS_STREAM_RESTRATE = 0x80000 ; restrict the download rate of internet file streams
Global Const $BASS_STREAM_BLOCK = 0x100000   ; download/play internet file stream in small blocks
Global Const $BASS_STREAM_DECODE = 0x200000  ; don;t play the stream, only decode ($BASS_ChannelGetData)
Global Const $BASS_STREAM_STATUS = 0x800000  ; give server status info (HTTP/ICY tags) in DOWNLOADPROC

Global Const $BASS_MUSIC_FLOAT = $BASS_SAMPLE_FLOAT
Global Const $BASS_MUSIC_MONO = $BASS_SAMPLE_MONO
Global Const $BASS_MUSIC_LOOP = $BASS_SAMPLE_LOOP
Global Const $BASS_MUSIC_3D = $BASS_SAMPLE_3D
Global Const $BASS_MUSIC_FX = $BASS_SAMPLE_FX
Global Const $BASS_MUSIC_AUTOFREE = $BASS_STREAM_AUTOFREE
Global Const $BASS_MUSIC_DECODE = $BASS_STREAM_DECODE
Global Const $BASS_MUSIC_PRESCAN = $BASS_STREAM_PRESCAN ; calculate playback length
Global Const $BASS_MUSIC_CALCLEN = $BASS_MUSIC_PRESCAN
Global Const $BASS_MUSIC_RAMP = 0x200        ; normal ramping
Global Const $BASS_MUSIC_RAMPS = 0x400       ; sensitive ramping
Global Const $BASS_MUSIC_SURROUND = 0x800    ; surround sound
Global Const $BASS_MUSIC_SURROUND2 = 0x1000  ; surround sound (mode 2)
Global Const $BASS_MUSIC_FT2MOD = 0x2000     ; play .MOD as FastTracker 2 does
Global Const $BASS_MUSIC_PT1MOD = 0x4000     ; play .MOD as ProTracker 1 does
Global Const $BASS_MUSIC_NONINTER = 0x10000  ; non-interpolated sample mixing
Global Const $BASS_MUSIC_SINCINTER = 0x800000 ; sinc interpolated sample mixing
Global Const $BASS_MUSIC_POSRESET = 32768  ; stop all notes when moving position
Global Const $BASS_MUSIC_POSRESETEX = 0x400000 ; stop all notes and reset bmp/etc when moving position
Global Const $BASS_MUSIC_STOPBACK = 0x80000  ; stop the music on a backwards jump effect
Global Const $BASS_MUSIC_NOSAMPLE = 0x100000 ; don;t load the samples

; ===============================================================================================================================
; Speaker assignment flags
; ===============================================================================================================================
Global Const $BASS_SPEAKER_FRONT = 0x1000000 ; front speakers
Global Const $BASS_SPEAKER_REAR = 0x2000000  ; rear/side speakers
Global Const $BASS_SPEAKER_CENLFE = 0x3000000 ; center & LFE speakers (5.1)
Global Const $BASS_SPEAKER_REAR2 = 0x4000000 ; rear center speakers (7.1)
Global Const $BASS_SPEAKER_LEFT = 0x10000000 ; modifier: left
Global Const $BASS_SPEAKER_RIGHT = 0x20000000 ; modifier: right
Global Const $BASS_SPEAKER_FRONTLEFT = $BASS_SPEAKER_FRONT + $BASS_SPEAKER_LEFT
Global Const $BASS_SPEAKER_FRONTRIGHT = $BASS_SPEAKER_FRONT + $BASS_SPEAKER_RIGHT
Global Const $BASS_SPEAKER_REARLEFT = $BASS_SPEAKER_REAR + $BASS_SPEAKER_LEFT
Global Const $BASS_SPEAKER_REARRIGHT = $BASS_SPEAKER_REAR + $BASS_SPEAKER_RIGHT
Global Const $BASS_SPEAKER_CENTER = $BASS_SPEAKER_CENLFE + $BASS_SPEAKER_LEFT
Global Const $BASS_SPEAKER_LFE = $BASS_SPEAKER_CENLFE + $BASS_SPEAKER_RIGHT
Global Const $BASS_SPEAKER_REAR2LEFT = $BASS_SPEAKER_REAR2 + $BASS_SPEAKER_LEFT
Global Const $BASS_SPEAKER_REAR2RIGHT = $BASS_SPEAKER_REAR2 + $BASS_SPEAKER_RIGHT

Global Const $BASS_UNICODE = 0x80000000

Global Const $BASS_RECORD_PAUSE = 32768 ; start recording paused

; ===============================================================================================================================
; DX7 voice allocation flags
; ===============================================================================================================================
Global Const $BASS_VAM_HARDWARE = 1
Global Const $BASS_VAM_SOFTWARE = 2
Global Const $BASS_VAM_TERM_TIME = 4
Global Const $BASS_VAM_TERM_DIST = 8
Global Const $BASS_VAM_TERM_PRIO = 16

; ===============================================================================================================================
; Channel info structure
; ===============================================================================================================================
$BASS_CHANNELINFO = 'dword freq;' & _ ; default playback rate
		'dword chans;' & _			; channels
		'dword flags;' & _			; $BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
		'dword ctype;' & _			; type of channel
		'dword origres;' & _			; original resolution
		'dword plugin;' & _			; plugin
		'dword sample;' & _			; sample
		'ptr filename;' 		;filename

; ===============================================================================================================================
; $BASS_CHANNELINFO types
; ===============================================================================================================================
Global Const $BASS_CTYPE_SAMPLE = 1
Global Const $BASS_CTYPE_RECORD = 2
Global Const $BASS_CTYPE_STREAM = 0x10000
Global Const $BASS_CTYPE_STREAM_OGG = 0x10002
Global Const $BASS_CTYPE_STREAM_MP1 = 0x10003
Global Const $BASS_CTYPE_STREAM_MP2 = 0x10004
Global Const $BASS_CTYPE_STREAM_MP3 = 0x10005
Global Const $BASS_CTYPE_STREAM_AIFF = 0x10006
Global Const $BASS_CTYPE_STREAM_WAV = 0x40000 ; WAVE flag, LOWORD=codec
Global Const $BASS_CTYPE_STREAM_WAV_PCM = 0x50001
Global Const $BASS_CTYPE_STREAM_WAV_FLOAT = 0x50003
Global Const $BASS_CTYPE_MUSIC_MOD = 0x20000
Global Const $BASS_CTYPE_MUSIC_MTM = 0x20001
Global Const $BASS_CTYPE_MUSIC_S3M = 0x20002
Global Const $BASS_CTYPE_MUSIC_XM = 0x20003
Global Const $BASS_CTYPE_MUSIC_IT = 0x20004
Global Const $BASS_CTYPE_MUSIC_MO3 = 0x100    ; MO3 flag

$BASS_PLUGINFORM = 'dword;ptr;ptr;'

$BASS_PLUGININFO = 'dword version;' & _			; version (same form as $BASS_GetVersion)
		'dword formatc;' & _			; number of formats
		'ptr formats;' 	; the array of formats

; ===============================================================================================================================
; 3D vector (for 3D positions/velocities/orientations)
; ===============================================================================================================================
$BASS_3DVECTOR = 'float X;' & _ 		; + = right, - = left
		'float Y;' & _ 		; + = up, - = down
		'float z;' 	; + = front, - = behind

; ===============================================================================================================================
; 3D channel modes
; ===============================================================================================================================
Global Const $BASS_3DMODE_NORMAL = 0     ; normal 3D processing
Global Const $BASS_3DMODE_RELATIVE = 1   ; position is relative to the listener
Global Const $BASS_3DMODE_OFF = 2        ; no 3D processing

; ===============================================================================================================================
; software 3D mixing algorithms (used with $BASS_CONFIG_3DALGORITHM)
; ===============================================================================================================================
Global Const $BASS_3DALG_DEFAULT = 0
Global Const $BASS_3DALG_OFF = 1
Global Const $BASS_3DALG_FULL = 2
Global Const $BASS_3DALG_LIGHT = 3

; ===============================================================================================================================
; EAX environments, use with $BASS_SetEAXParameters
; ===============================================================================================================================
Global Const $EAX_ENVIRONMENT_GENERIC = 0
Global Const $EAX_ENVIRONMENT_PADDEDCELL = 1
Global Const $EAX_ENVIRONMENT_ROOM = 2
Global Const $EAX_ENVIRONMENT_BATHROOM = 3
Global Const $EAX_ENVIRONMENT_LIVINGROOM = 4
Global Const $EAX_ENVIRONMENT_STONEROOM = 5
Global Const $EAX_ENVIRONMENT_AUDITORIUM = 6
Global Const $EAX_ENVIRONMENT_CONCERTHALL = 7
Global Const $EAX_ENVIRONMENT_CAVE = 8
Global Const $EAX_ENVIRONMENT_ARENA = 9
Global Const $EAX_ENVIRONMENT_HANGAR = 10
Global Const $EAX_ENVIRONMENT_CARPETEDHALLWAY = 11
Global Const $EAX_ENVIRONMENT_HALLWAY = 12
Global Const $EAX_ENVIRONMENT_STONECORRIDOR = 13
Global Const $EAX_ENVIRONMENT_ALLEY = 14
Global Const $EAX_ENVIRONMENT_FOREST = 15
Global Const $EAX_ENVIRONMENT_CITY = 16
Global Const $EAX_ENVIRONMENT_MOUNTAINS = 17
Global Const $EAX_ENVIRONMENT_QUARRY = 18
Global Const $EAX_ENVIRONMENT_PLAIN = 19
Global Const $EAX_ENVIRONMENT_PARKINGLOT = 20
Global Const $EAX_ENVIRONMENT_SEWERPIPE = 21
Global Const $EAX_ENVIRONMENT_UNDERWATER = 22
Global Const $EAX_ENVIRONMENT_DRUGGED = 23
Global Const $EAX_ENVIRONMENT_DIZZY = 24
Global Const $EAX_ENVIRONMENT_PSYCHOTIC = 25
Global Const $EAX_ENVIRONMENT_COUNT = 26 ; total number of environments

Global Const $BASS_STREAMPROC_END = 0x80000000 ; end of user stream flag

; ===============================================================================================================================
; special STREAMPROCs
; ===============================================================================================================================
Global Const $STREAMPROC_DUMMY = 0 ; "dummy" stream
Global Const $STREAMPROC_PUSH = -1 ; push stream

; ===============================================================================================================================
; $BASS_StreamCreateFileUser file systems
; ===============================================================================================================================
Global Const $STREAMFILE_NOBUFFER = 0
Global Const $STREAMFILE_BUFFER = 1
Global Const $STREAMFILE_BUFFERPUSH = 2

; ===============================================================================================================================
; $BASS_StreamPutFileData options
; ===============================================================================================================================
Global Const $BASS_FILEDATA_END = 0 ; end & close the file

; ===============================================================================================================================
; $BASS_StreamGetFilePosition modes
; ===============================================================================================================================
Global Const $BASS_FILEPOS_CURRENT = 0
Global Const $BASS_FILEPOS_DECODE = $BASS_FILEPOS_CURRENT
Global Const $BASS_FILEPOS_DOWNLOAD = 1
Global Const $BASS_FILEPOS_END = 2
Global Const $BASS_FILEPOS_START = 3
Global Const $BASS_FILEPOS_CONNECTED = 4
Global Const $BASS_FILEPOS_BUFFER = 5

; ===============================================================================================================================
; $BASS_ChannelSetSync types
; ===============================================================================================================================
Global Const $BASS_SYNC_POS = 0
Global Const $BASS_SYNC_END = 2
Global Const $BASS_SYNC_META = 4
Global Const $BASS_SYNC_SLIDE = 5
Global Const $BASS_SYNC_STALL = 6
Global Const $BASS_SYNC_DOWNLOAD = 7
Global Const $BASS_SYNC_FREE = 8
Global Const $BASS_SYNC_SETPOS = 11
Global Const $BASS_SYNC_MUSICPOS = 10
Global Const $BASS_SYNC_MUSICINST = 1
Global Const $BASS_SYNC_MUSICFX = 3
Global Const $BASS_SYNC_OGG_CHANGE = 12
Global Const $BASS_SYNC_MIXTIME = 0x40000000 ; FLAG: sync at mixtime, else at playtime
Global Const $BASS_SYNC_ONETIME = 0x80000000 ; FLAG: sync only once, else continuously

; ===============================================================================================================================
; $BASS_ChannelIsActive return values
; ===============================================================================================================================
Global Const $BASS_ACTIVE_STOPPED = 0
Global Const $BASS_ACTIVE_PLAYING = 1
Global Const $BASS_ACTIVE_STALLED = 2
Global Const $BASS_ACTIVE_PAUSED = 3

; ===============================================================================================================================
; Channel attributes
; ===============================================================================================================================
Global Const $BASS_ATTRIB_FREQ = 1
Global Const $BASS_ATTRIB_VOL = 2
Global Const $BASS_ATTRIB_PAN = 3
Global Const $BASS_ATTRIB_EAXMIX = 4
Global Const $BASS_ATTRIB_MUSIC_AMPLIFY = 0x100
Global Const $BASS_ATTRIB_MUSIC_PANSEP = 0x101
Global Const $BASS_ATTRIB_MUSIC_PSCALER = 0x102
Global Const $BASS_ATTRIB_MUSIC_BPM = 0x103
Global Const $BASS_ATTRIB_MUSIC_SPEED = 0x104
Global Const $BASS_ATTRIB_MUSIC_VOL_GLOBAL = 0x105
Global Const $BASS_ATTRIB_MUSIC_VOL_CHAN = 0x200 ; + channel #
Global Const $BASS_ATTRIB_MUSIC_VOL_INST = 0x300 ; + instrument #

; ===============================================================================================================================
; $BASS_ChannelGetData flags
; ===============================================================================================================================
Global Const $BASS_DATA_AVAILABLE = 0         ; query how much data is buffered
Global Const $BASS_DATA_FLOAT = 0x40000000    ; flag: return floating-point sample data
Global Const $BASS_DATA_FFT256 = 0x80000000   ; 256 sample FFT
Global Const $BASS_DATA_FFT512 = 0x80000001   ; 512 FFT
Global Const $BASS_DATA_FFT1024 = 0x80000002  ; 1024 FFT
Global Const $BASS_DATA_FFT2048 = 0x80000003  ; 2048 FFT
Global Const $BASS_DATA_FFT4096 = 0x80000004  ; 4096 FFT
Global Const $BASS_DATA_FFT8192 = 0x80000005  ; 8192 FFT
Global Const $BASS_DATA_FFT_INDIVIDUAL = 0x10 ; FFT flag: FFT for each channel, else all combined
Global Const $BASS_DATA_FFT_NOWINDOW = 0x20   ; FFT flag: no Hanning window

; ===============================================================================================================================
; $BASS_ChannelGetTags types : what;s returned
; ===============================================================================================================================
Global Const $BASS_TAG_ID3 = 0   ;ID3v1 tags : 128 byte block
Global Const $BASS_TAG_ID3V2 = 1 ;ID3v2 tags : variable length block
Global Const $BASS_TAG_OGG = 2   ;OGG comments : series of null-terminated UTF-8 strings
Global Const $BASS_TAG_HTTP = 3  ;HTTP headers : series of null-terminated ANSI strings
Global Const $BASS_TAG_ICY = 4   ;ICY headers : series of null-terminated ANSI strings
Global Const $BASS_TAG_META = 5  ;ICY metadata : ANSI string
Global Const $BASS_TAG_VENDOR = 9 ;OGG encoder : UTF-8 string
Global Const $BASS_TAG_LYRICS3 = 10 ;Lyric3v2 tag : ASCII string
Global Const $BASS_TAG_RIFF_INFO = 0x100 ;RIFF/WAVE tags : series of null-terminated ANSI strings
Global Const $BASS_TAG_MUSIC_NAME = 0x10000    ;MOD music name : ANSI string
Global Const $BASS_TAG_MUSIC_MESSAGE = 0x10001     ;MOD message : ANSI string
Global Const $BASS_TAG_MUSIC_INST = 0x10100    ;+ instrument #, MOD instrument name : ANSI string
Global Const $BASS_TAG_MUSIC_SAMPLE = 0x10300  ;+ sample #, MOD sample name : ANSI string

; ===============================================================================================================================
; $BASS_ChannelGetLength/GetPosition/SetPosition modes
; ===============================================================================================================================
Global Const $BASS_POS_BYTE = 0          ; byte position
Global Const $BASS_POS_MUSIC_ORDER = 1   ; order.row position, MAKEdword(order,row)

; ===============================================================================================================================
; $BASS_RecordSetInput flags
; ===============================================================================================================================
Global Const $BASS_INPUT_OFF = 0x10000
Global Const $BASS_INPUT_ON = 0x20000

Global Const $BASS_INPUT_TYPE_MASK = 0xFF000000
Global Const $BASS_INPUT_TYPE_UNDEF = 0x0
Global Const $BASS_INPUT_TYPE_DIGITAL = 0x1000000
Global Const $BASS_INPUT_TYPE_LINE = 0x2000000
Global Const $BASS_INPUT_TYPE_MIC = 0x3000000
Global Const $BASS_INPUT_TYPE_SYNTH = 0x4000000
Global Const $BASS_INPUT_TYPE_CD = 0x5000000
Global Const $BASS_INPUT_TYPE_PHONE = 0x6000000
Global Const $BASS_INPUT_TYPE_SPEAKER = 0x7000000
Global Const $BASS_INPUT_TYPE_WAVE = 0x8000000
Global Const $BASS_INPUT_TYPE_AUX = 0x9000000
Global Const $BASS_INPUT_TYPE_ANALOG = 0xA000000

; ===============================================================================================================================
; DX8 effect types, use with $BASS_ChannelSetFX
; ===============================================================================================================================
Global Const $BASS_FX_DX8_CHORUS = "BASS_FX_DX8_CHORUS"
Global Const $BASS_FX_DX8_CHORUS_VALUE = 0

Global Const $BASS_FX_DX8_COMPRESSOR = "BASS_FX_DX8_COMPRESSOR"
Global Const $BASS_FX_DX8_COMPRESSOR_VALUE = 1

Global Const $BASS_FX_DX8_DISTORTION = "BASS_FX_DX8_DISTORTION"
Global Const $BASS_FX_DX8_DISTORTION_VALUE = 2

Global Const $BASS_FX_DX8_ECHO = "BASS_FX_DX8_ECHO"
Global Const $BASS_FX_DX8_ECHO_VALUE = 3

Global Const $BASS_FX_DX8_FLANGER = "BASS_FX_DX8_FLANGER"
Global Const $BASS_FX_DX8_FLANGER_VALUE = 4

Global Const $BASS_FX_DX8_GARGLE = "BASS_FX_DX8_GARGLE"
Global Const $BASS_FX_DX8_GARGLE_VALUE = 5

Global Const $BASS_FX_DX8_I3DL2REVERB = "BASS_FX_DX8_I3DL2REVERB"
Global Const $BASS_FX_DX8_I3DL2REVERB_VALUE = 6

Global Const $BASS_FX_DX8_PARAMEQ = "BASS_FX_DX8_PARAMEQ"
Global Const $BASS_FX_DX8_PARAMEQ_VALUE = 7

Global Const $BASS_FX_DX8_REVERB = "BASS_FX_DX8_REVERB"
Global Const $BASS_FX_DX8_REVERB_VALUE = 8

$BASS_DX8_CHORUS = 'float;' & _ 	;fWetDryMix
		'float;' & _				;fDepth
		'float;' & _				;fFeedback
		'float;' & _				;fFrequency
		'dword;' & _				;lWaveform, 0=triangle, 1=sine
		'float;' & _				;fDelay
		'dword;' 					;lPhase

$BASS_DX8_COMPRESSOR = 'float;' & _	;fGain
		'float;' & _				;fAttack
		'float;' & _				;fRelease
		'float;' & _				;fThreshold
		'float;' & _				;fRatio
		'float;'					;fPredelay

$BASS_DX8_DISTORTION = 'float;' & _	;fGain
		'float;' & _				;fEdge
		'float;' & _				;fPostEQCenterFrequency
		'float;' & _				;fPostEQBandwidth
		'float;'					;fPreLowpassCutoff

$BASS_DX8_ECHO = 'float;' & _ 		;fWetDryMix
		'float;' & _ 				;fFeedback
		'float;' & _ 				;fLeftDelay
		'float;' & _ 				;fRightDelay
		'int;' 						;lPanDelay 

$BASS_DX8_FLANGER = 'float;' & _ 	;fWetDryMix
		'float;' & _ 				;fDepth
		'float;' & _ 				;fFeedback
		'float;' & _ 				;fFrequency
		'dword;' & _  				;lWaveform, 0=triangle, 1=sine
		'float;' & _ 				;fDelay
		'dword;'  					;lPhase

$BASS_DX8_GARGLE = 'dword;' & _ 	;dwRateHz
		'dword;' 					;dwWaveShape, 0=triangle, 1=square

$BASS_DX8_I3DL2REVERB = 'int;' & _ 	;lRoom                  [-10000, 0]      default: -1000 mB
		'int;' & _ 					;lRoomHF                [-10000, 0]      default: 0 mB
		'float;' & _ 				;flRoomRolloffFactor    [0.0, 10.0]      default: 0.0
		'float;' & _  				;flDecayTime           	[0.1, 20.0]      default: 1.49s
		'float;' & _  				;flDecayHFRatio        	[0.1, 2.0]       default: 0.83
		'int;' & _  				;lReflections           [-10000, 1000]   default: -2602 mB
		'float;' & _  				;flReflectionsDelay    	[0.0, 0.3]       default: 0.007 s
		'int;' & _ 					;lReverb                [-10000, 2000]   default: 200 mB
		'float;' & _  				;flReverbDelay         	[0.0, 0.1]       default: 0.011 s
		'float;' & _  				;flDiffusion           	[0.0, 100.0]     default: 100.0 %
		'float;' & _  				;flDensity             	[0.0, 100.0]     default: 100.0 %
		'float;' 					;flHFReference			[20.0, 20000.0]  default: 5000.0 Hz

$BASS_DX8_PARAMEQ = 'float;' & _ 	;fCenter
		'float;' & _ 				;fBandwidth
		'float;' 					;fGain

$BASS_DX8_REVERB = 'float;' & _ 	;fInGain                [-96.0,0.0]            default: 0.0 dB
		'float;' & _ 				;fReverbMix             [-96.0,0.0]            default: 0.0 db
		'float;' & _  				;fReverbTime           	[0.001,3000.0]         default: 1000.0 ms
		'float;' 					;fHighFreqRTRatio 		[0.001,0.999]          default: 0.001

Global Const $BASS_DX8_PHASE_NEG_180 = 0
Global Const $BASS_DX8_PHASE_NEG_90 = 1
Global Const $BASS_DX8_PHASE_ZERO = 2
Global Const $BASS_DX8_PHASE_90 = 3
Global Const $BASS_DX8_PHASE_180 = 4