3
Copyright (c) 1999-2013 Un4seen Developments Ltd.
5
See the BASS.CHM file for more detailed documentation
9
Copy BASS.PAS to the \LIB subdirectory of your Delphi path or your project dir
11
NOTE: Delphi users should use the BASS_UNICODE flag where possible
14
15/01/14 - PW - Attained C++Builder compatibility with MMSYSTEM.H in XE or UP
15
14/01/14 - PW - Updated to BASS 2.4 with thanks to Ian Luck
16
21/03/08 - DanB - Updated to BASS 2.3
17
06/06/07 - DaStr - Added $I GLScene.inc
18
06/07/04 - Mrqzzz- Updated to Bass 2.0 (Graham Kennedy)
19
27/08/02 - EG - Updated to Bass 1.6a
20
16/06/02 - EG - BASS 1.6
22
05/02/02 - EG - BASS 1.4 support
23
28/07/01 - EG - Initial version based on Ian Luck BASS 1.2
39
BASSVERSION = $204; // API version
40
BASSVERSIONTEXT = '2.4';
42
// Use these to test for error from functions that return a DWORD or QWORD
43
DW_ERROR = LongWord(-1); // -1 (DWORD)
44
QW_ERROR = Int64(-1); // -1 (QWORD)
46
// Error codes returned by BASS_ErrorGetCode()
47
BASS_OK = 0; // all is OK
48
BASS_ERROR_MEM = 1; // memory error
49
BASS_ERROR_FILEOPEN = 2; // can't open the file
50
BASS_ERROR_DRIVER = 3; // can't find a free sound driver
51
BASS_ERROR_BUFLOST = 4; // the sample buffer was lost
52
BASS_ERROR_HANDLE = 5; // invalid handle
53
BASS_ERROR_FORMAT = 6; // unsupported sample format
54
BASS_ERROR_POSITION = 7; // invalid position
55
BASS_ERROR_INIT = 8; // BASS_Init has not been successfully called
56
BASS_ERROR_START = 9; // BASS_Start has not been successfully called
57
BASS_ERROR_ALREADY = 14; // already initialized/paused/whatever
58
BASS_ERROR_NOCHAN = 18; // can't get a free channel
59
BASS_ERROR_ILLTYPE = 19; // an illegal type was specified
60
BASS_ERROR_ILLPARAM = 20; // an illegal parameter was specified
61
BASS_ERROR_NO3D = 21; // no 3D support
62
BASS_ERROR_NOEAX = 22; // no EAX support
63
BASS_ERROR_DEVICE = 23; // illegal device number
64
BASS_ERROR_NOPLAY = 24; // not playing
65
BASS_ERROR_FREQ = 25; // illegal sample rate
66
BASS_ERROR_NOTFILE = 27; // the stream is not a file stream
67
BASS_ERROR_NOHW = 29; // no hardware voices available
68
BASS_ERROR_EMPTY = 31; // the MOD music has no sequence data
69
BASS_ERROR_NONET = 32; // no internet connection could be opened
70
BASS_ERROR_CREATE = 33; // couldn't create the file
71
BASS_ERROR_NOFX = 34; // effects are not enabled
72
BASS_ERROR_NOTAVAIL = 37; // requested data is not available
73
BASS_ERROR_DECODE = 38; // the channel is a "decoding channel"
74
BASS_ERROR_DX = 39; // a sufficient DirectX version is not installed
75
BASS_ERROR_TIMEOUT = 40; // connection timedout
76
BASS_ERROR_FILEFORM = 41; // unsupported file format
77
BASS_ERROR_SPEAKER = 42; // unavailable speaker
78
BASS_ERROR_VERSION = 43; // invalid BASS version (used by add-ons)
79
BASS_ERROR_CODEC = 44; // codec is not available/supported
80
BASS_ERROR_ENDED = 45; // the channel/file has ended
81
BASS_ERROR_BUSY = 46; // the device is busy
82
BASS_ERROR_UNKNOWN = -1; // some other mystery problem
84
// BASS_SetConfig options
85
BASS_CONFIG_BUFFER = 0;
86
BASS_CONFIG_UPDATEPERIOD = 1;
87
BASS_CONFIG_GVOL_SAMPLE = 4;
88
BASS_CONFIG_GVOL_STREAM = 5;
89
BASS_CONFIG_GVOL_MUSIC = 6;
90
BASS_CONFIG_CURVE_VOL = 7;
91
BASS_CONFIG_CURVE_PAN = 8;
92
BASS_CONFIG_FLOATDSP = 9;
93
BASS_CONFIG_3DALGORITHM = 10;
94
BASS_CONFIG_NET_TIMEOUT = 11;
95
BASS_CONFIG_NET_BUFFER = 12;
96
BASS_CONFIG_PAUSE_NOPLAY = 13;
97
BASS_CONFIG_NET_PREBUF = 15;
98
BASS_CONFIG_NET_PASSIVE = 18;
99
BASS_CONFIG_REC_BUFFER = 19;
100
BASS_CONFIG_NET_PLAYLIST = 21;
101
BASS_CONFIG_MUSIC_VIRTUAL = 22;
102
BASS_CONFIG_VERIFY = 23;
103
BASS_CONFIG_UPDATETHREADS = 24;
104
BASS_CONFIG_DEV_BUFFER = 27;
105
BASS_CONFIG_VISTA_TRUEPOS = 30;
106
BASS_CONFIG_IOS_MIXAUDIO = 34;
107
BASS_CONFIG_DEV_DEFAULT = 36;
108
BASS_CONFIG_NET_READTIMEOUT = 37;
109
BASS_CONFIG_VISTA_SPEAKERS = 38;
110
BASS_CONFIG_IOS_SPEAKER = 39;
111
BASS_CONFIG_HANDLES = 41;
112
BASS_CONFIG_UNICODE = 42;
113
BASS_CONFIG_SRC = 43;
114
BASS_CONFIG_SRC_SAMPLE = 44;
115
BASS_CONFIG_ASYNCFILE_BUFFER = 45;
116
BASS_CONFIG_OGG_PRESCAN = 47;
118
// BASS_SetConfigPtr options
119
BASS_CONFIG_NET_AGENT = 16;
120
BASS_CONFIG_NET_PROXY = 17;
123
BASS_DEVICE_8BITS = 1; // 8 bit resolution, else 16 bit
124
BASS_DEVICE_MONO = 2; // mono, else stereo
125
BASS_DEVICE_3D = 4; // enable 3D functionality
127
If the BASS_DEVICE_3D flag is not specified when
128
initilizing BASS, then the 3D flags (BASS_SAMPLE_3D
129
and BASS_MUSIC_3D) are ignored when loading/creating
130
a sample/stream/music.
132
BASS_DEVICE_LATENCY = $100; // calculate device latency (BASS_INFO struct)
133
BASS_DEVICE_CPSPEAKERS = $400; // detect speakers via Windows control panel
134
BASS_DEVICE_SPEAKERS = $800; // force enabling of speaker assignment
135
BASS_DEVICE_NOSPEAKER = $1000; // ignore speaker arrangement
136
BASS_DEVICE_DMIX = $2000; // use ALSA "dmix" plugin
137
BASS_DEVICE_FREQ = $4000; // set device sample rate
139
// DirectSound interfaces (for use with BASS_GetDSoundObject)
140
BASS_OBJECT_DS = 1; // IDirectSound
141
BASS_OBJECT_DS3DL = 2; // IDirectSound3DListener
143
// BASS_DEVICEINFO flags
144
BASS_DEVICE_ENABLED = 1;
145
BASS_DEVICE_DEFAULT = 2;
146
BASS_DEVICE_INIT = 4;
148
// BASS_INFO flags (from DSOUND.H)
149
DSCAPS_CONTINUOUSRATE = $00000010; // supports all sample rates between min/maxrate
150
DSCAPS_EMULDRIVER = $00000020; // device does NOT have hardware DirectSound support
151
DSCAPS_CERTIFIED = $00000040; // device driver has been certified by Microsoft
153
The following flags tell what type of samples are
154
supported by HARDWARE mixing, all these formats are
155
supported by SOFTWARE mixing
157
DSCAPS_SECONDARYMONO = $00000100; // mono
158
DSCAPS_SECONDARYSTEREO = $00000200; // stereo
159
DSCAPS_SECONDARY8BIT = $00000400; // 8 bit
160
DSCAPS_SECONDARY16BIT = $00000800; // 16 bit
162
// BASS_RECORDINFO flags (from DSOUND.H)
163
DSCCAPS_EMULDRIVER = DSCAPS_EMULDRIVER; // device does NOT have hardware DirectSound recording support
164
DSCCAPS_CERTIFIED = DSCAPS_CERTIFIED; // device driver has been certified by Microsoft
166
// defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H)
167
{$IFDEF GLS_DELPHI_XE_DOWN}
168
WAVE_FORMAT_1M08 = $00000001; // 11.025 kHz, Mono, 8-bit
169
WAVE_FORMAT_1S08 = $00000002; // 11.025 kHz, Stereo, 8-bit
170
WAVE_FORMAT_1M16 = $00000004; // 11.025 kHz, Mono, 16-bit
171
WAVE_FORMAT_1S16 = $00000008; // 11.025 kHz, Stereo, 16-bit
172
WAVE_FORMAT_2M08 = $00000010; // 22.05 kHz, Mono, 8-bit
173
WAVE_FORMAT_2S08 = $00000020; // 22.05 kHz, Stereo, 8-bit
174
WAVE_FORMAT_2M16 = $00000040; // 22.05 kHz, Mono, 16-bit
175
WAVE_FORMAT_2S16 = $00000080; // 22.05 kHz, Stereo, 16-bit
176
WAVE_FORMAT_4M08 = $00000100; // 44.1 kHz, Mono, 8-bit
177
WAVE_FORMAT_4S08 = $00000200; // 44.1 kHz, Stereo, 8-bit
178
WAVE_FORMAT_4M16 = $00000400; // 44.1 kHz, Mono, 16-bit
179
WAVE_FORMAT_4S16 = $00000800; // 44.1 kHz, Stereo, 16-bit
181
BASS_SAMPLE_8BITS = 1; // 8 bit
182
BASS_SAMPLE_FLOAT = 256; // 32-bit floating-point
183
BASS_SAMPLE_MONO = 2; // mono
184
BASS_SAMPLE_LOOP = 4; // looped
185
BASS_SAMPLE_3D = 8; // 3D functionality
186
BASS_SAMPLE_SOFTWARE = 16; // not using hardware mixing
187
BASS_SAMPLE_MUTEMAX = 32; // mute at max distance (3D only)
188
BASS_SAMPLE_VAM = 64; // DX7 voice allocation & management
189
BASS_SAMPLE_FX = 128; // old implementation of DX8 effects
190
BASS_SAMPLE_OVER_VOL = $10000; // override lowest volume
191
BASS_SAMPLE_OVER_POS = $20000; // override longest playing
192
BASS_SAMPLE_OVER_DIST = $30000; // override furthest from listener (3D only)
194
BASS_STREAM_PRESCAN = $20000; // enable pin-point seeking/length (MP3/MP2/MP1)
195
BASS_MP3_SETPOS = BASS_STREAM_PRESCAN;
196
BASS_STREAM_AUTOFREE = $40000; // automatically free the stream when it stop/ends
197
BASS_STREAM_RESTRATE = $80000; // restrict the download rate of internet file streams
198
BASS_STREAM_BLOCK = $100000;// download/play internet file stream in small blocks
199
BASS_STREAM_DECODE = $200000;// don't play the stream, only decode (BASS_ChannelGetData)
200
BASS_STREAM_STATUS = $800000;// give server status info (HTTP/ICY tags) in DOWNLOADPROC
202
BASS_MUSIC_FLOAT = BASS_SAMPLE_FLOAT; // 32-bit floating-point
203
BASS_MUSIC_MONO = BASS_SAMPLE_MONO; // force mono mixing (less CPU usage)
204
BASS_MUSIC_LOOP = BASS_SAMPLE_LOOP; // loop music
205
BASS_MUSIC_3D = BASS_SAMPLE_3D; // enable 3D functionality
206
BASS_MUSIC_FX = BASS_SAMPLE_FX; // enable old implementation of DX8 effects
207
BASS_MUSIC_AUTOFREE = BASS_STREAM_AUTOFREE; // automatically free the music when it stop/ends
208
BASS_MUSIC_DECODE = BASS_STREAM_DECODE; // don't play the music, only decode (BASS_ChannelGetData)
209
BASS_MUSIC_PRESCAN = BASS_STREAM_PRESCAN; // calculate playback length
210
BASS_MUSIC_CALCLEN = BASS_MUSIC_PRESCAN;
211
BASS_MUSIC_RAMP = $200; // normal ramping
212
BASS_MUSIC_RAMPS = $400; // sensitive ramping
213
BASS_MUSIC_SURROUND = $800; // surround sound
214
BASS_MUSIC_SURROUND2 = $1000; // surround sound (mode 2)
215
BASS_MUSIC_FT2MOD = $2000; // play .MOD as FastTracker 2 does
216
BASS_MUSIC_PT1MOD = $4000; // play .MOD as ProTracker 1 does
217
BASS_MUSIC_NONINTER = $10000; // non-interpolated sample mixing
218
BASS_MUSIC_SINCINTER = $800000; // sinc interpolated sample mixing
219
BASS_MUSIC_POSRESET = $8000; // stop all notes when moving position
220
BASS_MUSIC_POSRESETEX = $400000; // stop all notes and reset bmp/etc when moving position
221
BASS_MUSIC_STOPBACK = $80000; // stop the music on a backwards jump effect
222
BASS_MUSIC_NOSAMPLE = $100000; // don't load the samples
224
// Speaker assignment flags
225
BASS_SPEAKER_FRONT = $1000000; // front speakers
226
BASS_SPEAKER_REAR = $2000000; // rear/side speakers
227
BASS_SPEAKER_CENLFE = $3000000; // center & LFE speakers (5.1)
228
BASS_SPEAKER_REAR2 = $4000000; // rear center speakers (7.1)
229
BASS_SPEAKER_LEFT = $10000000; // modifier: left
230
BASS_SPEAKER_RIGHT = $20000000; // modifier: right
231
BASS_SPEAKER_FRONTLEFT = BASS_SPEAKER_FRONT or BASS_SPEAKER_LEFT;
232
BASS_SPEAKER_FRONTRIGHT = BASS_SPEAKER_FRONT or BASS_SPEAKER_RIGHT;
233
BASS_SPEAKER_REARLEFT = BASS_SPEAKER_REAR or BASS_SPEAKER_LEFT;
234
BASS_SPEAKER_REARRIGHT = BASS_SPEAKER_REAR or BASS_SPEAKER_RIGHT;
235
BASS_SPEAKER_CENTER = BASS_SPEAKER_CENLFE or BASS_SPEAKER_LEFT;
236
BASS_SPEAKER_LFE = BASS_SPEAKER_CENLFE or BASS_SPEAKER_RIGHT;
237
BASS_SPEAKER_REAR2LEFT = BASS_SPEAKER_REAR2 or BASS_SPEAKER_LEFT;
238
BASS_SPEAKER_REAR2RIGHT = BASS_SPEAKER_REAR2 or BASS_SPEAKER_RIGHT;
240
BASS_ASYNCFILE = $40000000;
241
BASS_UNICODE = $80000000;
243
BASS_RECORD_PAUSE = $8000; // start recording paused
245
// DX7 voice allocation & management flags
246
BASS_VAM_HARDWARE = 1;
248
Play the sample in hardware. If no hardware voices are available then
249
the "play" call will fail
251
BASS_VAM_SOFTWARE = 2;
253
Play the sample in software (ie. non-accelerated). No other VAM flags
254
may be used together with this flag.
257
// DX7 voice management flags
259
These flags enable hardware resource stealing... if the hardware has no
260
available voices, a currently playing buffer will be stopped to make room
261
for the new buffer. NOTE: only samples loaded/created with the
262
BASS_SAMPLE_VAM flag are considered for termination by the DX7 voice
265
BASS_VAM_TERM_TIME = 4;
267
If there are no free hardware voices, the buffer to be terminated will be
268
the one with the least time left to play.
270
BASS_VAM_TERM_DIST = 8;
272
If there are no free hardware voices, the buffer to be terminated will be
273
one that was loaded/created with the BASS_SAMPLE_MUTEMAX flag and is
275
it's max distance. If there are no buffers that match this criteria, then
276
the "play" call will fail.
278
BASS_VAM_TERM_PRIO = 16;
280
If there are no free hardware voices, the buffer to be terminated will be
281
the one with the lowest priority.
284
// BASS_CHANNELINFO types
285
BASS_CTYPE_SAMPLE = 1;
286
BASS_CTYPE_RECORD = 2;
287
BASS_CTYPE_STREAM = $10000;
288
BASS_CTYPE_STREAM_OGG = $10002;
289
BASS_CTYPE_STREAM_MP1 = $10003;
290
BASS_CTYPE_STREAM_MP2 = $10004;
291
BASS_CTYPE_STREAM_MP3 = $10005;
292
BASS_CTYPE_STREAM_AIFF = $10006;
293
BASS_CTYPE_STREAM_WAV = $40000; // WAVE flag, LOWORD=codec
294
BASS_CTYPE_STREAM_WAV_PCM = $50001;
295
BASS_CTYPE_STREAM_WAV_FLOAT = $50003;
296
BASS_CTYPE_MUSIC_MOD = $20000;
297
BASS_CTYPE_MUSIC_MTM = $20001;
298
BASS_CTYPE_MUSIC_S3M = $20002;
299
BASS_CTYPE_MUSIC_XM = $20003;
300
BASS_CTYPE_MUSIC_IT = $20004;
301
BASS_CTYPE_MUSIC_MO3 = $00100; // MO3 flag
304
BASS_3DMODE_NORMAL = 0; // normal 3D processing
305
BASS_3DMODE_RELATIVE = 1; // position is relative to the listener
307
The channel's 3D position (position/velocity/
308
orientation) are relative to the listener. When the
309
listener's position/velocity/orientation is changed
310
with BASS_Set3DPosition, the channel's position
311
relative to the listener does not change.
313
BASS_3DMODE_OFF = 2; // no 3D processing
315
Turn off 3D processing on the channel, the sound will
316
be played in the center.
319
// software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM)
320
BASS_3DALG_DEFAULT = 0;
322
default algorithm (currently translates to BASS_3DALG_OFF)
326
Uses normal left and right panning. The vertical axis is ignored except
327
for scaling of volume due to distance. Doppler shift and volume scaling
328
are still applied, but the 3D filtering is not performed. This is the
329
most CPU efficient software implementation, but provides no virtual 3D
330
audio effect. Head Related Transfer Function processing will not be done.
331
Since only normal stereo panning is used, a channel using this algorithm
332
may be accelerated by a 2D hardware voice if no free 3D hardware voices
337
This algorithm gives the highest quality 3D audio effect, but uses more
338
CPU. Requires Windows 98 2nd Edition or Windows 2000 that uses WDM
339
drivers, if this mode is not available then BASS_3DALG_OFF will be used
342
BASS_3DALG_LIGHT = 3;
344
This algorithm gives a good 3D audio effect, and uses less CPU than the
345
FULL mode. Requires Windows 98 2nd Edition or Windows 2000 that uses WDM
346
drivers, if this mode is not available then BASS_3DALG_OFF will be used
350
// EAX environments, use with BASS_SetEAXParameters
351
EAX_ENVIRONMENT_GENERIC = 0;
352
EAX_ENVIRONMENT_PADDEDCELL = 1;
353
EAX_ENVIRONMENT_ROOM = 2;
354
EAX_ENVIRONMENT_BATHROOM = 3;
355
EAX_ENVIRONMENT_LIVINGROOM = 4;
356
EAX_ENVIRONMENT_STONEROOM = 5;
357
EAX_ENVIRONMENT_AUDITORIUM = 6;
358
EAX_ENVIRONMENT_CONCERTHALL = 7;
359
EAX_ENVIRONMENT_CAVE = 8;
360
EAX_ENVIRONMENT_ARENA = 9;
361
EAX_ENVIRONMENT_HANGAR = 10;
362
EAX_ENVIRONMENT_CARPETEDHALLWAY = 11;
363
EAX_ENVIRONMENT_HALLWAY = 12;
364
EAX_ENVIRONMENT_STONECORRIDOR = 13;
365
EAX_ENVIRONMENT_ALLEY = 14;
366
EAX_ENVIRONMENT_FOREST = 15;
367
EAX_ENVIRONMENT_CITY = 16;
368
EAX_ENVIRONMENT_MOUNTAINS = 17;
369
EAX_ENVIRONMENT_QUARRY = 18;
370
EAX_ENVIRONMENT_PLAIN = 19;
371
EAX_ENVIRONMENT_PARKINGLOT = 20;
372
EAX_ENVIRONMENT_SEWERPIPE = 21;
373
EAX_ENVIRONMENT_UNDERWATER = 22;
374
EAX_ENVIRONMENT_DRUGGED = 23;
375
EAX_ENVIRONMENT_DIZZY = 24;
376
EAX_ENVIRONMENT_PSYCHOTIC = 25;
377
// total number of environments
378
EAX_ENVIRONMENT_COUNT = 26;
380
BASS_STREAMPROC_END = $80000000; // end of user stream flag
382
// BASS_StreamCreateFileUser file systems
383
STREAMFILE_NOBUFFER = 0;
384
STREAMFILE_BUFFER = 1;
385
STREAMFILE_BUFFERPUSH = 2;
387
// BASS_StreamPutFileData options
388
BASS_FILEDATA_END = 0; // end & close the file
390
// BASS_StreamGetFilePosition modes
391
BASS_FILEPOS_CURRENT = 0;
392
BASS_FILEPOS_DECODE = BASS_FILEPOS_CURRENT;
393
BASS_FILEPOS_DOWNLOAD = 1;
394
BASS_FILEPOS_END = 2;
395
BASS_FILEPOS_START = 3;
396
BASS_FILEPOS_CONNECTED = 4;
397
BASS_FILEPOS_BUFFER = 5;
399
// BASS_ChannelSetSync types
401
Sync types (with BASS_ChannelSetSync() "param" and
402
SYNCPROC "data" definitions) & flags.
406
Sync when a channel reaches a position.
407
param: position in bytes
412
Sync when a channel reaches the end.
418
Sync when metadata is received in a stream.
420
data : pointer to the metadata
424
Sync when an attribute slide is completed.
426
data : the type of slide completed (one of the BASS_SLIDE_xxx values)
430
Sync when playback has stalled.
432
data : 0=stalled, 1=resumed
434
BASS_SYNC_DOWNLOAD = 7;
436
Sync when downloading of an internet (or "buffered" user file) stream has ended.
442
Sync when a channel is freed.
446
BASS_SYNC_SETPOS = 11;
448
Sync when a channel's position is set.
450
data : 0 = playback buffer not flushed, 1 = playback buffer flushed
452
BASS_SYNC_MUSICPOS = 10;
454
Sync when a MOD music reaches an order:row position.
455
param: LOWORD=order (0=first, -1=all) HIWORD=row (0=first, -1=all)
456
data : LOWORD=order HIWORD=row
458
BASS_SYNC_MUSICINST = 1;
460
Sync when an instrument (sample for the non-instrument based formats)
461
is played in a MOD music (not including retrigs).
462
param: LOWORD=instrument (1=first) HIWORD=note (0=c0...119=b9, -1=all)
463
data : LOWORD=note HIWORD=volume (0-64)
465
BASS_SYNC_MUSICFX = 3;
467
Sync when the "sync" effect (XM/MTM/MOD: E8x/Wxx, IT/S3M: S2x) is used.
468
param: 0:data=pos, 1:data="x" value
469
data : param=0: LOWORD=order HIWORD=row, param=1: "x" value
471
BASS_SYNC_OGG_CHANGE = 12;
472
{ FLAG: post a Windows message (instead of callback)
473
When using a window message "callback", the message to post is given in the "proc"
474
parameter of BASS_ChannelSetSync, and is posted to the window specified in the BASS_Init
475
call. The message parameters are: WPARAM = data, LPARAM = user.
477
BASS_SYNC_MIXTIME = $40000000; // FLAG: sync at mixtime, else at playtime
478
BASS_SYNC_ONETIME = $80000000; // FLAG: sync only once, else continuously
480
// BASS_ChannelIsActive return values
481
BASS_ACTIVE_STOPPED = 0;
482
BASS_ACTIVE_PLAYING = 1;
483
BASS_ACTIVE_STALLED = 2;
484
BASS_ACTIVE_PAUSED = 3;
486
// Channel attributes
487
BASS_ATTRIB_FREQ = 1;
490
BASS_ATTRIB_EAXMIX = 4;
491
BASS_ATTRIB_NOBUFFER = 5;
494
BASS_ATTRIB_MUSIC_AMPLIFY = $100;
495
BASS_ATTRIB_MUSIC_PANSEP = $101;
496
BASS_ATTRIB_MUSIC_PSCALER = $102;
497
BASS_ATTRIB_MUSIC_BPM = $103;
498
BASS_ATTRIB_MUSIC_SPEED = $104;
499
BASS_ATTRIB_MUSIC_VOL_GLOBAL = $105;
500
BASS_ATTRIB_MUSIC_VOL_CHAN = $200; // + channel #
501
BASS_ATTRIB_MUSIC_VOL_INST = $300; // + instrument #
503
// BASS_ChannelGetData flags
504
BASS_DATA_AVAILABLE = 0; // query how much data is buffered
505
BASS_DATA_FLOAT = $40000000; // flag: return floating-point sample data
506
BASS_DATA_FFT256 = $80000000; // 256 sample FFT
507
BASS_DATA_FFT512 = $80000001; // 512 FFT
508
BASS_DATA_FFT1024 = $80000002; // 1024 FFT
509
BASS_DATA_FFT2048 = $80000003; // 2048 FFT
510
BASS_DATA_FFT4096 = $80000004; // 4096 FFT
511
BASS_DATA_FFT8192 = $80000005; // 8192 FFT
512
BASS_DATA_FFT16384 = $80000006; // 16384 FFT
513
BASS_DATA_FFT_INDIVIDUAL = $10; // FFT flag: FFT for each channel, else all combined
514
BASS_DATA_FFT_NOWINDOW = $20; // FFT flag: no Hanning window
515
BASS_DATA_FFT_REMOVEDC = $40; // FFT flag: pre-remove DC bias
516
BASS_DATA_FFT_COMPLEX = $80; // FFT flag: return complex data
518
// BASS_ChannelGetTags types : what's returned
519
BASS_TAG_ID3 = 0; // ID3v1 tags : TAG_ID3 structure
520
BASS_TAG_ID3V2 = 1; // ID3v2 tags : variable length block
521
BASS_TAG_OGG = 2; // OGG comments : series of null-terminated UTF-8 strings
522
BASS_TAG_HTTP = 3; // HTTP headers : series of null-terminated ANSI strings
523
BASS_TAG_ICY = 4; // ICY headers : series of null-terminated ANSI strings
524
BASS_TAG_META = 5; // ICY metadata : ANSI string
525
BASS_TAG_APE = 6; // APEv2 tags : series of null-terminated UTF-8 strings
526
BASS_TAG_MP4 = 7; // MP4/iTunes metadata : series of null-terminated UTF-8 strings
527
BASS_TAG_VENDOR = 9; // OGG encoder : UTF-8 string
528
BASS_TAG_LYRICS3 = 10; // Lyric3v2 tag : ASCII string
529
BASS_TAG_CA_CODEC = 11; // CoreAudio codec info : TAG_CA_CODEC structure
530
BASS_TAG_MF = 13; // Media Foundation tags : series of null-terminated UTF-8 strings
531
BASS_TAG_WAVEFORMAT = 14; // WAVE format : WAVEFORMATEEX structure
532
BASS_TAG_RIFF_INFO = $100; // RIFF "INFO" tags : series of null-terminated ANSI strings
533
BASS_TAG_RIFF_BEXT = $101; // RIFF/BWF "bext" tags : TAG_BEXT structure
534
BASS_TAG_RIFF_CART = $102; // RIFF/BWF "cart" tags : TAG_CART structure
535
BASS_TAG_RIFF_DISP = $103; // RIFF "DISP" text tag : ANSI string
536
BASS_TAG_APE_BINARY = $1000; // + index #, binary APEv2 tag : TAG_APE_BINARY structure
537
BASS_TAG_MUSIC_NAME = $10000; // MOD music name : ANSI string
538
BASS_TAG_MUSIC_MESSAGE = $10001; // MOD message : ANSI string
539
BASS_TAG_MUSIC_ORDERS = $10002; // MOD order list : BYTE array of pattern numbers
540
BASS_TAG_MUSIC_INST = $10100; // + instrument #, MOD instrument name : ANSI string
541
BASS_TAG_MUSIC_SAMPLE = $10300; // + sample #, MOD sample name : ANSI string
543
// BASS_ChannelGetLength/GetPosition/SetPosition modes
544
BASS_POS_BYTE = 0; // byte position
545
BASS_POS_MUSIC_ORDER = 1; // order.row position, MAKELONG(order,row)
546
BASS_POS_OGG = 3; // OGG bitstream number
547
BASS_POS_DECODE = $10000000; // flag: get the decoding (not playing) position
548
BASS_POS_DECODETO = $20000000; // flag: decode to the position instead of seeking
550
// BASS_RecordSetInput flags
551
BASS_INPUT_OFF = $10000;
552
BASS_INPUT_ON = $20000;
554
BASS_INPUT_TYPE_MASK = $FF000000;
555
BASS_INPUT_TYPE_UNDEF = $00000000;
556
BASS_INPUT_TYPE_DIGITAL = $01000000;
557
BASS_INPUT_TYPE_LINE = $02000000;
558
BASS_INPUT_TYPE_MIC = $03000000;
559
BASS_INPUT_TYPE_SYNTH = $04000000;
560
BASS_INPUT_TYPE_CD = $05000000;
561
BASS_INPUT_TYPE_PHONE = $06000000;
562
BASS_INPUT_TYPE_SPEAKER = $07000000;
563
BASS_INPUT_TYPE_WAVE = $08000000;
564
BASS_INPUT_TYPE_AUX = $09000000;
565
BASS_INPUT_TYPE_ANALOG = $0A000000;
567
BASS_FX_DX8_CHORUS = 0;
568
BASS_FX_DX8_COMPRESSOR = 1;
569
BASS_FX_DX8_DISTORTION = 2;
570
BASS_FX_DX8_ECHO = 3;
571
BASS_FX_DX8_FLANGER = 4;
572
BASS_FX_DX8_GARGLE = 5;
573
BASS_FX_DX8_I3DL2REVERB = 6;
574
BASS_FX_DX8_PARAMEQ = 7;
575
BASS_FX_DX8_REVERB = 8;
577
BASS_DX8_PHASE_NEG_180 = 0;
578
BASS_DX8_PHASE_NEG_90 = 1;
579
BASS_DX8_PHASE_ZERO = 2;
580
BASS_DX8_PHASE_90 = 3;
581
BASS_DX8_PHASE_180 = 4;
589
HMUSIC = DWORD; // MOD music handle
590
HSAMPLE = DWORD; // sample handle
591
HCHANNEL = DWORD; // playing sample's channel handle
592
HSTREAM = DWORD; // sample stream handle
593
HRECORD = DWORD; // recording handle
594
HSYNC = DWORD; // synchronizer handle
595
HDSP = DWORD; // DSP handle
596
HFX = DWORD; // DX8 effect handle
597
HPLUGIN = DWORD; // Plugin handle
599
// Device info structure
600
BASS_DEVICEINFO = record
601
name: PAnsiChar; // description
602
driver: PAnsiChar; // driver
607
flags: DWORD; // device capabilities (DSCAPS_xxx flags)
608
hwsize: DWORD; // size of total device hardware memory
609
hwfree: DWORD; // size of free device hardware memory
610
freesam: DWORD; // number of free sample slots in the hardware
611
free3d: DWORD; // number of free 3D sample slots in the hardware
612
minrate: DWORD; // min sample rate supported by the hardware
613
maxrate: DWORD; // max sample rate supported by the hardware
614
eax: BOOL; // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used)
615
minbuf: DWORD; // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY)
616
dsver: DWORD; // DirectSound version
617
latency: DWORD; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY)
618
initflags: DWORD; // BASS_Init "flags" parameter
619
speakers: DWORD; // number of speakers available
620
freq: DWORD; // current output rate
623
// Recording device info structure
624
BASS_RECORDINFO = record
625
flags: DWORD; // device capabilities (DSCCAPS_xxx flags)
626
formats: DWORD; // supported standard formats (WAVE_FORMAT_xxx flags)
627
inputs: DWORD; // number of inputs
628
singlein: BOOL; // only 1 input can be set at a time
629
freq: DWORD; // current input rate
632
// Sample info structure
634
freq: DWORD; // default playback rate
635
volume: FLOAT; // default volume (0-100)
636
pan: FLOAT; // default pan (-100=left, 0=middle, 100=right)
637
flags: DWORD; // BASS_SAMPLE_xxx flags
638
length: DWORD; // length (in samples, not bytes)
639
max: DWORD; // maximum simultaneous playbacks
640
origres: DWORD; // original resolution
641
chans: DWORD; // number of channels
642
mingap: DWORD; // minimum gap (ms) between creating channels
644
The following are the sample's default 3D attributes
645
(if the sample is 3D, BASS_SAMPLE_3D is in flags)
646
see BASS_ChannelSet3DAttributes
648
mode3d: DWORD; // BASS_3DMODE_xxx mode
649
mindist: FLOAT; // minimum distance
650
maxdist: FLOAT; // maximum distance
651
iangle: DWORD; // angle of inside projection cone
652
oangle: DWORD; // angle of outside projection cone
653
outvol: FLOAT; // delta-volume outside the projection cone
655
The following are the defaults used if the sample uses the DirectX 7
656
voice allocation/management features.
658
vam: DWORD; // voice allocation/management flags (BASS_VAM_xxx)
659
priority: DWORD; // priority (0=lowest, $ffffffff=highest)
662
// Channel info structure
663
BASS_CHANNELINFO = record
664
freq: DWORD; // default playback rate
665
chans: DWORD; // channels
666
flags: DWORD; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags
667
ctype: DWORD; // type of channel
668
origres: DWORD; // original resolution
669
plugin: HPLUGIN; // plugin
670
sample: HSAMPLE; // sample
674
filename: PChar; // filename
677
BASS_PLUGINFORM = record
678
ctype: DWORD; // channel type
682
name: PAnsiChar; // format description
683
exts: PAnsiChar; // file extension filter (*.ext1;*.ext2;etc...)
685
PBASS_PLUGINFORMS = ^TBASS_PLUGINFORMS;
686
TBASS_PLUGINFORMS = array[0..maxInt div sizeOf(BASS_PLUGINFORM) - 1] of BASS_PLUGINFORM;
688
BASS_PLUGININFO = record
689
version: DWORD; // version (same form as BASS_GetVersion)
690
formatc: DWORD; // number of formats
691
formats: PBASS_PLUGINFORMS; // the array of formats
693
PBASS_PLUGININFO = ^BASS_PLUGININFO;
695
// 3D vector (for 3D positions/velocities/orientations)
696
BASS_3DVECTOR = record
697
x: FLOAT; // +=right, -=left
698
y: FLOAT; // +=up, -=down
699
z: FLOAT; // +=front, -=behind
702
// User file stream callback functions
703
FILECLOSEPROC = procedure(user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
704
FILELENPROC = function(user: Pointer): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
705
FILEREADPROC = function(buffer: Pointer; length: DWORD; user: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
706
FILESEEKPROC = function(offset: QWORD; user: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
708
BASS_FILEPROCS = record
709
close: FILECLOSEPROC;
715
// ID3v1 tag structure
717
id: Array[0..2] of AnsiChar;
718
title: Array[0..29] of AnsiChar;
719
artist: Array[0..29] of AnsiChar;
720
album: Array[0..29] of AnsiChar;
721
year: Array[0..3] of AnsiChar;
722
comment: Array[0..29] of AnsiChar;
726
// Binary APEv2 tag structure
727
TAG_APE_BINARY = record
733
// BWF "bext" tag structure
734
TAG_BEXT = packed record
735
Description: Array[0..255] of AnsiChar; // description
736
Originator: Array[0..31] of AnsiChar; // name of the originator
737
OriginatorReference: Array[0..31] of AnsiChar; // reference of the originator
738
OriginationDate: Array[0..9] of AnsiChar; // date of creation (yyyy-mm-dd)
739
OriginationTime: Array[0..7] of AnsiChar; // time of creation (hh-mm-ss)
740
TimeReference: QWORD; // first sample count since midnight (little-endian)
741
Version: Word; // BWF version (little-endian)
742
UMID: Array[0..63] of Byte; // SMPTE UMID
743
Reserved: Array[0..189] of Byte;
744
CodingHistory: Array of AnsiChar; // history
747
BASS_DX8_CHORUS = record
752
lWaveform: DWORD; // 0=triangle, 1=sine
754
lPhase: DWORD; // BASS_DX8_PHASE_xxx
757
BASS_DX8_COMPRESSOR = record
766
BASS_DX8_DISTORTION = record
769
fPostEQCenterFrequency: FLOAT;
770
fPostEQBandwidth: FLOAT;
771
fPreLowpassCutoff: FLOAT;
774
BASS_DX8_ECHO = record
782
BASS_DX8_FLANGER = record
787
lWaveform: DWORD; // 0=triangle, 1=sine
789
lPhase: DWORD; // BASS_DX8_PHASE_xxx
792
BASS_DX8_GARGLE = record
793
dwRateHz: DWORD; // Rate of modulation in hz
794
dwWaveShape: DWORD; // 0=triangle, 1=square
797
BASS_DX8_I3DL2REVERB = record
798
lRoom: LongInt; // [-10000, 0] default: -1000 mB
799
lRoomHF: LongInt; // [-10000, 0] default: 0 mB
800
flRoomRolloffFactor: FLOAT; // [0.0, 10.0] default: 0.0
801
flDecayTime: FLOAT; // [0.1, 20.0] default: 1.49s
802
flDecayHFRatio: FLOAT; // [0.1, 2.0] default: 0.83
803
lReflections: LongInt; // [-10000, 1000] default: -2602 mB
804
flReflectionsDelay: FLOAT; // [0.0, 0.3] default: 0.007 s
805
lReverb: LongInt; // [-10000, 2000] default: 200 mB
806
flReverbDelay: FLOAT; // [0.0, 0.1] default: 0.011 s
807
flDiffusion: FLOAT; // [0.0, 100.0] default: 100.0 %
808
flDensity: FLOAT; // [0.0, 100.0] default: 100.0 %
809
flHFReference: FLOAT; // [20.0, 20000.0] default: 5000.0 Hz
812
BASS_DX8_PARAMEQ = record
818
BASS_DX8_REVERB = record
819
fInGain: FLOAT; // [-96.0,0.0] default: 0.0 dB
820
fReverbMix: FLOAT; // [-96.0,0.0] default: 0.0 db
821
fReverbTime: FLOAT; // [0.001,3000.0] default: 1000.0 ms
822
fHighFreqRTRatio: FLOAT; // [0.001,0.999] default: 0.001
825
// callback function types
826
STREAMPROC = function(handle: HSTREAM; buffer: Pointer; length: DWORD; user: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
828
User stream callback function. NOTE: A stream function should obviously be as
829
quick as possible, other streams (and MOD musics) can't be mixed until
831
handle : The stream that needs writing
832
buffer : Buffer to write the samples in
833
length : Number of bytes to write
834
user : The 'user' parameter value given when calling BASS_StreamCreate
835
RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end
840
// special STREAMPROCs
841
STREAMPROC_DUMMY = Pointer(0); // "dummy" stream
842
STREAMPROC_PUSH = Pointer(-1); // push stream
847
User file stream callback function.
848
action : The action to perform, one of BASS_FILE_xxx values.
849
param1 : Depends on "action"
850
param2 : Depends on "action"
851
user : The 'user' parameter value given when calling BASS_StreamCreate
852
RETURN : Depends on "action"
855
DOWNLOADPROC = procedure(buffer: Pointer; length: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
857
Internet stream download callback function.
858
buffer : Buffer containing the downloaded data... NULL=end of download
859
length : Number of bytes in the buffer
860
user : The 'user' parameter value given when calling BASS_StreamCreateURL
863
SYNCPROC = procedure(handle: HSYNC; channel, data: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
865
Sync callback function. NOTE: a sync callback function should be very
866
quick as other syncs cannot be processed until it has finished. If the
867
sync is a "mixtime" sync, then other streams and MOD musics can not be
868
mixed until it's finished either.
869
handle : The sync that has occured
870
channel: Channel that the sync occured in
871
data : Additional data associated with the sync's occurance
872
user : The 'user' parameter given when calling BASS_ChannelSetSync
875
DSPPROC = procedure(handle: HDSP; channel: DWORD; buffer: Pointer; length: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
877
DSP callback function. NOTE: A DSP function should obviously be as quick
878
as possible... other DSP functions, streams and MOD musics can not be
879
processed until it's finished.
880
handle : The DSP handle
881
channel: Channel that the DSP is being applied to
882
buffer : Buffer to apply the DSP to
883
length : Number of bytes in the buffer
884
user : The 'user' parameter given when calling BASS_ChannelSetDSP
887
RECORDPROC = function(handle: HRECORD; buffer: Pointer; length: DWORD; user: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
889
Recording callback function.
890
handle : The recording handle
891
buffer : Buffer containing the recorded sample data
892
length : Number of bytes
893
user : The 'user' parameter value given when calling BASS_RecordStart
894
RETURN : TRUE = continue recording, FALSE = stop
901
bassdll = 'bass.dll';
904
bassdll = 'libbass.so';
907
bassdll = 'libbass.dylib';
911
BASS_SetConfig: function(option, value: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
912
BASS_GetConfig: function(option: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
913
BASS_SetConfigPtr: function(option: DWORD; value: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
914
BASS_GetConfigPtr: function(option: DWORD): Pointer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
915
BASS_GetVersion: function(): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
916
BASS_ErrorGetCode: function(): LongInt; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
917
BASS_GetDeviceInfo: function(device: DWORD; var info: BASS_DEVICEINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
919
BASS_Init: function(device: LongInt; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; stdcall;// external bassdll;
921
BASS_Init: function(device: LongInt; freq, flags: DWORD; win: Pointer; clsid: Pointer): BOOL; cdecl; //external bassdll;
923
BASS_SetDevice: function(device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
924
BASS_GetDevice: function():DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
925
BASS_Free: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
927
BASS_GetDSoundObject: function(obj: DWORD): Pointer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
929
BASS_GetInfo: function(var info: BASS_INFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
930
BASS_Update: function(length: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
931
BASS_GetCPU: function():FLOAT; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
932
BASS_Start: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
933
BASS_Stop: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
934
BASS_Pause: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
935
BASS_SetVolume: function(volume: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
936
BASS_GetVolume: function():FLOAT; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
938
BASS_PluginLoad: function(filename: PChar; flags: DWORD): HPLUGIN; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
939
BASS_PluginFree: function(handle: HPLUGIN): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
940
BASS_PluginGetInfo: function(handle: HPLUGIN): PBASS_PLUGININFO; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
942
BASS_Set3DFactors: function(distf, rollf, doppf: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
943
BASS_Get3DFactors: function(var distf, rollf, doppf: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
944
BASS_Set3DPosition: function(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
945
BASS_Get3DPosition: function(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
946
BASS_Apply3D: procedure(); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
948
BASS_SetEAXParameters: function(env: LongInt; vol, decay, damp: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
949
BASS_GetEAXParameters: function(var env: DWORD; var vol, decay, damp: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
952
BASS_MusicLoad: function(mem: BOOL; f: Pointer; offset: QWORD; length, flags, freq: DWORD): HMUSIC; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
953
BASS_MusicFree: function(handle: HMUSIC): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
955
BASS_SampleLoad: function(mem: BOOL; f: Pointer; offset: QWORD; length, max, flags: DWORD): HSAMPLE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
956
BASS_SampleCreate: function(length, freq, chans, max, flags: DWORD): HSAMPLE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
957
BASS_SampleFree: function(handle: HSAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
958
BASS_SampleSetData: function(handle: HSAMPLE; buffer: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
959
BASS_SampleGetData: function(handle: HSAMPLE; buffer: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
960
BASS_SampleGetInfo: function(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
961
BASS_SampleSetInfo: function(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
962
BASS_SampleGetChannel: function(handle: HSAMPLE; onlynew: BOOL): HCHANNEL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
963
BASS_SampleGetChannels: function(handle: HSAMPLE; channels: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
964
BASS_SampleStop: function(handle: HSAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
966
BASS_StreamCreate: function(freq, chans, flags: DWORD; proc: STREAMPROC; user: Pointer): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
967
BASS_StreamCreateFile: function(mem: BOOL; f: Pointer; offset, length: QWORD; flags: DWORD): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
968
BASS_StreamCreateURL: function(url: PAnsiChar; offset: DWORD; flags: DWORD; proc: DOWNLOADPROC; user: Pointer):HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
969
BASS_StreamCreateFileUser: function(system, flags: DWORD; var procs: BASS_FILEPROCS; user: Pointer): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
970
BASS_StreamFree: function(handle: HSTREAM): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
971
BASS_StreamGetFilePosition: function(handle: HSTREAM; mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
972
BASS_StreamPutData: function(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
973
BASS_StreamPutFileData: function(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
975
BASS_RecordGetDeviceInfo: function(device: DWORD; var info: BASS_DEVICEINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
976
BASS_RecordInit: function(device: LongInt):BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
977
BASS_RecordSetDevice: function(device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
978
BASS_RecordGetDevice: function():DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
979
BASS_RecordFree: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
980
BASS_RecordGetInfo: function(var info: BASS_RECORDINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
981
BASS_RecordGetInputName: function(input: LongInt): PAnsiChar; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
982
BASS_RecordSetInput: function(input: LongInt; flags: DWORD; volume: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
983
BASS_RecordGetInput: function(input: LongInt; var volume: FLOAT): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
984
BASS_RecordStart: function(freq, chans, flags: DWORD; proc: RECORDPROC; user: Pointer): HRECORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
986
BASS_ChannelBytes2Seconds: function(handle: DWORD; pos: QWORD): Double; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
987
BASS_ChannelSeconds2Bytes: function(handle: DWORD; pos: Double): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
988
BASS_ChannelGetDevice: function(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
989
BASS_ChannelSetDevice: function(handle, device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
990
BASS_ChannelIsActive: function(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
991
BASS_ChannelGetInfo: function(handle: DWORD; var info: BASS_CHANNELINFO):BOOL;{$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
992
BASS_ChannelGetTags: function(handle: HSTREAM; tags: DWORD): PAnsiChar; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
993
BASS_ChannelFlags: function(handle, flags, mask: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
994
BASS_ChannelUpdate: function(handle, length: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
995
BASS_ChannelLock: function(handle: DWORD; lock: BOOL): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
996
BASS_ChannelPlay: function(handle: DWORD; restart: BOOL): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
997
BASS_ChannelStop: function(handle: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
998
BASS_ChannelPause: function(handle: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
999
BASS_ChannelSetAttribute: function(handle, attrib: DWORD; value: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1000
BASS_ChannelGetAttribute: function(handle, attrib: DWORD; var value: FLOAT): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1001
BASS_ChannelSlideAttribute: function(handle, attrib: DWORD; value: FLOAT; time: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1002
BASS_ChannelIsSliding: function(handle, attrib: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
1003
BASS_ChannelSet3DAttributes: function(handle: DWORD; mode: LongInt; min, max: FLOAT; iangle, oangle, outvol: LongInt): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1004
BASS_ChannelGet3DAttributes: function(handle: DWORD; var mode: DWORD; var min, max: FLOAT; var iangle, oangle, outvol: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1005
BASS_ChannelSet3DPosition: function(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1006
BASS_ChannelGet3DPosition: function(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1007
BASS_ChannelGetLength: function(handle, mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1008
BASS_ChannelSetPosition: function(handle: DWORD; pos: QWORD; mode: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1009
BASS_ChannelGetPosition: function(handle, mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1010
BASS_ChannelGetLevel: function(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1011
BASS_ChannelGetData: function(handle: DWORD; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1012
BASS_ChannelSetSync: function(handle: DWORD; type_: DWORD; param: QWORD; proc: SYNCPROC; user: Pointer): HSYNC; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1013
BASS_ChannelRemoveSync: function(handle: DWORD; sync: HSYNC): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1014
BASS_ChannelSetDSP: function(handle: DWORD; proc: DSPPROC; user: Pointer; priority: LongInt): HDSP; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1015
BASS_ChannelRemoveDSP: function(handle: DWORD; dsp: HDSP): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1016
BASS_ChannelSetLink: function(handle, chan: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1017
BASS_ChannelRemoveLink: function(handle, chan: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1018
BASS_ChannelSetFX: function(handle, type_: DWORD; priority: LongInt): HFX; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1019
BASS_ChannelRemoveFX: function(handle: DWORD; fx: HFX): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1021
BASS_FXSetParameters: function(handle: HFX; par: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1022
BASS_FXGetParameters: function(handle: HFX; par: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1023
BASS_FXReset: function(handle: HFX): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
1026
function BASS_SPEAKER_N(n: DWORD): DWORD;
1028
function BASS_SetEAXPreset(env: LongInt): BOOL;
1030
This function is defined in the implementation part of this unit.
1031
It is not part of BASS.DLL but an extra function which makes it easier
1032
to set the predefined EAX environments.
1033
env : a EAX_ENVIRONMENT_xxx constant
1038
TBASSModuleHandle = TLibHandle;
1040
function BASS_Load(LibName: PChar ): Boolean;
1041
procedure BASS_UnLoad;
1042
function BASS_IsLoaded:boolean;
1046
INVALID_MODULEHANDLE_VALUE = TBASSModuleHandle(0);
1049
BASSHandle: TBASSModuleHandle;
1051
function BASS_SPEAKER_N(n: DWORD): DWORD;
1057
function BASS_SetEAXPreset(env: LongInt): BOOL;
1060
EAX_ENVIRONMENT_GENERIC:
1061
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_GENERIC, 0.5, 1.493, 0.5);
1062
EAX_ENVIRONMENT_PADDEDCELL:
1063
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PADDEDCELL, 0.25, 0.1, 0);
1064
EAX_ENVIRONMENT_ROOM:
1065
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ROOM, 0.417, 0.4, 0.666);
1066
EAX_ENVIRONMENT_BATHROOM:
1067
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_BATHROOM, 0.653, 1.499, 0.166);
1068
EAX_ENVIRONMENT_LIVINGROOM:
1069
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_LIVINGROOM, 0.208, 0.478, 0);
1070
EAX_ENVIRONMENT_STONEROOM:
1071
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONEROOM, 0.5, 2.309, 0.888);
1072
EAX_ENVIRONMENT_AUDITORIUM:
1073
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_AUDITORIUM, 0.403, 4.279, 0.5);
1074
EAX_ENVIRONMENT_CONCERTHALL:
1075
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CONCERTHALL, 0.5, 3.961, 0.5);
1076
EAX_ENVIRONMENT_CAVE:
1077
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CAVE, 0.5, 2.886, 1.304);
1078
EAX_ENVIRONMENT_ARENA:
1079
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ARENA, 0.361, 7.284, 0.332);
1080
EAX_ENVIRONMENT_HANGAR:
1081
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HANGAR, 0.5, 10.0, 0.3);
1082
EAX_ENVIRONMENT_CARPETEDHALLWAY:
1083
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153, 0.259, 2.0);
1084
EAX_ENVIRONMENT_HALLWAY:
1085
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HALLWAY, 0.361, 1.493, 0);
1086
EAX_ENVIRONMENT_STONECORRIDOR:
1087
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONECORRIDOR, 0.444, 2.697, 0.638);
1088
EAX_ENVIRONMENT_ALLEY:
1089
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ALLEY, 0.25, 1.752, 0.776);
1090
EAX_ENVIRONMENT_FOREST:
1091
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_FOREST, 0.111, 3.145, 0.472);
1092
EAX_ENVIRONMENT_CITY:
1093
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CITY, 0.111, 2.767, 0.224);
1094
EAX_ENVIRONMENT_MOUNTAINS:
1095
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_MOUNTAINS, 0.194, 7.841, 0.472);
1096
EAX_ENVIRONMENT_QUARRY:
1097
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_QUARRY, 1, 1.499, 0.5);
1098
EAX_ENVIRONMENT_PLAIN:
1099
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PLAIN, 0.097, 2.767, 0.224);
1100
EAX_ENVIRONMENT_PARKINGLOT:
1101
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PARKINGLOT, 0.208, 1.652, 1.5);
1102
EAX_ENVIRONMENT_SEWERPIPE:
1103
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_SEWERPIPE, 0.652, 2.886, 0.25);
1104
EAX_ENVIRONMENT_UNDERWATER:
1105
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_UNDERWATER, 1, 1.499, 0);
1106
EAX_ENVIRONMENT_DRUGGED:
1107
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DRUGGED, 0.875, 8.392, 1.388);
1108
EAX_ENVIRONMENT_DIZZY:
1109
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DIZZY, 0.139, 17.234, 0.666);
1110
EAX_ENVIRONMENT_PSYCHOTIC:
1111
Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PSYCHOTIC, 0.486, 7.563, 0.806);
1118
function BASS_Load(LibName: PChar ): Boolean;
1122
// Make sure the previous library is unloaded
1125
// If no library name given, use the default library names
1126
if LibName = nil then
1130
BASSHandle := LoadLibrary(LibName);
1131
if BASSHandle = INVALID_MODULEHANDLE_VALUE then
1134
// Get all the function addresses from the library
1135
BASS_SetConfig := getprocaddress(basshandle,'BASS_SetConfig');
1136
BASS_GetConfig := getprocaddress(basshandle,'BASS_GetConfig');
1137
BASS_SetConfigPtr := getprocaddress(basshandle,'BASS_SetConfigPtr');
1138
BASS_GetConfigPtr := getprocaddress(basshandle,'BASS_GetConfigPtr');
1139
BASS_GetVersion := getprocaddress(basshandle,'BASS_GetVersion');
1140
BASS_ErrorGetCode := getprocaddress(basshandle,'BASS_ErrorGetCode');
1141
BASS_GetDeviceInfo := getprocaddress(basshandle,'BASS_GetDeviceInfo');
1143
BASS_Init := getprocaddress(basshandle,'BASS_Init');
1145
BASS_Init := getprocaddress(basshandle,'BASS_Init_');
1147
BASS_SetDevice := getprocaddress(basshandle,'BASS_SetDevice');
1148
BASS_GetDevice := getprocaddress(basshandle,'BASS_GetDevice');
1149
BASS_Free := getprocaddress(basshandle,'BASS_Free');
1151
BASS_GetDSoundObject := getprocaddress(basshandle,'BASS_GetDSoundObject');
1153
BASS_GetInfo := getprocaddress(basshandle,'BASS_GetInfo');
1154
BASS_Update := getprocaddress(basshandle,'BASS_Update');
1155
BASS_GetCPU := getprocaddress(basshandle,'BASS_GetCPU');
1156
BASS_Start := getprocaddress(basshandle,'BASS_Start');
1157
BASS_Stop := getprocaddress(basshandle,'BASS_Stop');
1158
BASS_Pause := getprocaddress(basshandle,'BASS_Pause');
1159
BASS_SetVolume := getprocaddress(basshandle,'BASS_SetVolume');
1160
BASS_GetVolume := getprocaddress(basshandle,'BASS_GetVolume');
1162
BASS_PluginLoad := getprocaddress(basshandle, 'BASS_PluginLoad');
1163
BASS_PluginFree := getprocaddress(basshandle, 'BASS_PluginFree');
1164
BASS_PluginGetInfo := getprocaddress(basshandle, 'BASS_PluginGetInfo');
1166
BASS_Set3DFactors := getprocaddress(basshandle,'BASS_Set3DFactors');
1167
BASS_Get3DFactors := getprocaddress(basshandle,'BASS_Get3DFactors');
1168
BASS_Set3DPosition := getprocaddress(basshandle,'BASS_Set3DPosition');
1169
BASS_Get3DPosition := getprocaddress(basshandle,'BASS_Get3DPosition');
1170
BASS_Apply3D := getprocaddress(basshandle,'BASS_Apply3D');
1172
BASS_SetEAXParameters := getprocaddress(basshandle,'BASS_SetEAXParameters');
1173
BASS_GetEAXParameters := getprocaddress(basshandle,'BASS_GetEAXParameters');
1176
BASS_MusicLoad := getprocaddress(basshandle,'BASS_MusicLoad');
1177
BASS_MusicFree := getprocaddress(basshandle,'BASS_MusicFree');
1179
BASS_SampleLoad := getprocaddress(basshandle,'BASS_SampleLoad');
1180
BASS_SampleCreate := getprocaddress(basshandle,'BASS_SampleCreate');
1181
BASS_SampleFree := getprocaddress(basshandle,'BASS_SampleFree');
1182
BASS_SampleSetData := getprocaddress(basshandle,'BASS_SampleSetData');
1183
BASS_SampleGetData := getprocaddress(basshandle,'BASS_SampleGetData');
1184
BASS_SampleGetInfo := getprocaddress(basshandle,'BASS_SampleGetInfo');
1185
BASS_SampleSetInfo := getprocaddress(basshandle,'BASS_SampleSetInfo');
1186
BASS_SampleGetChannel := getprocaddress(basshandle,'BASS_SampleGetChannel');
1187
BASS_SampleGetChannels := getprocaddress(basshandle,'BASS_SampleGetChannels');
1188
BASS_SampleStop := getprocaddress(basshandle,'BASS_SampleStop');
1190
BASS_StreamCreate := getprocaddress(basshandle,'BASS_StreamCreate');
1191
BASS_StreamCreateFile := getprocaddress(basshandle,'BASS_StreamCreateFile');
1192
BASS_StreamCreateURL := getprocaddress(basshandle,'BASS_StreamCreateURL');
1193
BASS_StreamCreateFileUser := getprocaddress(basshandle,'BASS_StreamCreateFileUser');
1194
BASS_StreamFree := getprocaddress(basshandle,'BASS_StreamFree');
1195
BASS_StreamGetFilePosition := getprocaddress(basshandle,'BASS_StreamGetFilePosition');
1196
BASS_StreamPutData := getprocaddress(basshandle,'BASS_StreamPutData');
1197
BASS_StreamPutFileData := getprocaddress(basshandle,'BASS_StreamPutFileData');
1199
BASS_RecordGetDeviceInfo := getprocaddress(basshandle,'BASS_RecordGetDeviceInfo');
1200
BASS_RecordInit := getprocaddress(basshandle,'BASS_RecordInit');
1201
BASS_RecordSetDevice := getprocaddress(basshandle,'BASS_RecordSetDevice');
1202
BASS_RecordGetDevice := getprocaddress(basshandle,'BASS_RecordGetDevice');
1203
BASS_RecordFree := getprocaddress(basshandle,'BASS_RecordFree');
1204
BASS_RecordGetInfo := getprocaddress(basshandle,'BASS_RecordGetInfo');
1205
BASS_RecordGetInputName := getprocaddress(basshandle,'BASS_RecordGetInputName');
1206
BASS_RecordSetInput := getprocaddress(basshandle,'BASS_RecordSetInput');
1207
BASS_RecordGetInput := getprocaddress(basshandle,'BASS_RecordGetInput');
1208
BASS_RecordStart := getprocaddress(basshandle,'BASS_RecordStart');
1210
BASS_ChannelBytes2Seconds := getprocaddress(basshandle,'BASS_ChannelBytes2Seconds');
1211
BASS_ChannelSeconds2Bytes := getprocaddress(basshandle,'BASS_ChannelSeconds2Bytes');
1212
BASS_ChannelGetDevice := getprocaddress(basshandle,'BASS_ChannelGetDevice');
1213
BASS_ChannelSetDevice := getprocaddress(basshandle,'BASS_ChannelSetDevice');
1214
BASS_ChannelIsActive := getprocaddress(basshandle,'BASS_ChannelIsActive');
1215
BASS_ChannelGetInfo := getprocaddress(basshandle,'BASS_ChannelGetInfo');
1216
BASS_ChannelGetTags := getprocaddress(basshandle,'BASS_ChannelGetTags');
1217
BASS_ChannelFlags := getprocaddress(basshandle,'BASS_ChannelFlags');
1218
BASS_ChannelUpdate := getprocaddress(basshandle,'BASS_ChannelUpdate');
1219
BASS_ChannelLock := getprocaddress(basshandle,'BASS_ChannelLock');
1220
BASS_ChannelPlay := getprocaddress(basshandle,'BASS_ChannelPlay');
1221
BASS_ChannelStop := getprocaddress(basshandle,'BASS_ChannelStop');
1222
BASS_ChannelPause := getprocaddress(basshandle,'BASS_ChannelPause');
1223
BASS_ChannelSetAttribute := getprocaddress(basshandle,'BASS_ChannelSetAttribute');
1224
BASS_ChannelGetAttribute := getprocaddress(basshandle,'BASS_ChannelGetAttribute');
1225
BASS_ChannelSlideAttribute := getprocaddress(basshandle,'BASS_ChannelSlideAttribute');
1226
BASS_ChannelIsSliding := getprocaddress(basshandle,'BASS_ChannelIsSliding');
1227
BASS_ChannelSet3DAttributes := getprocaddress(basshandle,'BASS_ChannelSet3DAttributes');
1228
BASS_ChannelGet3DAttributes := getprocaddress(basshandle,'BASS_ChannelGet3DAttributes');
1229
BASS_ChannelSet3DPosition := getprocaddress(basshandle,'BASS_ChannelSet3DPosition');
1230
BASS_ChannelGet3DPosition := getprocaddress(basshandle,'BASS_ChannelGet3DPosition');
1231
BASS_ChannelGetLength :=getprocaddress(basshandle,'BASS_ChannelGetLength');
1232
BASS_ChannelSetPosition := getprocaddress(basshandle,'BASS_ChannelSetPosition');
1233
BASS_ChannelGetPosition := getprocaddress(basshandle,'BASS_ChannelGetPosition');
1234
BASS_ChannelGetLevel := getprocaddress(basshandle,'BASS_ChannelGetLevel');
1235
BASS_ChannelGetData := getprocaddress(basshandle,'BASS_ChannelGetData');
1236
BASS_ChannelSetSync := getprocaddress(basshandle,'BASS_ChannelSetSync');
1237
BASS_ChannelRemoveSync := getprocaddress(basshandle,'BASS_ChannelRemoveSync');
1238
BASS_ChannelSetDSP := getprocaddress(basshandle,'BASS_ChannelSetDSP');
1239
BASS_ChannelRemoveDSP := getprocaddress(basshandle,'BASS_ChannelRemoveDSP');
1240
BASS_ChannelSetLink := getprocaddress(basshandle,'BASS_ChannelSetLink');
1241
BASS_ChannelRemoveLink := getprocaddress(basshandle,'BASS_ChannelRemoveLink');
1242
BASS_ChannelSetFX := getprocaddress(basshandle,'BASS_ChannelSetFX');
1243
BASS_ChannelRemoveFX := getprocaddress(basshandle,'BASS_ChannelRemoveFX');
1245
BASS_FXSetParameters := getprocaddress(basshandle,'BASS_FXSetParameters');
1246
BASS_FXGetParameters := getprocaddress(basshandle,'BASS_FXGetParameters');
1247
BASS_FXReset := getprocaddress(basshandle,'BASS_FXReset');
1252
procedure BASS_Unload;
1254
// Only free the library if it was already loaded
1255
if BASSHandle <> INVALID_MODULEHANDLE_VALUE then
1256
FreeLibrary(BASSHandle);
1257
BASSHandle := INVALID_MODULEHANDLE_VALUE;
1260
Function BASS_IsLoaded:boolean;
1262
result := BASSHandle <> INVALID_MODULEHANDLE_VALUE;
1267
BASSHandle := INVALID_MODULEHANDLE_VALUE;
1270
// Make sure the library is unloaded