Bass.dll, basswma.dll include (PB 4.1)
Posted: Wed Jun 06, 2007 2:39 pm
Someone might need this. Im using this on my portable shoutcast player and its quite good. Download the latest package on bass in un4seen.com
bass_import.pb
basswma_import.pb
bass_import.pb
Code: Select all
#BASSVERSION = $203 ;API version
#BASSTRUE = 1 ;Use this instead of VB Booleans
#BASSFALSE = 0 ;Use this instead of VB Booleans
;***********************************************
;* 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 sound 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
;***********************************
;* BASS_INFO flags (from DSOUND.H) *
;***********************************
#DSCAPS_CONTINUOUSRATE = 16
; supports all sample rates between min/maxrate
#DSCAPS_EMULDRIVER = 32
; device does NOT have hardware DirectSound support
#DSCAPS_CERTIFIED = 64
; 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 = 256 ; mono
#DSCAPS_SECONDARYSTEREO = 512 ; stereo
#DSCAPS_SECONDARY8BIT = 1024 ; 8 bit
#DSCAPS_SECONDARY16BIT = 2048 ; 16 bit
;*****************************************
;* 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) *
;******************************************************************
#WAVE_FORMAT_1M08 = $1 ; 11.025 kHz, Mono, 8-bit
#WAVE_FORMAT_1S08 = $2 ; 11.025 kHz, Stereo, 8-bit
#WAVE_FORMAT_1M16 = $4 ; 11.025 kHz, Mono, 16-bit
#WAVE_FORMAT_1S16 = $8 ; 11.025 kHz, Stereo, 16-bit
#WAVE_FORMAT_2M08 = $10 ; 22.05 kHz, Mono, 8-bit
#WAVE_FORMAT_2S08 = $20 ; 22.05 kHz, Stereo, 8-bit
#WAVE_FORMAT_2M16 = $40 ; 22.05 kHz, Mono, 16-bit
#WAVE_FORMAT_2S16 = $80 ; 22.05 kHz, Stereo, 16-bit
#WAVE_FORMAT_4M08 = $100 ; 44.1 kHz, Mono, 8-bit
#WAVE_FORMAT_4S08 = $200 ; 44.1 kHz, Stereo, 8-bit
#WAVE_FORMAT_4M16 = $400 ; 44.1 kHz, Mono, 16-bit
#WAVE_FORMAT_4S16 = $800 ; 44.1 kHz, Stereo, 16-bit
;*********************
;* Sample info flags *
;*********************
#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 = $10000 ; override lowest volume
#BASS_SAMPLE_OVER_POS = $20000 ; override longest playing
#BASS_SAMPLE_OVER_DIST = $30000 ; override furthest from listener (3D only)
#BASS_STREAM_PRESCAN = $20000 ; enable pin-point seeking (MP3/MP2/MP1)
#BASS_MP3_SETPOS = #BASS_STREAM_PRESCAN
#BASS_STREAM_AUTOFREE = $40000 ; automatically free the stream when it stop/ends
#BASS_STREAM_RESTRATE = $80000 ; restrict the download rate of internet file streams
#BASS_STREAM_BLOCK = $100000 ; download/play internet file stream in small blocks
#BASS_STREAM_DECODE = $200000 ; don;t play the stream, only decode (BASS_ChannelGetData)
#BASS_STREAM_STATUS = $800000 ; 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 = $200 ; normal ramping
#BASS_MUSIC_RAMPS = $400 ; sensitive ramping
#BASS_MUSIC_SURROUND = $800 ; surround sound
#BASS_MUSIC_SURROUND2 = $1000 ; surround sound (mode 2)
#BASS_MUSIC_FT2MOD = $2000 ; play .MOD as FastTracker 2 does
#BASS_MUSIC_PT1MOD = $4000 ; play .MOD as ProTracker 1 does
#BASS_MUSIC_NONINTER = $10000 ; non-interpolated mixing
#BASS_MUSIC_POSRESET = 32768 ; stop all notes when moving position
#BASS_MUSIC_POSRESETEX = $400000 ; stop all notes and reset bmp/etc when moving position
#BASS_MUSIC_STOPBACK = $80000 ; stop the music on a backwards jump effect
#BASS_MUSIC_NOSAMPLE = $100000 ; don;t load the samples
; Speaker assignment flags
#BASS_SPEAKER_FRONT = $1000000 ; front speakers
#BASS_SPEAKER_REAR = $2000000 ; rear/side speakers
#BASS_SPEAKER_CENLFE = $3000000 ; center & LFE speakers (5.1)
#BASS_SPEAKER_REAR2 = $4000000 ; rear center speakers (7.1)
#BASS_SPEAKER_LEFT = $10000000 ; modifier: left
#BASS_SPEAKER_RIGHT = $20000000 ; modifier: right
#BASS_SPEAKER_FRONTLEFT = #BASS_SPEAKER_FRONT|#BASS_SPEAKER_LEFT
#BASS_SPEAKER_FRONTRIGHT = #BASS_SPEAKER_FRONT|#BASS_SPEAKER_RIGHT
#BASS_SPEAKER_REARLEFT = #BASS_SPEAKER_REAR|#BASS_SPEAKER_LEFT
#BASS_SPEAKER_REARRIGHT = #BASS_SPEAKER_REAR|#BASS_SPEAKER_RIGHT
#BASS_SPEAKER_CENTER = #BASS_SPEAKER_CENLFE|#BASS_SPEAKER_LEFT
#BASS_SPEAKER_LFE = #BASS_SPEAKER_CENLFE|#BASS_SPEAKER_RIGHT
#BASS_SPEAKER_REAR2LEFT = #BASS_SPEAKER_REAR2|#BASS_SPEAKER_LEFT
#BASS_SPEAKER_REAR2RIGHT = #BASS_SPEAKER_REAR2|#BASS_SPEAKER_RIGHT
#BASS_UNICODE = $80000000
#BASS_RECORD_PAUSE = 32768 ; start recording paused
;***********************************************
;* 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 = $100 ;RIFF/WAVE tags : array of null-terminated ANSI strings
#BASS_TAG_MUSIC_NAME = $10000 ;MOD music name : ANSI string
#BASS_TAG_MUSIC_MESSAGE = $10001 ;MOD message : ANSI string
#BASS_TAG_MUSIC_INST = $10100 ;+ instrument #, MOD instrument name : ANSI string
#BASS_TAG_MUSIC_SAMPLE = $10300 ;+ sample #, MOD sample name : ANSI string
;********************
;* 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 = 0
#EAX_ENVIRONMENT_PADDEDCELL = 1
#EAX_ENVIRONMENT_ROOM = 2
#EAX_ENVIRONMENT_BATHROOM = 3
#EAX_ENVIRONMENT_LIVINGROOM = 4
#EAX_ENVIRONMENT_STONEROOM = 5
#EAX_ENVIRONMENT_AUDITORIUM = 6
#EAX_ENVIRONMENT_CONCERTHALL = 7
#EAX_ENVIRONMENT_CAVE = 8
#EAX_ENVIRONMENT_ARENA = 9
#EAX_ENVIRONMENT_HANGAR = 10
#EAX_ENVIRONMENT_CARPETEDHALLWAY = 11
#EAX_ENVIRONMENT_HALLWAY = 12
#EAX_ENVIRONMENT_STONECORRIDOR = 13
#EAX_ENVIRONMENT_ALLEY = 14
#EAX_ENVIRONMENT_FOREST = 15
#EAX_ENVIRONMENT_CITY = 16
#EAX_ENVIRONMENT_MOUNTAINS = 17
#EAX_ENVIRONMENT_QUARRY = 18
#EAX_ENVIRONMENT_PLAIN = 19
#EAX_ENVIRONMENT_PARKINGLOT = 20
#EAX_ENVIRONMENT_SEWERPIPE = 21
#EAX_ENVIRONMENT_UNDERWATER = 22
#EAX_ENVIRONMENT_DRUGGED = 23
#EAX_ENVIRONMENT_DIZZY = 24
#EAX_ENVIRONMENT_PSYCHOTIC = 25
; total number of environments
#EAX_ENVIRONMENT_COUNT = 26
;**********************************************************************
;* 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 : 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:data=pos, 1:data="x" value
; data : param=0: LOWORD=order HIWORD=row, param=1: "x" value
#BASS_SYNC_MESSAGE = $20000000 ; 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 = $40000000 ; FLAG: sync at mixtime, else at playtime
#BASS_SYNC_ONETIME = $80000000 ; FLAG: sync only once, else continuously
; 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_ChannelGetData flags
#BASS_DATA_AVAILABLE = 0 ; query how much data is buffered
#BASS_DATA_FLOAT = $40000000 ; flag: return floating-point sample data
#BASS_DATA_FFT512 = $80000000 ; 512 sample FFT
#BASS_DATA_FFT1024 = $80000001 ; 1024 FFT
#BASS_DATA_FFT2048 = $80000002 ; 2048 FFT
#BASS_DATA_FFT4096 = $80000003 ; 4096 FFT
#BASS_DATA_FFT8192 = $80000004 ; 8192 FFT
#BASS_DATA_FFT_INDIVIDUAL = $10 ; FFT flag: FFT for each channel, else all combined
#BASS_DATA_FFT_NOWINDOW = $20 ; FFT flag: no Hanning window
; BASS_RecordSetInput flags
#BASS_INPUT_OFF = $10000
#BASS_INPUT_ON = $20000
#BASS_INPUT_LEVEL = $40000
#BASS_INPUT_TYPE_MASK = $FF000000
#BASS_INPUT_TYPE_UNDEF = $0
#BASS_INPUT_TYPE_DIGITAL = $1000000
#BASS_INPUT_TYPE_LINE = $2000000
#BASS_INPUT_TYPE_MIC = $3000000
#BASS_INPUT_TYPE_SYNTH = $4000000
#BASS_INPUT_TYPE_CD = $5000000
#BASS_INPUT_TYPE_PHONE = $6000000
#BASS_INPUT_TYPE_SPEAKER = $7000000
#BASS_INPUT_TYPE_WAVE = $8000000
#BASS_INPUT_TYPE_AUX = $9000000
#BASS_INPUT_TYPE_ANALOG = $A000000
; 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 = $100 ; + channel #
#BASS_MUSIC_ATTRIB_VOL_INST = $200 ; + instrument #
; 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_REC_BUFFER = 19
; 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
#BASS_STREAMPROC_END = $80000000 ; end of user stream flag
;**************************************************************
;* DirectSound interfaces (for use with BASS_GetDSoundObject) *
;**************************************************************
#BASS_OBJECT_DS = 1 ; DirectSound
#BASS_OBJECT_DS3DL = 2 ;IDirectSound3DListener
;******************************
;* DX7 voice allocation flags *
;******************************
; Play the sample in hardware. If no hardware voices are available then
; the "play" call will fail
#BASS_VAM_HARDWARE = 1
; Play the sample in software (ie. non-accelerated). No other VAM flags
;may be used together with this flag.
#BASS_VAM_SOFTWARE = 2
;******************************
;* 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.
; 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_TIME = 4
; 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_DIST = 8
; If there are no free hardware voices, the buffer to be terminated will be
; the one with the lowest priority.
#BASS_VAM_TERM_PRIO = 16
;**********************************************************************
;* software 3D mixing algorithm modes (used with BASS_Set3DAlgorithm) *
;**********************************************************************
; default algorithm (currently translates to BASS_3DALG_OFF)
#BASS_3DALG_DEFAULT = 0
; 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_OFF = 1
; 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_FULL = 2
; 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 drivers, if
; this mode is not available then BASS_3DALG_OFF will be used instead.
#BASS_3DALG_LIGHT = 3
Structure BASS_INFO
flags.l ; device capabilities (DSCAPS_xxx flags)
hwsize.l ; size of total device hardware memory
hwfree.l ; size of free device hardware memory
freesam.l ; number of free sample slots in the hardware
free3d.l ; number of free 3D sample slots in the hardware
minrate.l ; min sample rate supported by the hardware
maxrate.l ; max sample rate supported by the hardware
Eax.l ; device supports EAX? (always BASSFALSE if BASS_DEVICE_3D was not used)
minbuf.l ; recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY)
dsver.l ; DirectSound version
latency.l ; delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY)
initflags.l ; "flags" parameter of BASS_Init call
speakers.l ; number of speakers available
driver.l ; driver
freq.l ; current output rate (OSX only)
EndStructure
Structure BASS_RECORDINFO
flags.l ; device capabilities (DSCCAPS_xxx flags)
formats.l ; supported standard formats (WAVE_FORMAT_xxx flags)
inputs.l ; number of inputs
singlein.l ; BASSTRUE = only 1 input can be set at a time
driver.l ; driver
freq.l ; current input rate (OSX only)
EndStructure
Structure BASS_SAMPLE
freq.l ; default playback rate
volume.l ; default volume (0-100)
pan.l ; default pan (-100=left, 0=middle, 100=right)
flags.l ; BASS_SAMPLE_xxx flags
length.l ; length (in samples, not bytes)
max.l ; maximum simultaneous playbacks
origres.l ; original resolution
chans.l ; number of channels
mingap.l ; 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.l ; BASS_3DMODE_xxx mode
mindist.l ; minimum distance
maxdist.l ; maximum distance
iangle.l ; angle of inside projection cone
oangle.l ; angle of outside projection cone
outvol.l ; delta-volume outside the projection cone
; The following are the defaults used if the sample uses the DirectX 7
; voice allocation/management features.
vam.l ; voice allocation/management flags (BASS_VAM_xxx)
Priority.l ; priority (0=lowest, $ffffffff=highest)
EndStructure
Structure BASS_CHANNELINFO
freq.l ; default playback rate
chans.l ; channels
flags.l ; BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
ctype.l ; type of channel
origres.l ; original resolution
plugin.l ; plugin
EndStructure
; BASS_CHANNELINFO types
#BASS_CTYPE_SAMPLE = 1
#BASS_CTYPE_RECORD = 2
#BASS_CTYPE_STREAM = $10000
#BASS_CTYPE_STREAM_OGG = $10002
#BASS_CTYPE_STREAM_MP1 = $10003
#BASS_CTYPE_STREAM_MP2 = $10004
#BASS_CTYPE_STREAM_MP3 = $10005
#BASS_CTYPE_STREAM_AIFF = $10006
#BASS_CTYPE_STREAM_WAV = $40000 ; WAVE flag, LOWORD=codec
#BASS_CTYPE_STREAM_WAV_PCM = $50001
#BASS_CTYPE_STREAM_WAV_FLOAT = $50003
#BASS_CTYPE_MUSIC_MOD = $20000
#BASS_CTYPE_MUSIC_MTM = $20001
#BASS_CTYPE_MUSIC_S3M = $20002
#BASS_CTYPE_MUSIC_XM = $20003
#BASS_CTYPE_MUSIC_IT = $20004
#BASS_CTYPE_MUSIC_MO3 = $100 ; MO3 flag
Structure BASS_PLUGINFORM
ctype.l ; channel type
name.l ; format description
exts.l ; file extension filter (*.ext1;*.ext2;etc...)
EndStructure
Structure BASS_PLUGININFO
Version.l ; version (same form as BASS_GetVersion)
formatc.l ; number of formats
*formats.BASS_PLUGINFORM ; the array of formats
EndStructure
Structure BASS_VERSION
ver.w
rev.w
EndStructure
;********************************************************
;* 3D vector (for 3D positions/velocities/orientations) *
;********************************************************
Structure BASS_3DVECTOR
x.l ; +=right, -=left
y.l ; +=up, -=down
z.l ; +=front, -=behind
EndStructure
; DX8 effect types, use with BASS_ChannelSetFX
#BASS_FX_CHORUS = 0 ; GUID_DSFX_STANDARD_CHORUS
#BASS_FX_COMPRESSOR = 1 ; GUID_DSFX_STANDARD_COMPRESSOR
#BASS_FX_DISTORTION = 2 ; GUID_DSFX_STANDARD_DISTORTION
#BASS_FX_ECHO = 3 ; GUID_DSFX_STANDARD_ECHO
#BASS_FX_FLANGER = 4 ; GUID_DSFX_STANDARD_FLANGER
#BASS_FX_GARGLE = 5 ; GUID_DSFX_STANDARD_GARGLE
#BASS_FX_I3DL2REVERB = 6 ; GUID_DSFX_STANDARD_I3DL2REVERB
#BASS_FX_PARAMEQ = 7 ; GUID_DSFX_STANDARD_PARAMEQ
#BASS_FX_REVERB = 8 ; GUID_DSFX_WAVES_REVERB
Structure BASS_FXCHORUS ; DSFXChorus
fWetDryMix.l
fDepth.l
fFeedback.l
fFrequency.l
lWaveform.l ; 0=triangle, 1=sine
fDelay.l
lPhase.l ; BASS_FX_PHASE_xxx
EndStructure
Structure BASS_FXCOMPRESSOR ; DSFXCompressor
fGain.l
fAttack.l
fRelease.l
fThreshold.l
fRatio.l
fPredelay.l
EndStructure
Structure BASS_FXDISTORTION ; DSFXDistortion
fGain.l
fEdge.l
fPostEQCenterFrequency.l
fPostEQBandwidth.l
fPreLowpassCutoff.l
EndStructure
Structure BASS_FXECHO ; DSFXEcho
fWetDryMix.l
fFeedback.l
fLeftDelay.l
fRightDelay.l
lPanDelay.l
EndStructure
Structure BASS_FXFLANGER ; DSFXFlanger
fWetDryMix.l
fDepth.l
fFeedback.l
fFrequency.l
lWaveform.l ; 0=triangle, 1=sine
fDelay.l
lPhase.l ; BASS_FX_PHASE_xxx
EndStructure
Structure BASS_FXGARGLE ; DSFXGargle
dwRateHz.l ; Rate of modulation in hz
dwWaveShape.l ; 0=triangle, 1=square
EndStructure
Structure BASS_FXI3DL2REVERB ; DSFXI3DL2Reverb
lRoom.l ; [-10000, 0] default: -1000 mB
lRoomHF.l ; [-10000, 0] default: 0 mB
flRoomRolloffFactor.l ; [0.0, 10.0] default: 0.0
flDecayTime.l ; [0.1, 20.0] default: 1.49s
flDecayHFRatio.l ; [0.1, 2.0] default: 0.83
lReflections.l ; [-10000, 1000] default: -2602 mB
flReflectionsDelay.l ; [0.0, 0.3] default: 0.007 s
lReverb.l ; [-10000, 2000] default: 200 mB
flReverbDelay.l ; [0.0, 0.1] default: 0.011 s
flDiffusion.l ; [0.0, 100.0] default: 100.0 %
flDensity.l ; [0.0, 100.0] default: 100.0 %
flHFReference.l ; [20.0, 20000.0] default: 5000.0 Hz
EndStructure
Structure BASS_FXPARAMEQ ; DSFXParamEq
fCenter.l
fBandwidth.l
fGain.l
EndStructure
Structure BASS_FXREVERB ; DSFXWavesReverb
fInGain.l ; [-96.0,0.0] default: 0.0 dB
fReverbMix.l ; [-96.0,0.0] default: 0.0 db
fReverbTime.l ; [0.001,3000.0] default: 1000.0 ms
fHighFreqRTRatio.l ; [0.001,0.999] default: 0.001
EndStructure
#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
Import "bass.lib"
BASS_Apply3D() As "_BASS_Apply3D@0"
BASS_ChannelBytes2Seconds(Handle.l, pos.l, poshigh.l) As "_BASS_ChannelBytes2Seconds@12"
BASS_ChannelGet3DAttributes(Handle.l, *Mode.l, *min.l, *max.l, iangle.l, *oangle.l, *outvol.l) As "_BASS_ChannelGet3DAttributes@28"
BASS_ChannelGet3DPosition(Handle.l, *pos.l, *orient.l, *vel.l) As "_BASS_ChannelGet3DPosition@16"
BASS_ChannelGetAttributes(Handle.l, *freq.l, *volume.l, *pan.l) As "_BASS_ChannelGetAttributes@16"
BASS_ChannelGetData(Handle.l, *Buffer.l, length.l) As "_BASS_ChannelGetData@12"
BASS_ChannelGetDevice(Handle.l) As "_BASS_ChannelGetDevice@4"
BASS_ChannelGetEAXMix(Handle.l, *mix.l) As "_BASS_ChannelGetEAXMix@8"
BASS_ChannelGetInfo(Handle.l, *info.BASS_CHANNELINFO) As "_BASS_ChannelGetInfo@8"
BASS_ChannelGetLength(Handle.l) As "_BASS_ChannelGetLength@4"
BASS_ChannelGetLevel(Handle.l) As "_BASS_ChannelGetLevel@4"
BASS_ChannelGetPosition(Handle.l) As "_BASS_ChannelGetPosition@4"
BASS_ChannelGetTags(Handle.l, tags.l) As "_BASS_ChannelGetTags@8"
BASS_ChannelIsActive(Handle.l) As "_BASS_ChannelIsActive@4"
BASS_ChannelIsSliding(Handle.l) As "_BASS_ChannelIsSliding@4"
BASS_ChannelPause(Handle.l) As "_BASS_ChannelPause@4"
BASS_ChannelPlay(Handle.l, restart.l) As "_BASS_ChannelPlay@8"
BASS_ChannelPreBuf(Handle.l, length.l) As "_BASS_ChannelPreBuf@8"
BASS_ChannelRemoveDSP(Handle.l, dsp.l) As "_BASS_ChannelRemoveDSP@8"
BASS_ChannelRemoveFX(Handle.l, fx.l) As "_BASS_ChannelRemoveFX@8"
BASS_ChannelRemoveLink(Handle.l, chan.l) As "_BASS_ChannelRemoveLink@8"
BASS_ChannelRemoveSync(Handle.l, sync.l) As "_BASS_ChannelRemoveSync@8"
BASS_ChannelSeconds2Bytes(Handle.l, pos.l) As "_BASS_ChannelSeconds2Bytes@8"
BASS_ChannelSet3DAttributes(Handle.l, Mode.l, min.l, max.l, iangle.l, oangle.l, outvol.l) As "_BASS_ChannelSet3DAttributes@28"
BASS_ChannelSet3DPosition(Handle.l, *pos.l, *orient.l, *vel.l) As "_BASS_ChannelSet3DPosition@16"
BASS_ChannelSetAttributes(Handle.l, freq.l, volume.l, pan.l) As "_BASS_ChannelSetAttributes@16"
BASS_ChannelSetDSP(Handle.l, proc.l, user.l, Priority.l) As "_BASS_ChannelSetDSP@16"
BASS_ChannelSetDevice(Handle.l, device.l) As "_BASS_ChannelSetDevice@8"
BASS_ChannelSetEAXMix(Handle.l, mix.l) As "_BASS_ChannelSetEAXMix@8"
BASS_ChannelSetFX(Handle.l, atype.l, Priority.l) As "_BASS_ChannelSetFX@12"
BASS_ChannelSetFlags(Handle.l, flags.l) As "_BASS_ChannelSetFlags@8"
BASS_ChannelSetLink(Handle.l, chan.l) As "_BASS_ChannelSetLink@8"
BASS_ChannelSetPosition(Handle.l, pos.l, poshigh.l) As "_BASS_ChannelSetPosition@12"
; BASS_ChannelSetSync(Handle.l, type.l, param.l, proc.l, user.l) As "_BASS_ChannelSetSync@24"
BASS_ChannelSetSync(Handle.l, atype.l, param.l, paramhigh.l, proc.l, user.l) As "_BASS_ChannelSetSync@24"
BASS_ChannelSlideAttributes(Handle.l, freq.l, volume.l, pan.l, time.l) As "_BASS_ChannelSlideAttributes@20"
BASS_ChannelStop(Handle.l) As "_BASS_ChannelStop@4"
BASS_ErrorGetCode() As "_BASS_ErrorGetCode@0"
BASS_FXGetParameters(Handle.l, *par.l) As "_BASS_FXGetParameters@8"
BASS_FXSetParameters(Handle.l, *par.l) As "_BASS_FXSetParameters@8"
BASS_Free() As "_BASS_Free@0"
BASS_Get3DFactors(*distf.l, *rollf.l, *doppf.l) As "_BASS_Get3DFactors@12"
BASS_Get3DPosition(*pos.l, *vel.l, *front.l, *top.l) As "_BASS_Get3DPosition@16"
BASS_GetCPU() As "_BASS_GetCPU@0"
BASS_GetConfig(opt.l) As "_BASS_GetConfig@4"
BASS_GetDSoundObject(object.l) As "_BASS_GetDSoundObject@4"
BASS_GetDevice() As "_BASS_GetDevice@0"
BASS_GetDeviceDescription(device.l) As "_BASS_GetDeviceDescription@4"
BASS_GetEAXParameters(*env.l, *vol.l, *decay.l, *damp.l) As "_BASS_GetEAXParameters@16"
BASS_GetInfo(*info.BASS_INFO) As "_BASS_GetInfo@4"
BASS_GetVersion() As "_BASS_GetVersion@0"
BASS_GetVolume() As "_BASS_GetVolume@0"
BASS_Init(device.l, freq.l, flags.l, win.l, clsid.l) As "_BASS_Init@20"
BASS_MusicFree(Handle.l) As "_BASS_MusicFree@4"
BASS_MusicGetAttribute(Handle.l, attrib.l) As "_BASS_MusicGetAttribute@8"
BASS_MusicGetOrderPosition(Handle.l) As "_BASS_MusicGetOrderPosition@4"
BASS_MusicGetOrders(Handle.l) As "_BASS_MusicGetOrders@4"
BASS_MusicLoad(mem.l, f.l, offset.l, length.l, flags.l, freq.l) As "_BASS_MusicLoad@24"
BASS_MusicSetAttribute(Handle.l, attrib.l, Value.l) As "_BASS_MusicSetAttribute@12"
BASS_Pause() As "_BASS_Pause@0"
BASS_PluginFree(Handle.l) As "_BASS_PluginFree@4"
BASS_PluginGetInfo(Handle.l) As "_BASS_PluginGetInfo@4"
BASS_PluginLoad(FileName.s,b.l) As "_BASS_PluginLoad@8"
BASS_RecordFree() As "_BASS_RecordFree@0"
BASS_RecordGetDevice() As "_BASS_RecordGetDevice@0"
BASS_RecordGetDeviceDescription(device.l) As "_BASS_RecordGetDeviceDescription@4"
BASS_RecordGetInfo(*info.BASS_RECORDINFO) As "_BASS_RecordGetInfo@4"
BASS_RecordGetInput(inputn.l) As "_BASS_RecordGetInput@4"
BASS_RecordGetInputName(inputn.l) As "_BASS_RecordGetInputName@4"
BASS_RecordInit(device) As "_BASS_RecordInit@4"
BASS_RecordSetDevice(device.l) As "_BASS_RecordSetDevice@4"
BASS_RecordSetInput(inputn.l, setting.l) As "_BASS_RecordSetInput@8"
BASS_RecordStart(freq.l, chans.l, flags.l, proc.l, user.l) As "_BASS_RecordStart@20"
BASS_SampleCreate(length.l, freq.l, chans.l, max.l, flags.l) As "_BASS_SampleCreate@20"
BASS_SampleCreateDone() As "_BASS_SampleCreateDone@0"
BASS_SampleFree(Handle.l) As "_BASS_SampleFree@4"
BASS_SampleGetChannel(Handle.l, onlynew.l) As "_BASS_SampleGetChannel@8"
BASS_SampleGetChannels(Handle.l, *channels.l) As "_BASS_SampleGetChannels@8"
BASS_SampleGetInfo(Handle.l, *info.BASS_SAMPLE) As "_BASS_SampleGetInfo@8"
BASS_SampleLoad(mem.l, f.l, offset.l, length.l, max.l, flags.l) As "_BASS_SampleLoad@24"
BASS_SampleSetInfo(Handle.l, *info.BASS_SAMPLE) As "_BASS_SampleSetInfo@8"
BASS_SampleStop(Handle.l) As "_BASS_SampleStop@4"
BASS_Set3DFactors(distf.l, rollf.l, doppf.l) As "_BASS_Set3DFactors@12"
BASS_Set3DPosition(pos.l, vel.l, front.l, top.l) As "_BASS_Set3DPosition@16"
BASS_SetConfig(opt.l, Value.l) As "_BASS_SetConfig@8"
BASS_SetDevice(device.l) As "_BASS_SetDevice@4"
BASS_SetEAXParameters(env.l, vol.f, decay.f, damp.f) As "_BASS_SetEAXParameters@16"
BASS_SetVolume(volume.l) As "_BASS_SetVolume@4"
BASS_Start() As "_BASS_Start@0"
BASS_Stop() As "_BASS_Stop@0"
BASS_StreamCreate(freq.l, chans.l, flags.l, proc.l, user.l) As "_BASS_StreamCreate@20"
BASS_StreamCreateFile(mem.l, f.l, offset.l, length.l, flags.l) As "_BASS_StreamCreateFile@20"
BASS_StreamCreateFileUser(buffered.l, flags.l, proc.l, user.l) As "_BASS_StreamCreateFileUser@16"
BASS_StreamCreateURL(url.s, offset.l, flags.l, proc.l, user.l) As "_BASS_StreamCreateURL@20"
BASS_StreamFree(Handle.l) As "_BASS_StreamFree@4"
BASS_StreamGetFilePosition(Handle.l, Mode.l) As "_BASS_StreamGetFilePosition@8"
BASS_Update() As "_BASS_Update@0"
EndImport
Procedure HighWord(long); - Get the high word of a long
ProcedureReturn (long>>16)&$FFFF
EndProcedure
Procedure LowWord(long); - Get the low word of a long
ProcedureReturn long&$FFFF
EndProcedure
Procedure MakeLong(low.w, high.w); - Combines the high and low word to a long
ProcedureReturn low + (high<<16)
EndProcedure
Procedure BASS_SPEAKER_N(n.l)
ProcedureReturn n * Pow(2, 24)
EndProcedure
Procedure MAKEMUSICPOS(order.l, row.l)
ProcedureReturn $80000000 Or MakeLong(order, row)
EndProcedure
Procedure.s BASS_GetDeviceDescriptionString(device.l)
Protected pstring.l
Protected sstring.s
pstring = BASS_GetDeviceDescription(device)
If pstring
sstring = PeekS(@pstring)
EndIf
ProcedureReturn sstring
EndProcedure
Procedure BASS_SetEAXPreset(preset)
Select preset
Case #EAX_ENVIRONMENT_GENERIC
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_GENERIC, 0.5, 1.493, 0.5)
Case #EAX_ENVIRONMENT_PADDEDCELL
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_PADDEDCELL, 0.25, 0.1, 0)
Case #EAX_ENVIRONMENT_ROOM
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_ROOM, 0.417, 0.4, 0.666)
Case#EAX_ENVIRONMENT_BATHROOM
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_BATHROOM, 0.653, 1.499, 0.166)
Case#EAX_ENVIRONMENT_LIVINGROOM
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_LIVINGROOM, 0.208, 0.478, 0)
Case#EAX_ENVIRONMENT_STONEROOM
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_STONEROOM, 0.5, 2.309, 0.888)
Case#EAX_ENVIRONMENT_AUDITORIUM
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_AUDITORIUM, 0.403, 4.279, 0.5)
Case#EAX_ENVIRONMENT_CONCERTHALL
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_CONCERTHALL, 0.5, 3.961, 0.5)
Case#EAX_ENVIRONMENT_CAVE
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_CAVE, 0.5, 2.886, 1.304)
Case#EAX_ENVIRONMENT_ARENA
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_ARENA, 0.361, 7.284, 0.332)
Case#EAX_ENVIRONMENT_HANGAR
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_HANGAR, 0.5, 10, 0.3)
Case#EAX_ENVIRONMENT_CARPETEDHALLWAY
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153, 0.259, 2)
Case#EAX_ENVIRONMENT_HALLWAY
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_HALLWAY, 0.361, 1.493, 0)
Case#EAX_ENVIRONMENT_STONECORRIDOR
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_STONECORRIDOR, 0.444, 2.697, 0.638)
Case#EAX_ENVIRONMENT_ALLEY
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_ALLEY, 0.25, 1.752, 0.776)
Case#EAX_ENVIRONMENT_FOREST
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_FOREST, 0.111, 3.145, 0.472)
Case#EAX_ENVIRONMENT_CITY
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_CITY, 0.111, 2.767, 0.224)
Case#EAX_ENVIRONMENT_MOUNTAINS
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_MOUNTAINS, 0.194, 7.841, 0.472)
Case#EAX_ENVIRONMENT_QUARRY
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_QUARRY, 1, 1.499, 0.5)
Case#EAX_ENVIRONMENT_PLAIN
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_PLAIN, 0.097, 2.767, 0.224)
Case#EAX_ENVIRONMENT_PARKINGLOT
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_PARKINGLOT, 0.208, 1.652, 1.5)
Case#EAX_ENVIRONMENT_SEWERPIPE
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_SEWERPIPE, 0.652, 2.886, 0.25)
Case#EAX_ENVIRONMENT_UNDERWATER
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_UNDERWATER, 1, 1.499, 0)
Case#EAX_ENVIRONMENT_DRUGGED
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_DRUGGED, 0.875, 8.392, 1.388)
Case#EAX_ENVIRONMENT_DIZZY
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_DIZZY, 0.139, 17.234, 0.666)
Case#EAX_ENVIRONMENT_PSYCHOTIC
ProcedureReturn BASS_SetEAXParameters(#EAX_ENVIRONMENT_PSYCHOTIC, 0.486, 7.563, 0.806)
EndSelect
EndProcedure
Procedure.s BASS_ErrorGetText()
errorcode.l = BASS_ErrorGetCode()
Debug "Error code: " + Str(errorcode)
Select errorcode
Case #BASS_OK : ProcedureReturn "OK"
Case #BASS_ERROR_MEM : ProcedureReturn "Memory error"
Case #BASS_ERROR_FILEOPEN : ProcedureReturn "Can't open the file"
Case #BASS_ERROR_DRIVER : ProcedureReturn "Can't find a free/valid driver"
Case #BASS_ERROR_BUFLOST : ProcedureReturn "The sample buffer was lost"
Case #BASS_ERROR_HANDLE : ProcedureReturn "Invalid handle"
Case #BASS_ERROR_FORMAT : ProcedureReturn "Unsupported sample format"
Case #BASS_ERROR_POSITION : ProcedureReturn "Invalid playback position"
Case #BASS_ERROR_INIT : ProcedureReturn "BASS_Init has not been successfully called"
Case #BASS_ERROR_START : ProcedureReturn "BASS_Start has not been successfully called"
Case #BASS_ERROR_ALREADY : ProcedureReturn "Already initialized"
Case #BASS_ERROR_NOPAUSE : ProcedureReturn "Not paused"
Case #BASS_ERROR_NOCHAN : ProcedureReturn "Can't get a free channel"
Case #BASS_ERROR_ILLTYPE : ProcedureReturn "An illegal type was specified"
Case #BASS_ERROR_ILLPARAM : ProcedureReturn "An illegal parameter was specified"
Case #BASS_ERROR_NO3D : ProcedureReturn "No 3D support"
Case #BASS_ERROR_NOEAX : ProcedureReturn "No EAX support"
Case #BASS_ERROR_DEVICE : ProcedureReturn "Illegal device number"
Case #BASS_ERROR_NOPLAY : ProcedureReturn "Not playing"
Case #BASS_ERROR_FREQ : ProcedureReturn "Illegal sample rate"
Case #BASS_ERROR_NOTFILE : ProcedureReturn "The stream is not a file stream"
Case #BASS_ERROR_NOHW : ProcedureReturn "No hardware voices available"
Case #BASS_ERROR_EMPTY : ProcedureReturn "The MOD music has no sequence Data"
Case #BASS_ERROR_NONET : ProcedureReturn "No internet connection could be opened"
Case #BASS_ERROR_CREATE : ProcedureReturn "Couldn't create the file"
Case #BASS_ERROR_NOFX : ProcedureReturn "Effects are not available"
Case #BASS_ERROR_PLAYING : ProcedureReturn "The channel is playing"
Case #BASS_ERROR_NOTAVAIL : ProcedureReturn "Requested Data is not available"
Case #BASS_ERROR_DECODE : ProcedureReturn "The channel is a decoding channel"
Case #BASS_ERROR_DX : ProcedureReturn "A sufficient DirectX version is not installed"
Case #BASS_ERROR_TIMEOUT : ProcedureReturn "Connection timedout"
Case #BASS_ERROR_FILEFORM : ProcedureReturn "Unsupported file format"
Case #BASS_ERROR_SPEAKER : ProcedureReturn "Unavailable speaker"
Case #BASS_ERROR_UNKNOWN : ProcedureReturn "Some other mystery error"
Case #BASS_ERROR_VERSION : ProcedureReturn "Wrong version"
Case #BASS_ERROR_CODEC : ProcedureReturn "Codec problem"
EndSelect
EndProcedure
Code: Select all
;Additional error codes returned by BASS_ErrorGetCode
#BASS_ERROR_WMA_LICENSE = 1000 ; the file is protected
#BASS_ERROR_WMA = 1001 ; Windows Media (9 or above) is not installed
#BASS_ERROR_WMA_WM9 = #BASS_ERROR_WMA
#BASS_ERROR_WMA_DENIED = 1002 ; access denied (user/pass is invalid)
#BASS_ERROR_WMA_INDIVIDUAL = 1004 ; individualization is needed
; Additional config options
#BASS_CONFIG_WMA_PRECHECK = $10100
#BASS_CONFIG_WMA_PREBUF = $10101
#BASS_CONFIG_WMA_ASX = $10102
#BASS_CONFIG_WMA_BASSFILE = $10103
#BASS_CONFIG_WMA_NETSEEK = $10104
; additional WMA sync type
#BASS_SYNC_WMA_CHANGE = 1001
; additional BASS_StreamGetFilePosition WMA mode
#BASS_FILEPOS_WMA_BUFFER = 1000 ; internet buffering progress (0-100%)
; Additional flags for use with BASS_WMA_EncodeOpenFile/Network
#BASS_WMA_ENCODE_STANDARD = $2000 ; standard WMA
#BASS_WMA_ENCODE_PRO = $4000 ; WMA Pro
#BASS_WMA_ENCODE_24BIT = 32768 ; 24-bit
#BASS_WMA_ENCODE_SCRIPT = $20000 ; set script (mid-stream tags) in the WMA encoding
; Additional flag for use with BASS_WMA_EncodeGetRates
#BASS_WMA_ENCODE_RATES_VBR = $10000 ; get available VBR quality settings
; WMENCODEPROC "type" values
#BASS_WMA_ENCODE_HEAD = 0
#BASS_WMA_ENCODE_DATA = 1
#BASS_WMA_ENCODE_DONE = 2
; BASS_WMA_EncodeSetTag "type" values
#BASS_WMA_TAG_ANSI = 0
#BASS_WMA_TAG_UNICODE = 1
#BASS_WMA_TAG_UTF8 = 2
; BASS_CHANNELINFO type
#BASS_CTYPE_STREAM_WMA = $10300
#BASS_CTYPE_STREAM_WMA_MP3 = $10301
; Additional BASS_ChannelGetTags type
#BASS_TAG_WMA = 8 ; WMA tags : array of null-terminated UTF-8 strings
Import "basswma.lib"
BASS_WMA_StreamCreateFile(mem.l, file.s, offset.l, length.l, flags.l) As "_BASS_WMA_StreamCreateFile@20"
BASS_WMA_StreamCreateFileAuth(mem.l, file.s, offset.l, length.l, flags.l, user.s, pass.s) As "_BASS_WMA_StreamCreateFileAuth@28"
BASS_WMA_StreamCreateFileUser(flags.l, proc.l, user.l) As "_BASS_WMA_StreamCreateFileUser@12"
BASS_WMA_EncodeGetRates(freq.l, chans.l, flags.l) As "_BASS_WMA_EncodeGetRates@12"
BASS_WMA_EncodeOpen(freq.l, chans.l, flags.l, bitrate.l, proc.l, user.l) As "_BASS_WMA_EncodeOpen@24"
BASS_WMA_EncodeOpenFile(freq.l, chans.l, flags.l, bitrate.l, file.s) As "_BASS_WMA_EncodeOpenFile@20"
BASS_WMA_EncodeOpenNetwork(freq.l, chans.l, flags.l, bitrate.l, port.l, clients.l) As "_BASS_WMA_EncodeOpenNetwork@24"
BASS_WMA_EncodeOpenNetworkMulti(freq.l, chans.l, flags.l, *bitrates.l, port.l, clients.l) As "_BASS_WMA_EncodeOpenNetworkMulti@24"
BASS_WMA_EncodeOpenPublish(freq.l, chans.l, flags.l, bitrate.l, url.s, user.s, pass.s) As "_BASS_WMA_EncodeOpenPublish@28"
BASS_WMA_EncodeOpenPublishMulti(freq.l, chans.l, flags.l, *bitrates.l, url.s, user.s, pass.s) As "_BASS_WMA_EncodeOpenPublishMulti@28"
BASS_WMA_EncodeGetPort(Handle.l) As "_BASS_WMA_EncodeGetPort@4"
BASS_WMA_EncodeSetNotify(Handle.l, proc.l, user.l) As "_BASS_WMA_EncodeSetNotify@12"
BASS_WMA_EncodeGetClients(Handle.l) As "_BASS_WMA_EncodeGetClients@4"
BASS_WMA_EncodeSetTag(Handle.l, tag.s, text.s, ttype.l) As "_BASS_WMA_EncodeSetTag@16"
BASS_WMA_EncodeWrite(Handle.l, Buffer.l, length.l) As "_BASS_WMA_EncodeWrite@12"
BASS_WMA_EncodeClose(Handle.l) As "_BASS_WMA_EncodeClose@4"
BASS_WMA_GetWMObject(Handle.l) As "_BASS_WMA_GetWMObject@4"
EndImport
Procedure CLIENTCONNECTPROC(Handle.l, connect.l, ip.l, user.l)
; CALLBACK FUNCTION !!!
;
; Client connection notification CALLBACK FUNCTION.
; Handle : The encoder
; connect: TRUE=Client is connecting, FALSE=disconnecting
; ip : The Client's IP (xxx.xxx.xxx.xxx:port)
; user : The 'user; parameter Value given when calling BASS_WMA_EncodeSetNotify
EndProcedure
Procedure WMENCODEPROC(Handle.l, dtype.l, Buffer.l, length.l, user.l)
; CALLBACK FUNCTION !!!
;
; Encoder callback function.
; handle : The encoder handle
; dtype : The type of data, one of BASS_WMA_ENCODE_xxx values
; buffer : The encoded data
; length : Length of the data
; user : The 'user; parameter value given when calling BASS_WMA_EncodeOpen
EndProcedure