aboutsummaryrefslogtreecommitdiffstats
path: root/Game/Code/lib/bass/delphi/bass.pas
diff options
context:
space:
mode:
Diffstat (limited to 'Game/Code/lib/bass/delphi/bass.pas')
-rw-r--r--Game/Code/lib/bass/delphi/bass.pas756
1 files changed, 331 insertions, 425 deletions
diff --git a/Game/Code/lib/bass/delphi/bass.pas b/Game/Code/lib/bass/delphi/bass.pas
index ba661699..bdcd5900 100644
--- a/Game/Code/lib/bass/delphi/bass.pas
+++ b/Game/Code/lib/bass/delphi/bass.pas
@@ -1,15 +1,17 @@
{
- BASS 2.3 Audio Library, (c) 1999-2007 Ian Luck.
- Please report bugs/suggestions/etc... to bass@un4seen.com
-
- See the BASS.CHM file for more complete documentation
+ BASS 2.4 Delphi unit
+ Copyright (c) 1999-2010 Un4seen Developments Ltd.
+ See the BASS.CHM file for more detailed documentation
How to install
- ----------------
+ --------------
Copy BASS.PAS to the \LIB subdirectory of your Delphi path or your project dir
+
+ NOTE: Delphi 2009 users should use the BASS_UNICODE flag where possible
}
-unit Bass;
+
+unit BASS;
interface
@@ -17,25 +19,25 @@ uses
Windows;
const
- BASSVERSION = $203; // API version
+ BASSVERSION = $204; // API version
+ BASSVERSIONTEXT = '2.4';
// Use these to test for error from functions that return a DWORD or QWORD
- DW_ERROR = Cardinal(-1); // -1 (DWORD)
+ DW_ERROR = LongWord(-1); // -1 (DWORD)
QW_ERROR = Int64(-1); // -1 (QWORD)
- // Error codes returned by BASS_GetErrorCode()
+ // 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 - please report this!
+ 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_POSITION = 7; // invalid 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
@@ -50,7 +52,6 @@ const
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 enabled
- 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
@@ -59,19 +60,41 @@ const
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
+ BASS_ERROR_ENDED = 45; // the channel/file has ended
+ BASS_ERROR_BUSY = 46; // the device is busy
+ BASS_ERROR_UNKNOWN = -1; // some other mystery problem
+
+ // BASS_SetConfig options
+ BASS_CONFIG_BUFFER = 0;
+ BASS_CONFIG_UPDATEPERIOD = 1;
+ 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_PASSIVE = 18;
+ BASS_CONFIG_REC_BUFFER = 19;
+ BASS_CONFIG_NET_PLAYLIST = 21;
+ BASS_CONFIG_MUSIC_VIRTUAL = 22;
+ BASS_CONFIG_VERIFY = 23;
+ BASS_CONFIG_UPDATETHREADS = 24;
+
+ // BASS_SetConfigPtr options
+ BASS_CONFIG_NET_AGENT = 16;
+ BASS_CONFIG_NET_PROXY = 17;
// 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_CPSPEAKERS = 1024; // detect speakers via Windows control panel
BASS_DEVICE_SPEAKERS = 2048; // force enabling of speaker assignment
BASS_DEVICE_NOSPEAKER = 4096; // ignore speaker arrangement
@@ -79,28 +102,23 @@ const
BASS_OBJECT_DS = 1; // IDirectSound
BASS_OBJECT_DS3DL = 2; // IDirectSound3DListener
+ // BASS_DEVICEINFO flags
+ BASS_DEVICE_ENABLED = 1;
+ BASS_DEVICE_DEFAULT = 2;
+ BASS_DEVICE_INIT = 4;
+
// BASS_INFO flags (from DSOUND.H)
- DSCAPS_CONTINUOUSRATE = $00000010;
- { supports all sample rates between min/maxrate }
- DSCAPS_EMULDRIVER = $00000020;
- { device does NOT have hardware DirectSound support }
- DSCAPS_CERTIFIED = $00000040;
- { device driver has been certified by Microsoft }
- {
- The following flags tell what type of samples are
- supported by HARDWARE mixing, all these formats are
- supported by SOFTWARE mixing
- }
+ DSCAPS_CONTINUOUSRATE = $00000010; // supports all sample rates between min/maxrate
+ DSCAPS_EMULDRIVER = $00000020; // device does NOT have hardware DirectSound support
+ DSCAPS_CERTIFIED = $00000040; // device driver has been certified by Microsoft
DSCAPS_SECONDARYMONO = $00000100; // mono
DSCAPS_SECONDARYSTEREO = $00000200; // stereo
DSCAPS_SECONDARY8BIT = $00000400; // 8 bit
DSCAPS_SECONDARY16BIT = $00000800; // 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 }
+ 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 = $00000001; // 11.025 kHz, Mono, 8-bit
@@ -116,21 +134,20 @@ const
WAVE_FORMAT_4M16 = $00000400; // 44.1 kHz, Mono, 16-bit
WAVE_FORMAT_4S16 = $00000800; // 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_MONO = 2; // mono
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_3D = 8; // 3D functionality
+ BASS_SAMPLE_SOFTWARE = 16; // not using hardware mixing
+ BASS_SAMPLE_MUTEMAX = 32; // mute at max distance (3D only)
+ BASS_SAMPLE_VAM = 64; // DX7 voice allocation & management
+ BASS_SAMPLE_FX = 128; // old implementation of DX8 effects
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_STREAM_PRESCAN = $20000; // enable pin-point seeking/length (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
@@ -138,13 +155,13 @@ const
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_FLOAT = BASS_SAMPLE_FLOAT;
+ BASS_MUSIC_MONO = BASS_SAMPLE_MONO;
+ BASS_MUSIC_LOOP = BASS_SAMPLE_LOOP;
+ BASS_MUSIC_3D = BASS_SAMPLE_3D;
+ BASS_MUSIC_FX = BASS_SAMPLE_FX;
+ BASS_MUSIC_AUTOFREE = BASS_STREAM_AUTOFREE;
+ BASS_MUSIC_DECODE = BASS_STREAM_DECODE;
BASS_MUSIC_PRESCAN = BASS_STREAM_PRESCAN; // calculate playback length
BASS_MUSIC_CALCLEN = BASS_MUSIC_PRESCAN;
BASS_MUSIC_RAMP = $200; // normal ramping
@@ -153,7 +170,8 @@ const
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_NONINTER = $10000; // non-interpolated sample mixing
+ BASS_MUSIC_SINCINTER = $800000; // sinc interpolated sample mixing
BASS_MUSIC_POSRESET = $8000; // 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
@@ -179,44 +197,12 @@ const
BASS_RECORD_PAUSE = $8000; // start recording paused
- // DX7 voice allocation flags
+ // DX7 voice allocation & management 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.
- }
// BASS_CHANNELINFO types
BASS_CTYPE_SAMPLE = 1;
@@ -238,21 +224,15 @@ const
BASS_CTYPE_MUSIC_MO3 = $00100; // MO3 flag
// 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.
- }
+ BASS_3DMODE_NORMAL = 0; // normal 3D processing
+ BASS_3DMODE_RELATIVE = 1; // position is relative to the listener
+ BASS_3DMODE_OFF = 2; // no 3D processing
+
+ // software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM)
+ BASS_3DALG_DEFAULT = 0;
+ BASS_3DALG_OFF = 1;
+ BASS_3DALG_FULL = 2;
+ BASS_3DALG_LIGHT = 3;
// EAX environments, use with BASS_SetEAXParameters
EAX_ENVIRONMENT_GENERIC = 0;
@@ -284,118 +264,41 @@ const
// total number of environments
EAX_ENVIRONMENT_COUNT = 26;
- // 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
- drivers, if this mode is not available then BASS_3DALG_OFF will be used
- instead.
- }
+ BASS_STREAMPROC_END = $80000000; // end of user stream flag
- {
- 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_SETPOS = 11;
- {
- Sync when a channel's position is set.
- param: not used
- data : 0 = playback buffer not flushed, 1 = playback buffer flushed
- }
- 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_StreamCreateFileUser file systems
+ STREAMFILE_NOBUFFER = 0;
+ STREAMFILE_BUFFER = 1;
+ STREAMFILE_BUFFERPUSH = 2;
+
+ // BASS_StreamPutFileData options
+ BASS_FILEDATA_END = 0; // end & close the file
+
+ // 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;
+ BASS_FILEPOS_CONNECTED = 4;
+ BASS_FILEPOS_BUFFER = 5;
+
+ // BASS_ChannelSetSync types
+ BASS_SYNC_POS = 0;
+ BASS_SYNC_END = 2;
+ BASS_SYNC_META = 4;
+ BASS_SYNC_SLIDE = 5;
+ BASS_SYNC_STALL = 6;
+ BASS_SYNC_DOWNLOAD = 7;
+ BASS_SYNC_FREE = 8;
+ BASS_SYNC_SETPOS = 11;
+ BASS_SYNC_MUSICPOS = 10;
+ BASS_SYNC_MUSICINST = 1;
+ BASS_SYNC_MUSICFX = 3;
+ BASS_SYNC_OGG_CHANGE = 12;
+ 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;
@@ -403,59 +306,63 @@ const
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
- // BASS_ChannelIsSliding return flags
- BASS_SLIDE_FREQ = 1;
- BASS_SLIDE_VOL = 2;
- BASS_SLIDE_PAN = 4;
+ // Channel attributes
+ BASS_ATTRIB_FREQ = 1;
+ BASS_ATTRIB_VOL = 2;
+ BASS_ATTRIB_PAN = 3;
+ BASS_ATTRIB_EAXMIX = 4;
+ BASS_ATTRIB_MUSIC_AMPLIFY = $100;
+ BASS_ATTRIB_MUSIC_PANSEP = $101;
+ BASS_ATTRIB_MUSIC_PSCALER = $102;
+ BASS_ATTRIB_MUSIC_BPM = $103;
+ BASS_ATTRIB_MUSIC_SPEED = $104;
+ BASS_ATTRIB_MUSIC_VOL_GLOBAL = $105;
+ BASS_ATTRIB_MUSIC_VOL_CHAN = $200; // + channel #
+ BASS_ATTRIB_MUSIC_VOL_INST = $300; // + instrument #
// 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_FFT256 = $80000000; // 256 sample FFT
+ BASS_DATA_FFT512 = $80000001; // 512 FFT
+ BASS_DATA_FFT1024 = $80000002; // 1024 FFT
+ BASS_DATA_FFT2048 = $80000003; // 2048 FFT
+ BASS_DATA_FFT4096 = $80000004; // 4096 FFT
+ BASS_DATA_FFT8192 = $80000005; // 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_DATA_FFT_REMOVEDC = $40; // FFT flag: pre-remove DC bias
// BASS_ChannelGetTags types : what's returned
- BASS_TAG_ID3 = 0; // ID3v1 tags : 128 byte block
+ BASS_TAG_ID3 = 0; // ID3v1 tags : TAG_ID3 structure
BASS_TAG_ID3V2 = 1; // ID3v2 tags : variable length block
- BASS_TAG_OGG = 2; // OGG comments : array of null-terminated strings
- BASS_TAG_HTTP = 3; // HTTP headers : array of null-terminated strings
- BASS_TAG_ICY = 4; // ICY headers : array of null-terminated strings
- BASS_TAG_META = 5; // ICY metadata : null-terminated string
- BASS_TAG_VENDOR = 9; // OGG encoder : null-terminated string
+ BASS_TAG_OGG = 2; // OGG comments : series of null-terminated UTF-8 strings
+ BASS_TAG_HTTP = 3; // HTTP headers : series of null-terminated ANSI strings
+ BASS_TAG_ICY = 4; // ICY headers : series of null-terminated ANSI strings
+ BASS_TAG_META = 5; // ICY metadata : ANSI string
+ BASS_TAG_APE = 6; // APEv2 tags : series of null-terminated UTF-8 strings
+ BASS_TAG_VENDOR = 9; // OGG encoder : UTF-8 string
BASS_TAG_LYRICS3 = 10; // Lyric3v2 tag : ASCII string
- BASS_TAG_RIFF_INFO = $100; // RIFF/WAVE tags : array of null-terminated ANSI strings
+ BASS_TAG_RIFF_INFO = $100; // RIFF "INFO" tags : series of null-terminated ANSI strings
+ BASS_TAG_RIFF_BEXT = $101; // RIFF/BWF "bext" tags : TAG_BEXT structure
+ BASS_TAG_RIFF_CART = $102; // RIFF/BWF "cart" tags : TAG_CART structure
+ BASS_TAG_APE_BINARY = $1000; // + index #, binary APEv2 tag : TAG_APE_BINARY structure
BASS_TAG_MUSIC_NAME = $10000; // MOD music name : ANSI string
BASS_TAG_MUSIC_MESSAGE = $10001; // MOD message : ANSI string
+ BASS_TAG_MUSIC_ORDERS = $10002; // MOD order list : BYTE array of pattern numbers
BASS_TAG_MUSIC_INST = $10100; // + instrument #, MOD instrument name : ANSI string
BASS_TAG_MUSIC_SAMPLE = $10300; // + sample #, MOD sample name : ANSI string
- 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
-
- 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_ChannelGetLength/GetPosition/SetPosition modes
+ BASS_POS_BYTE = 0; // byte position
+ BASS_POS_MUSIC_ORDER = 1; // order.row position, MAKELONG(order,row)
+ BASS_POS_DECODE = $10000000; // flag: get the decoding (not playing) position
// BASS_RecordSetInput flags
BASS_INPUT_OFF = $10000;
BASS_INPUT_ON = $20000;
- BASS_INPUT_LEVEL = $40000;
- BASS_INPUT_TYPE_MASK = $ff000000;
+ BASS_INPUT_TYPE_MASK = $FF000000;
BASS_INPUT_TYPE_UNDEF = $00000000;
BASS_INPUT_TYPE_DIGITAL = $01000000;
BASS_INPUT_TYPE_LINE = $02000000;
@@ -466,65 +373,29 @@ const
BASS_INPUT_TYPE_SPEAKER = $07000000;
BASS_INPUT_TYPE_WAVE = $08000000;
BASS_INPUT_TYPE_AUX = $09000000;
- BASS_INPUT_TYPE_ANALOG = $0a000000;
-
- // BASS_SetNetConfig flags
- BASS_NET_TIMEOUT = 0;
- BASS_NET_BUFFER = 1;
-
- // 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;
- BASS_FILEPOS_CONNECTED = 4;
-
- // 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
-
- // 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_CONFIG_NET_PLAYLIST = 21;
- BASS_CONFIG_MUSIC_VIRTUAL = 22;
+ BASS_INPUT_TYPE_ANALOG = $0A000000;
+
+ BASS_FX_DX8_CHORUS = 0;
+ BASS_FX_DX8_COMPRESSOR = 1;
+ BASS_FX_DX8_DISTORTION = 2;
+ BASS_FX_DX8_ECHO = 3;
+ BASS_FX_DX8_FLANGER = 4;
+ BASS_FX_DX8_GARGLE = 5;
+ BASS_FX_DX8_I3DL2REVERB = 6;
+ BASS_FX_DX8_PARAMEQ = 7;
+ BASS_FX_DX8_REVERB = 8;
+
+ BASS_DX8_PHASE_NEG_180 = 0;
+ BASS_DX8_PHASE_NEG_90 = 1;
+ BASS_DX8_PHASE_ZERO = 2;
+ BASS_DX8_PHASE_90 = 3;
+ BASS_DX8_PHASE_180 = 4;
type
- DWORD = cardinal;
+ DWORD = LongWord;
BOOL = LongBool;
FLOAT = Single;
- QWORD = int64; // 64-bit (replace "int64" with "comp" if using Delphi 3)
+ QWORD = Int64;
HMUSIC = DWORD; // MOD music handle
HSAMPLE = DWORD; // sample handle
@@ -536,6 +407,13 @@ type
HFX = DWORD; // DX8 effect handle
HPLUGIN = DWORD; // Plugin handle
+ // Device info structure
+ BASS_DEVICEINFO = record
+ name: PAnsiChar; // description
+ driver: PAnsiChar; // driver
+ flags: DWORD;
+ end;
+
BASS_INFO = record
flags: DWORD; // device capabilities (DSCAPS_xxx flags)
hwsize: DWORD; // size of total device hardware memory
@@ -548,75 +426,68 @@ type
minbuf: DWORD; // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY)
dsver: DWORD; // DirectSound version
latency: DWORD; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY)
- initflags: DWORD; // "flags" parameter of BASS_Init call
+ initflags: DWORD; // BASS_Init "flags" parameter
speakers: DWORD; // number of speakers available
- driver: PChar; // driver
freq: DWORD; // current output rate (OSX only)
end;
+ // Recording device info structure
BASS_RECORDINFO = record
flags: DWORD; // device capabilities (DSCCAPS_xxx flags)
formats: DWORD; // supported standard formats (WAVE_FORMAT_xxx flags)
inputs: DWORD; // number of inputs
singlein: BOOL; // only 1 input can be set at a time
- driver: PChar; // driver
freq: DWORD; // current input rate (OSX only)
end;
- BASS_CHANNELINFO = record
- freq: DWORD; // default playback rate
- chans: DWORD; // channels
- flags: DWORD; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
- ctype: DWORD; // type of channel
- origres: DWORD; // original resolution
- plugin: HPLUGIN; // plugin
- end;
-
- BASS_PLUGINFORM = record
- ctype: DWORD; // channel type
- name: PChar; // format description
- exts: PChar; // file extension filter (*.ext1;*.ext2;etc...)
- end;
- PBASS_PLUGINFORMS = ^TBASS_PLUGINFORMS;
- TBASS_PLUGINFORMS = array[0..maxInt div sizeOf(BASS_PLUGINFORM) - 1] of BASS_PLUGINFORM;
-
- BASS_PLUGININFO = record
- version: DWORD; // version (same form as BASS_GetVersion)
- formatc: DWORD; // number of formats
- formats: PBASS_PLUGINFORMS; // the array of formats
- end;
- PBASS_PLUGININFO = ^BASS_PLUGININFO;
-
// Sample info structure
BASS_SAMPLE = record
freq: DWORD; // default playback rate
- volume: DWORD; // default volume (0-100)
- pan: Integer; // default pan (-100=left, 0=middle, 100=right)
+ volume: FLOAT; // default volume (0-100)
+ pan: FLOAT; // default pan (-100=left, 0=middle, 100=right)
flags: DWORD; // BASS_SAMPLE_xxx flags
length: DWORD; // length (in samples, not bytes)
max: DWORD; // maximum simultaneous playbacks
origres: DWORD; // original resolution
chans: DWORD; // number of channels
mingap: 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: DWORD; // BASS_3DMODE_xxx mode
mindist: FLOAT; // minimum distance
maxdist: FLOAT; // maximum distance
iangle: DWORD; // angle of inside projection cone
oangle: DWORD; // angle of outside projection cone
- outvol: DWORD; // delta-volume outside the projection cone
- {
- The following are the defaults used if the sample uses the DirectX 7
- voice allocation/management features.
- }
+ outvol: FLOAT; // delta-volume outside the projection cone
vam: DWORD; // voice allocation/management flags (BASS_VAM_xxx)
priority: DWORD; // priority (0=lowest, $ffffffff=highest)
end;
+ // Channel info structure
+ BASS_CHANNELINFO = record
+ freq: DWORD; // default playback rate
+ chans: DWORD; // channels
+ flags: DWORD; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
+ ctype: DWORD; // type of channel
+ origres: DWORD; // original resolution
+ plugin: HPLUGIN; // plugin
+ sample: HSAMPLE; // sample
+ filename: PChar; // filename
+ end;
+
+ BASS_PLUGINFORM = record
+ ctype: DWORD; // channel type
+ name: PAnsiChar; // format description
+ exts: PAnsiChar; // file extension filter (*.ext1;*.ext2;etc...)
+ end;
+ PBASS_PLUGINFORMS = ^TBASS_PLUGINFORMS;
+ TBASS_PLUGINFORMS = array[0..maxInt div sizeOf(BASS_PLUGINFORM) - 1] of BASS_PLUGINFORM;
+
+ BASS_PLUGININFO = record
+ version: DWORD; // version (same form as BASS_GetVersion)
+ formatc: DWORD; // number of formats
+ formats: PBASS_PLUGINFORMS; // the array of formats
+ end;
+ PBASS_PLUGININFO = ^BASS_PLUGININFO;
+
// 3D vector (for 3D positions/velocities/orientations)
BASS_3DVECTOR = record
x: FLOAT; // +=right, -=left
@@ -624,17 +495,62 @@ type
z: FLOAT; // +=front, -=behind
end;
- BASS_FXCHORUS = record
+ // User file stream callback functions
+ FILECLOSEPROC = procedure(user: Pointer); stdcall;
+ FILELENPROC = function(user: Pointer): QWORD; stdcall;
+ FILEREADPROC = function(buffer: Pointer; length: DWORD; user: Pointer): DWORD; stdcall;
+ FILESEEKPROC = function(offset: QWORD; user: Pointer): BOOL; stdcall;
+
+ BASS_FILEPROCS = record
+ close: FILECLOSEPROC;
+ length: FILELENPROC;
+ read: FILEREADPROC;
+ seek: FILESEEKPROC;
+ end;
+
+ // ID3v1 tag structure
+ TAG_ID3 = record
+ id: Array[0..2] of AnsiChar;
+ title: Array[0..29] of AnsiChar;
+ artist: Array[0..29] of AnsiChar;
+ album: Array[0..29] of AnsiChar;
+ year: Array[0..3] of AnsiChar;
+ comment: Array[0..29] of AnsiChar;
+ genre: Byte;
+ end;
+
+ // Binary APEv2 tag structure
+ TAG_APE_BINARY = record
+ key: PAnsiChar;
+ data: PAnsiChar;
+ length: DWORD;
+ end;
+
+ // BWF "bext" tag structure
+ TAG_BEXT = packed record
+ Description: Array[0..255] of AnsiChar; // description
+ Originator: Array[0..31] of AnsiChar; // name of the originator
+ OriginatorReference: Array[0..31] of AnsiChar; // reference of the originator
+ OriginationDate: Array[0..9] of AnsiChar; // date of creation (yyyy-mm-dd)
+ OriginationTime: Array[0..7] of AnsiChar; // time of creation (hh-mm-ss)
+ TimeReference: QWORD; // first sample count since midnight (little-endian)
+ Version: Word; // BWF version (little-endian)
+ UMID: Array[0..63] of Byte; // SMPTE UMID
+ Reserved: Array[0..189] of Byte;
+ CodingHistory: Array of AnsiChar; // history
+ end;
+
+ BASS_DX8_CHORUS = record
fWetDryMix: FLOAT;
fDepth: FLOAT;
fFeedback: FLOAT;
fFrequency: FLOAT;
lWaveform: DWORD; // 0=triangle, 1=sine
fDelay: FLOAT;
- lPhase: DWORD; // BASS_FX_PHASE_xxx
+ lPhase: DWORD; // BASS_DX8_PHASE_xxx
end;
- BASS_FXCOMPRESSOR = record
+ BASS_DX8_COMPRESSOR = record
fGain: FLOAT;
fAttack: FLOAT;
fRelease: FLOAT;
@@ -643,7 +559,7 @@ type
fPredelay: FLOAT;
end;
- BASS_FXDISTORTION = record
+ BASS_DX8_DISTORTION = record
fGain: FLOAT;
fEdge: FLOAT;
fPostEQCenterFrequency: FLOAT;
@@ -651,7 +567,7 @@ type
fPreLowpassCutoff: FLOAT;
end;
- BASS_FXECHO = record
+ BASS_DX8_ECHO = record
fWetDryMix: FLOAT;
fFeedback: FLOAT;
fLeftDelay: FLOAT;
@@ -659,43 +575,43 @@ type
lPanDelay: BOOL;
end;
- BASS_FXFLANGER = record
+ BASS_DX8_FLANGER = record
fWetDryMix: FLOAT;
fDepth: FLOAT;
fFeedback: FLOAT;
fFrequency: FLOAT;
lWaveform: DWORD; // 0=triangle, 1=sine
fDelay: FLOAT;
- lPhase: DWORD; // BASS_FX_PHASE_xxx
+ lPhase: DWORD; // BASS_DX8_PHASE_xxx
end;
- BASS_FXGARGLE = record
+ BASS_DX8_GARGLE = record
dwRateHz: DWORD; // Rate of modulation in hz
dwWaveShape: DWORD; // 0=triangle, 1=square
end;
- BASS_FXI3DL2REVERB = record
- lRoom: Longint; // [-10000, 0] default: -1000 mB
- lRoomHF: Longint; // [-10000, 0] default: 0 mB
+ BASS_DX8_I3DL2REVERB = record
+ lRoom: LongInt; // [-10000, 0] default: -1000 mB
+ lRoomHF: LongInt; // [-10000, 0] default: 0 mB
flRoomRolloffFactor: FLOAT; // [0.0, 10.0] default: 0.0
flDecayTime: FLOAT; // [0.1, 20.0] default: 1.49s
flDecayHFRatio: FLOAT; // [0.1, 2.0] default: 0.83
- lReflections: Longint; // [-10000, 1000] default: -2602 mB
+ lReflections: LongInt; // [-10000, 1000] default: -2602 mB
flReflectionsDelay: FLOAT; // [0.0, 0.3] default: 0.007 s
- lReverb: Longint; // [-10000, 2000] default: 200 mB
+ lReverb: LongInt; // [-10000, 2000] default: 200 mB
flReverbDelay: FLOAT; // [0.0, 0.1] default: 0.011 s
flDiffusion: FLOAT; // [0.0, 100.0] default: 100.0 %
flDensity: FLOAT; // [0.0, 100.0] default: 100.0 %
flHFReference: FLOAT; // [20.0, 20000.0] default: 5000.0 Hz
end;
- BASS_FXPARAMEQ = record
+ BASS_DX8_PARAMEQ = record
fCenter: FLOAT;
fBandwidth: FLOAT;
fGain: FLOAT;
end;
- BASS_FXREVERB = record
+ BASS_DX8_REVERB = record
fInGain: FLOAT; // [-96.0,0.0] default: 0.0 dB
fReverbMix: FLOAT; // [-96.0,0.0] default: 0.0 db
fReverbTime: FLOAT; // [0.001,3000.0] default: 1000.0 ms
@@ -703,7 +619,7 @@ type
end;
// callback function types
- STREAMPROC = function(handle: HSTREAM; buffer: Pointer; length: DWORD; user: DWORD): DWORD; stdcall;
+ STREAMPROC = function(handle: HSTREAM; buffer: Pointer; length: DWORD; user: Pointer): DWORD; stdcall;
{
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
@@ -716,17 +632,14 @@ type
the stream.
}
- STREAMFILEPROC = function(action, param1, param2, user: DWORD): DWORD; stdcall;
- {
- 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"
- }
+const
+ // special STREAMPROCs
+ STREAMPROC_DUMMY : STREAMPROC = STREAMPROC(0); // "dummy" stream
+ STREAMPROC_PUSH : STREAMPROC = STREAMPROC(-1); // push stream
+
+type
- DOWNLOADPROC = procedure(buffer: Pointer; length: DWORD; user: DWORD); stdcall;
+ DOWNLOADPROC = procedure(buffer: Pointer; length: DWORD; user: Pointer); stdcall;
{
Internet stream download callback function.
buffer : Buffer containing the downloaded data... NULL=end of download
@@ -734,7 +647,7 @@ type
user : The 'user' parameter value given when calling BASS_StreamCreateURL
}
- SYNCPROC = procedure(handle: HSYNC; channel, data: DWORD; user: DWORD); stdcall;
+ SYNCPROC = procedure(handle: HSYNC; channel, data: DWORD; user: Pointer); stdcall;
{
Sync callback function. NOTE: a sync callback function should be very
quick as other syncs cannot be processed until it has finished. If the
@@ -746,7 +659,7 @@ type
user : The 'user' parameter given when calling BASS_ChannelSetSync
}
- DSPPROC = procedure(handle: HDSP; channel: DWORD; buffer: Pointer; length: DWORD; user: DWORD); stdcall;
+ DSPPROC = procedure(handle: HDSP; channel: DWORD; buffer: Pointer; length: DWORD; user: Pointer); stdcall;
{
DSP callback function. NOTE: A DSP function should obviously be as quick
as possible... other DSP functions, streams and MOD musics can not be
@@ -758,7 +671,7 @@ type
user : The 'user' parameter given when calling BASS_ChannelSetDSP
}
- RECORDPROC = function(handle: HRECORD; buffer: Pointer; length: DWORD; user: DWORD): BOOL; stdcall;
+ RECORDPROC = function(handle: HRECORD; buffer: Pointer; length: DWORD; user: Pointer): BOOL; stdcall;
{
Recording callback function.
handle : The recording handle
@@ -773,24 +686,26 @@ type
const
bassdll = 'bass.dll';
-function BASS_SetConfig(option, value: DWORD): DWORD; stdcall; external bassdll;
+function BASS_SetConfig(option, value: DWORD): BOOL; stdcall; external bassdll;
function BASS_GetConfig(option: DWORD): DWORD; stdcall; external bassdll;
+function BASS_SetConfigPtr(option: DWORD; value: Pointer): BOOL; stdcall; external bassdll;
+function BASS_GetConfigPtr(option: DWORD): Pointer; stdcall; external bassdll;
function BASS_GetVersion: DWORD; stdcall; external bassdll;
-function BASS_GetDeviceDescription(device: DWORD): PChar; stdcall; external bassdll;
-function BASS_ErrorGetCode: Integer; stdcall; external bassdll;
-function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; stdcall; external bassdll;
+function BASS_ErrorGetCode: LongInt; stdcall; external bassdll;
+function BASS_GetDeviceInfo(device: DWORD; var info: BASS_DEVICEINFO): BOOL; stdcall; external bassdll;
+function BASS_Init(device: LongInt; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; stdcall; external bassdll;
function BASS_SetDevice(device: DWORD): BOOL; stdcall; external bassdll;
function BASS_GetDevice: DWORD; stdcall; external bassdll;
function BASS_Free: BOOL; stdcall; external bassdll;
function BASS_GetDSoundObject(obj: DWORD): Pointer; stdcall; external bassdll;
function BASS_GetInfo(var info: BASS_INFO): BOOL; stdcall; external bassdll;
-function BASS_Update: BOOL; stdcall; external bassdll;
+function BASS_Update(length: DWORD): BOOL; stdcall; external bassdll;
function BASS_GetCPU: FLOAT; stdcall; external bassdll;
function BASS_Start: BOOL; stdcall; external bassdll;
function BASS_Stop: BOOL; stdcall; external bassdll;
function BASS_Pause: BOOL; stdcall; external bassdll;
-function BASS_SetVolume(volume: DWORD): BOOL; stdcall; external bassdll;
-function BASS_GetVolume: Integer; stdcall; external bassdll;
+function BASS_SetVolume(volume: FLOAT): BOOL; stdcall; external bassdll;
+function BASS_GetVolume: FLOAT; stdcall; external bassdll;
function BASS_PluginLoad(filename: PChar; flags: DWORD): HPLUGIN; stdcall; external bassdll;
function BASS_PluginFree(handle: HPLUGIN): BOOL; stdcall; external bassdll;
@@ -801,78 +716,76 @@ function BASS_Get3DFactors(var distf, rollf, doppf: FLOAT): BOOL; stdcall; exter
function BASS_Set3DPosition(var pos, vel, front, top: BASS_3DVECTOR): BOOL; stdcall; external bassdll;
function BASS_Get3DPosition(var pos, vel, front, top: BASS_3DVECTOR): BOOL; stdcall; external bassdll;
procedure BASS_Apply3D; stdcall; external bassdll;
-function BASS_SetEAXParameters(env: Integer; vol, decay, damp: FLOAT): BOOL; stdcall; external bassdll;
+function BASS_SetEAXParameters(env: LongInt; vol, decay, damp: FLOAT): BOOL; stdcall; external bassdll;
function BASS_GetEAXParameters(var env: DWORD; var vol, decay, damp: FLOAT): BOOL; stdcall; external bassdll;
-function BASS_MusicLoad(mem: BOOL; f: Pointer; offset, length, flags, freq: DWORD): HMUSIC; stdcall; external bassdll;
+function BASS_MusicLoad(mem: BOOL; f: Pointer; offset: QWORD; length, flags, freq: DWORD): HMUSIC; stdcall; external bassdll;
function BASS_MusicFree(handle: HMUSIC): BOOL; stdcall; external bassdll;
-function BASS_MusicSetAttribute(handle: HMUSIC; attrib,value: DWORD): DWORD; stdcall; external bassdll;
-function BASS_MusicGetAttribute(handle: HMUSIC; attrib: DWORD): DWORD; stdcall; external bassdll;
-function BASS_MusicGetOrders(handle: HMUSIC): DWORD; stdcall; external bassdll;
-function BASS_MusicGetOrderPosition(handle: HMUSIC): DWORD; stdcall; external bassdll;
-
-function BASS_SampleLoad(mem: BOOL; f: Pointer; offset, length, max, flags: DWORD): HSAMPLE; stdcall; external bassdll;
-function BASS_SampleCreate(length, freq, chans, max, flags: DWORD): Pointer; stdcall; external bassdll;
-function BASS_SampleCreateDone: HSAMPLE; stdcall; external bassdll;
+
+function BASS_SampleLoad(mem: BOOL; f: Pointer; offset: QWORD; length, max, flags: DWORD): HSAMPLE; stdcall; external bassdll;
+function BASS_SampleCreate(length, freq, chans, max, flags: DWORD): HSAMPLE; stdcall; external bassdll;
function BASS_SampleFree(handle: HSAMPLE): BOOL; stdcall; external bassdll;
+function BASS_SampleSetData(handle: HSAMPLE; buffer: Pointer): BOOL; stdcall; external bassdll;
+function BASS_SampleGetData(handle: HSAMPLE; buffer: Pointer): BOOL; stdcall; external bassdll;
function BASS_SampleGetInfo(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; stdcall; external bassdll;
function BASS_SampleSetInfo(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; stdcall; external bassdll;
function BASS_SampleGetChannel(handle: HSAMPLE; onlynew: BOOL): HCHANNEL; stdcall; external bassdll;
function BASS_SampleGetChannels(handle: HSAMPLE; channels: Pointer): DWORD; stdcall; external bassdll;
function BASS_SampleStop(handle: HSAMPLE): BOOL; stdcall; external bassdll;
-function BASS_StreamCreate(freq, chans, flags: DWORD; proc: Pointer; user: DWORD): HSTREAM; stdcall; external bassdll;
-function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset, length, flags: DWORD): HSTREAM; stdcall; external bassdll;
-function BASS_StreamCreateURL(url: PChar; offset: DWORD; flags: DWORD; proc: DOWNLOADPROC; user: DWORD):HSTREAM; stdcall; external bassdll;
-function BASS_StreamCreateFileUser(buffered: BOOL; flags: DWORD; proc: STREAMFILEPROC; user: DWORD): HSTREAM; stdcall; external bassdll;
+function BASS_StreamCreate(freq, chans, flags: DWORD; proc: STREAMPROC; user: Pointer): HSTREAM; stdcall; external bassdll;
+function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset, length: QWORD; flags: DWORD): HSTREAM; stdcall; external bassdll;
+function BASS_StreamCreateURL(url: PAnsiChar; offset: DWORD; flags: DWORD; proc: DOWNLOADPROC; user: Pointer):HSTREAM; stdcall; external bassdll;
+function BASS_StreamCreateFileUser(system, flags: DWORD; var procs: BASS_FILEPROCS; user: Pointer): HSTREAM; stdcall; external bassdll;
function BASS_StreamFree(handle: HSTREAM): BOOL; stdcall; external bassdll;
-function BASS_StreamGetFilePosition(handle:HSTREAM; mode:DWORD) : DWORD;stdcall;external bassdll;
+function BASS_StreamGetFilePosition(handle: HSTREAM; mode: DWORD): QWORD; stdcall; external bassdll;
+function BASS_StreamPutData(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; stdcall; external bassdll;
+function BASS_StreamPutFileData(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; stdcall; external bassdll;
-function BASS_RecordGetDeviceDescription(devnum: DWORD):PChar;stdcall;external bassdll;
-function BASS_RecordInit(device: Integer):BOOL;stdcall;external bassdll;
+function BASS_RecordGetDeviceInfo(device: DWORD; var info: BASS_DEVICEINFO): BOOL; stdcall; external bassdll;
+function BASS_RecordInit(device: LongInt):BOOL; stdcall; external bassdll;
function BASS_RecordSetDevice(device: DWORD): BOOL; stdcall; external bassdll;
function BASS_RecordGetDevice: DWORD; stdcall; external bassdll;
-function BASS_RecordFree:BOOL;stdcall;external bassdll;
-function BASS_RecordGetInfo(var info:BASS_RECORDINFO):BOOL;stdcall;external bassdll;
-function BASS_RecordGetInputName(input:Integer):PChar;stdcall;external bassdll;
-function BASS_RecordSetInput(input:Integer; setting:DWORD):BOOL;stdcall;external bassdll;
-function BASS_RecordGetInput(input:Integer):DWORD;stdcall;external bassdll;
-function BASS_RecordStart(freq,chans,flags:DWORD; proc:RECORDPROC; user:DWORD):HRECORD;stdcall;external bassdll;
-
-function BASS_ChannelBytes2Seconds(handle: DWORD; pos: QWORD): FLOAT; stdcall;external bassdll;
-function BASS_ChannelSeconds2Bytes(handle: DWORD; pos: FLOAT): QWORD; stdcall;external bassdll;
+function BASS_RecordFree: BOOL; stdcall; external bassdll;
+function BASS_RecordGetInfo(var info: BASS_RECORDINFO): BOOL; stdcall; external bassdll;
+function BASS_RecordGetInputName(input: LongInt): PAnsiChar; stdcall; external bassdll;
+function BASS_RecordSetInput(input: LongInt; flags: DWORD; volume: FLOAT): BOOL; stdcall; external bassdll;
+function BASS_RecordGetInput(input: LongInt; var volume: FLOAT): DWORD; stdcall; external bassdll;
+function BASS_RecordStart(freq, chans, flags: DWORD; proc: RECORDPROC; user: Pointer): HRECORD; stdcall; external bassdll;
+
+function BASS_ChannelBytes2Seconds(handle: DWORD; pos: QWORD): Double; stdcall;external bassdll;
+function BASS_ChannelSeconds2Bytes(handle: DWORD; pos: Double): QWORD; stdcall;external bassdll;
function BASS_ChannelGetDevice(handle: DWORD): DWORD; stdcall; external bassdll;
function BASS_ChannelSetDevice(handle, device: DWORD): BOOL; stdcall; external bassdll;
function BASS_ChannelIsActive(handle: DWORD): DWORD; stdcall;external bassdll;
-function BASS_ChannelGetInfo(handle: DWORD; var info:BASS_CHANNELINFO):BOOL;stdcall;external bassdll;
-function BASS_ChannelGetTags(handle: HSTREAM; tags : DWORD): PChar; stdcall; external bassdll;
-function BASS_ChannelSetFlags(handle, flags: DWORD): BOOL; stdcall; external bassdll;
-function BASS_ChannelPreBuf(handle, length: DWORD): BOOL; stdcall; external bassdll;
+function BASS_ChannelGetInfo(handle: DWORD; var info: BASS_CHANNELINFO):BOOL;stdcall;external bassdll;
+function BASS_ChannelGetTags(handle: HSTREAM; tags: DWORD): PAnsiChar; stdcall; external bassdll;
+function BASS_ChannelFlags(handle, flags, mask: DWORD): DWORD; stdcall; external bassdll;
+function BASS_ChannelUpdate(handle, length: DWORD): BOOL; stdcall; external bassdll;
+function BASS_ChannelLock(handle: DWORD; lock: BOOL): BOOL; stdcall; external bassdll;
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL; stdcall; external bassdll;
function BASS_ChannelStop(handle: DWORD): BOOL; stdcall; external bassdll;
function BASS_ChannelPause(handle: DWORD): BOOL; stdcall; external bassdll;
-function BASS_ChannelSetAttributes(handle: DWORD; freq, volume, pan: Integer): BOOL; stdcall; external bassdll;
-function BASS_ChannelGetAttributes(handle: DWORD; var freq, volume: DWORD; var pan: Integer): BOOL; stdcall; external bassdll;
-function BASS_ChannelSlideAttributes(handle: DWORD; freq, volume, pan: Integer; time: DWORD): BOOL; stdcall; external bassdll;
-function BASS_ChannelIsSliding(handle: DWORD): DWORD; stdcall;external bassdll;
-function BASS_ChannelSet3DAttributes(handle: DWORD; mode: Integer; min, max: FLOAT; iangle, oangle, outvol: Integer): BOOL; stdcall; external bassdll;
+function BASS_ChannelSetAttribute(handle, attrib: DWORD; value: FLOAT): BOOL; stdcall; external bassdll;
+function BASS_ChannelGetAttribute(handle, attrib: DWORD; var value: FLOAT): BOOL; stdcall; external bassdll;
+function BASS_ChannelSlideAttribute(handle, attrib: DWORD; value: FLOAT; time: DWORD): BOOL; stdcall; external bassdll;
+function BASS_ChannelIsSliding(handle, attrib: DWORD): BOOL; stdcall;external bassdll;
+function BASS_ChannelSet3DAttributes(handle: DWORD; mode: LongInt; min, max: FLOAT; iangle, oangle, outvol: LongInt): BOOL; stdcall; external bassdll;
function BASS_ChannelGet3DAttributes(handle: DWORD; var mode: DWORD; var min, max: FLOAT; var iangle, oangle, outvol: DWORD): BOOL; stdcall; external bassdll;
function BASS_ChannelSet3DPosition(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; stdcall; external bassdll;
function BASS_ChannelGet3DPosition(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; stdcall; external bassdll;
-function BASS_ChannelGetLength(handle: DWORD): QWORD; stdcall; external bassdll;
-function BASS_ChannelSetPosition(handle: DWORD; pos: QWORD): BOOL; stdcall; external bassdll;
-function BASS_ChannelGetPosition(handle: DWORD): QWORD; stdcall; external bassdll;
+function BASS_ChannelGetLength(handle, mode: DWORD): QWORD; stdcall; external bassdll;
+function BASS_ChannelSetPosition(handle: DWORD; pos: QWORD; mode: DWORD): BOOL; stdcall; external bassdll;
+function BASS_ChannelGetPosition(handle, mode: DWORD): QWORD; stdcall; external bassdll;
function BASS_ChannelGetLevel(handle: DWORD): DWORD; stdcall; external bassdll;
function BASS_ChannelGetData(handle: DWORD; buffer: Pointer; length: DWORD): DWORD; stdcall; external bassdll;
-function BASS_ChannelSetSync(handle: DWORD; stype: DWORD; param: QWORD; proc: SYNCPROC; user: DWORD): HSYNC; stdcall; external bassdll;
+function BASS_ChannelSetSync(handle: DWORD; type_: DWORD; param: QWORD; proc: SYNCPROC; user: Pointer): HSYNC; stdcall; external bassdll;
function BASS_ChannelRemoveSync(handle: DWORD; sync: HSYNC): BOOL; stdcall; external bassdll;
-function BASS_ChannelSetDSP(handle: DWORD; proc: DSPPROC; user: DWORD; priority: Integer): HDSP; stdcall; external bassdll;
+function BASS_ChannelSetDSP(handle: DWORD; proc: DSPPROC; user: Pointer; priority: LongInt): HDSP; stdcall; external bassdll;
function BASS_ChannelRemoveDSP(handle: DWORD; dsp: HDSP): BOOL; stdcall; external bassdll;
-function BASS_ChannelSetEAXMix(handle: DWORD; mix: FLOAT): BOOL; stdcall; external bassdll;
-function BASS_ChannelGetEAXMix(handle: DWORD; var mix: FLOAT): BOOL; stdcall; external bassdll;
function BASS_ChannelSetLink(handle, chan: DWORD): BOOL; stdcall; external bassdll;
function BASS_ChannelRemoveLink(handle, chan: DWORD): BOOL; stdcall; external bassdll;
-function BASS_ChannelSetFX(handle, etype: DWORD; priority: Integer): HFX; stdcall; external bassdll;
+function BASS_ChannelSetFX(handle, type_: DWORD; priority: LongInt): HFX; stdcall; external bassdll;
function BASS_ChannelRemoveFX(handle: DWORD; fx: HFX): BOOL; stdcall; external bassdll;
function BASS_FXSetParameters(handle: HFX; par: Pointer): BOOL; stdcall; external bassdll;
@@ -881,8 +794,7 @@ function BASS_FXReset(handle: HFX): BOOL; stdcall; external bassdll;
function BASS_SPEAKER_N(n: DWORD): DWORD;
-function MAKEMUSICPOS(order,row: DWORD): DWORD;
-function BASS_SetEAXPreset(env: Integer): BOOL;
+function BASS_SetEAXPreset(env: LongInt): BOOL;
{
This function is defined in the implementation part of this unit.
It is not part of BASS.DLL but an extra function which makes it easier
@@ -898,12 +810,7 @@ begin
Result := n shl 24;
end;
-function MAKEMUSICPOS(order,row: DWORD): DWORD;
-begin
- Result := $80000000 or DWORD(MAKELONG(order,row));
-end;
-
-function BASS_SetEAXPreset(env: Integer): BOOL;
+function BASS_SetEAXPreset(env: LongInt): BOOL;
begin
case (env) of
EAX_ENVIRONMENT_GENERIC:
@@ -964,5 +871,4 @@ begin
end;
end.
-// END OF FILE /////////////////////////////////////////////////////////////////