BASS.Import.pas 66 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406
  1. unit BASS.Import;
  2. (*
  3. BASS 2.4 Delphi unit
  4. Copyright (c) 1999-2021 Un4seen Developments Ltd.
  5. http://www.un4seen.com/music/, free for freeware
  6. See the BASS.CHM file for more detailed documentation
  7. How to install
  8. --------------
  9. Copy BASS.PAS to the \LIB subdirectory of your Delphi path or your project dir
  10. NOTE: Delphi users should use the BASS_UNICODE flag where possible
  11. *)
  12. interface
  13. uses
  14. Winapi.Windows;
  15. // libraries
  16. const
  17. {$IFDEF MSWINDOWS}
  18. {$IFDEF WIN32}
  19. bassdll = 'bass32.dll';
  20. {$ELSE}
  21. bassdll = 'bass64.dll';
  22. {$ENDIF}
  23. {$ENDIF}
  24. {$IFDEF LINUX}
  25. bassdll = 'libbass.so';
  26. {$ENDIF}
  27. {$IFDEF MACOS}
  28. bassdll = 'libbass.dylib';
  29. {$ENDIF}
  30. const
  31. BASSVERSION = $204; // API version
  32. BASSVERSIONTEXT = '2.4';
  33. // Use these to test for error from functions that return a DWORD or QWORD
  34. DW_ERROR = Cardinal(-1); // -1 (DWORD)
  35. QW_ERROR = Int64(-1); // -1 (QWORD)
  36. // Error codes returned by BASS_ErrorGetCode()
  37. BASS_OK = 0; // all is OK
  38. BASS_ERROR_MEM = 1; // memory error
  39. BASS_ERROR_FILEOPEN = 2; // can't open the file
  40. BASS_ERROR_DRIVER = 3; // can't find a free sound driver
  41. BASS_ERROR_BUFLOST = 4; // the sample buffer was lost
  42. BASS_ERROR_HANDLE = 5; // invalid handle
  43. BASS_ERROR_FORMAT = 6; // unsupported sample format
  44. BASS_ERROR_POSITION = 7; // invalid position
  45. BASS_ERROR_INIT = 8; // BASS_Init has not been successfully called
  46. BASS_ERROR_START = 9; // BASS_Start has not been successfully called
  47. BASS_ERROR_SSL = 10; // SSL/HTTPS support isn't available
  48. BASS_ERROR_REINIT = 11; // device needs to be reinitialized
  49. BASS_ERROR_ALREADY = 14; // already initialized/paused/whatever
  50. BASS_ERROR_NOTAUDIO = 17; // file does not contain audio
  51. BASS_ERROR_NOCHAN = 18; // can't get a free channel
  52. BASS_ERROR_ILLTYPE = 19; // an illegal type was specified
  53. BASS_ERROR_ILLPARAM = 20; // an illegal parameter was specified
  54. BASS_ERROR_NO3D = 21; // no 3D support
  55. BASS_ERROR_NOEAX = 22; // no EAX support
  56. BASS_ERROR_DEVICE = 23; // illegal device number
  57. BASS_ERROR_NOPLAY = 24; // not playing
  58. BASS_ERROR_FREQ = 25; // illegal sample rate
  59. BASS_ERROR_NOTFILE = 27; // the stream is not a file stream
  60. BASS_ERROR_NOHW = 29; // no hardware voices available
  61. BASS_ERROR_EMPTY = 31; // the file has no sample data
  62. BASS_ERROR_NONET = 32; // no internet connection could be opened
  63. BASS_ERROR_CREATE = 33; // couldn't create the file
  64. BASS_ERROR_NOFX = 34; // effects are not available
  65. BASS_ERROR_NOTAVAIL = 37; // requested data/action is not available
  66. BASS_ERROR_DECODE = 38; // the channel is/isn't a "decoding channel"
  67. BASS_ERROR_DX = 39; // a sufficient DirectX version is not installed
  68. BASS_ERROR_TIMEOUT = 40; // connection timedout
  69. BASS_ERROR_FILEFORM = 41; // unsupported file format
  70. BASS_ERROR_SPEAKER = 42; // unavailable speaker
  71. BASS_ERROR_VERSION = 43; // invalid BASS version (used by add-ons)
  72. BASS_ERROR_CODEC = 44; // codec is not available/supported
  73. BASS_ERROR_ENDED = 45; // the channel/file has ended
  74. BASS_ERROR_BUSY = 46; // the device is busy
  75. BASS_ERROR_UNSTREAMABLE = 47; // unstreamable file
  76. BASS_ERROR_PROTOCOL = 48; // unsupported protocol
  77. BASS_ERROR_DENIED = 49; // access denied
  78. BASS_ERROR_UNKNOWN = -1; // some other mystery problem
  79. // BASS_SetConfig options
  80. BASS_CONFIG_BUFFER = 0;
  81. BASS_CONFIG_UPDATEPERIOD = 1;
  82. BASS_CONFIG_GVOL_SAMPLE = 4;
  83. BASS_CONFIG_GVOL_STREAM = 5;
  84. BASS_CONFIG_GVOL_MUSIC = 6;
  85. BASS_CONFIG_CURVE_VOL = 7;
  86. BASS_CONFIG_CURVE_PAN = 8;
  87. BASS_CONFIG_FLOATDSP = 9;
  88. BASS_CONFIG_3DALGORITHM = 10;
  89. BASS_CONFIG_NET_TIMEOUT = 11;
  90. BASS_CONFIG_NET_BUFFER = 12;
  91. BASS_CONFIG_PAUSE_NOPLAY = 13;
  92. BASS_CONFIG_NET_PREBUF = 15;
  93. BASS_CONFIG_NET_PASSIVE = 18;
  94. BASS_CONFIG_REC_BUFFER = 19;
  95. BASS_CONFIG_NET_PLAYLIST = 21;
  96. BASS_CONFIG_MUSIC_VIRTUAL = 22;
  97. BASS_CONFIG_VERIFY = 23;
  98. BASS_CONFIG_UPDATETHREADS = 24;
  99. BASS_CONFIG_DEV_BUFFER = 27;
  100. BASS_CONFIG_REC_LOOPBACK = 28;
  101. BASS_CONFIG_VISTA_TRUEPOS = 30;
  102. BASS_CONFIG_IOS_SESSION = 34;
  103. BASS_CONFIG_IOS_MIXAUDIO = 34;
  104. BASS_CONFIG_DEV_DEFAULT = 36;
  105. BASS_CONFIG_NET_READTIMEOUT = 37;
  106. BASS_CONFIG_VISTA_SPEAKERS = 38;
  107. BASS_CONFIG_IOS_SPEAKER = 39;
  108. BASS_CONFIG_MF_DISABLE = 40;
  109. BASS_CONFIG_HANDLES = 41;
  110. BASS_CONFIG_UNICODE = 42;
  111. BASS_CONFIG_SRC = 43;
  112. BASS_CONFIG_SRC_SAMPLE = 44;
  113. BASS_CONFIG_ASYNCFILE_BUFFER = 45;
  114. BASS_CONFIG_OGG_PRESCAN = 47;
  115. BASS_CONFIG_MF_VIDEO = 48;
  116. BASS_CONFIG_AIRPLAY = 49;
  117. BASS_CONFIG_DEV_NONSTOP = 50;
  118. BASS_CONFIG_IOS_NOCATEGORY = 51;
  119. BASS_CONFIG_VERIFY_NET = 52;
  120. BASS_CONFIG_DEV_PERIOD = 53;
  121. BASS_CONFIG_FLOAT = 54;
  122. BASS_CONFIG_NET_SEEK = 56;
  123. BASS_CONFIG_AM_DISABLE = 58;
  124. BASS_CONFIG_NET_PLAYLIST_DEPTH = 59;
  125. BASS_CONFIG_NET_PREBUF_WAIT = 60;
  126. BASS_CONFIG_ANDROID_SESSIONID = 62;
  127. BASS_CONFIG_WASAPI_PERSIST = 65;
  128. BASS_CONFIG_REC_WASAPI = 66;
  129. BASS_CONFIG_ANDROID_AAUDIO = 67;
  130. BASS_CONFIG_SAMPLE_ONEHANDLE = 69;
  131. BASS_CONFIG_NET_META = 71;
  132. BASS_CONFIG_NET_RESTRATE = 72;
  133. BASS_CONFIG_REC_DEFAULT = 73;
  134. BASS_CONFIG_NORAMP = 74;
  135. // BASS_SetConfigPtr options
  136. BASS_CONFIG_NET_AGENT = 16;
  137. BASS_CONFIG_NET_PROXY = 17;
  138. BASS_CONFIG_ANDROID_JAVAVM = 63;
  139. BASS_CONFIG_LIBSSL = 64;
  140. BASS_CONFIG_FILENAME = 75;
  141. BASS_CONFIG_THREAD = $40000000; // flag: thread-specific setting
  142. // BASS_CONFIG_IOS_SESSION flags
  143. BASS_IOS_SESSION_MIX = 1;
  144. BASS_IOS_SESSION_DUCK = 2;
  145. BASS_IOS_SESSION_AMBIENT = 4;
  146. BASS_IOS_SESSION_SPEAKER = 8;
  147. BASS_IOS_SESSION_DISABLE = 16;
  148. BASS_IOS_SESSION_DEACTIVATE = 32;
  149. BASS_IOS_SESSION_AIRPLAY = 64;
  150. BASS_IOS_SESSION_BTHFP = 128;
  151. BASS_IOS_SESSION_BTA2DP = $100;
  152. // BASS_Init flags
  153. BASS_DEVICE_8BITS = 1; // unused
  154. BASS_DEVICE_MONO = 2; // mono
  155. BASS_DEVICE_3D = 4; // unused
  156. BASS_DEVICE_16BITS = 8; // limit output to 16-bit
  157. BASS_DEVICE_REINIT = 128; // reinitialize
  158. BASS_DEVICE_LATENCY = $100; // unused
  159. BASS_DEVICE_CPSPEAKERS = $400; // unused
  160. BASS_DEVICE_SPEAKERS = $800; // force enabling of speaker assignment
  161. BASS_DEVICE_NOSPEAKER = $1000; // ignore speaker arrangement
  162. BASS_DEVICE_DMIX = $2000; // use ALSA "dmix" plugin
  163. BASS_DEVICE_FREQ = $4000; // set device sample rate
  164. BASS_DEVICE_STEREO = $8000; // limit output to stereo
  165. BASS_DEVICE_AUDIOTRACK = $20000; // use AudioTrack output
  166. BASS_DEVICE_DSOUND = $40000; // use DirectSound output
  167. BASS_DEVICE_SOFTWARE = $80000; // disable hardware/fastpath output
  168. // DirectSound interfaces (for use with BASS_GetDSoundObject)
  169. BASS_OBJECT_DS = 1; // IDirectSound
  170. BASS_OBJECT_DS3DL = 2; // IDirectSound3DListener
  171. // BASS_DEVICEINFO flags
  172. BASS_DEVICE_ENABLED = 1;
  173. BASS_DEVICE_DEFAULT = 2;
  174. BASS_DEVICE_INIT = 4;
  175. BASS_DEVICE_LOOPBACK = 8;
  176. BASS_DEVICE_DEFAULTCOM = 128;
  177. BASS_DEVICE_TYPE_MASK = $ff000000;
  178. BASS_DEVICE_TYPE_NETWORK = $01000000;
  179. BASS_DEVICE_TYPE_SPEAKERS = $02000000;
  180. BASS_DEVICE_TYPE_LINE = $03000000;
  181. BASS_DEVICE_TYPE_HEADPHONES = $04000000;
  182. BASS_DEVICE_TYPE_MICROPHONE = $05000000;
  183. BASS_DEVICE_TYPE_HEADSET = $06000000;
  184. BASS_DEVICE_TYPE_HANDSET = $07000000;
  185. BASS_DEVICE_TYPE_DIGITAL = $08000000;
  186. BASS_DEVICE_TYPE_SPDIF = $09000000;
  187. BASS_DEVICE_TYPE_HDMI = $0a000000;
  188. BASS_DEVICE_TYPE_DISPLAYPORT = $40000000;
  189. // BASS_GetDeviceInfo flags
  190. BASS_DEVICES_AIRPLAY = $1000000;
  191. // BASS_INFO flags (from DSOUND.H)
  192. DSCAPS_EMULDRIVER = $00000020; // device does not have hardware DirectSound support
  193. DSCAPS_CERTIFIED = $00000040; // device driver has been certified by Microsoft
  194. DSCAPS_HARDWARE = $80000000; // hardware mixed
  195. // BASS_RECORDINFO flags (from DSOUND.H)
  196. DSCCAPS_EMULDRIVER = DSCAPS_EMULDRIVER; // device does not have hardware DirectSound recording support
  197. DSCCAPS_CERTIFIED = DSCAPS_CERTIFIED; // device driver has been certified by Microsoft
  198. // defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H)
  199. (*
  200. WAVE_FORMAT_1M08 = $00000001; // 11.025 kHz, Mono, 8-bit
  201. WAVE_FORMAT_1S08 = $00000002; // 11.025 kHz, Stereo, 8-bit
  202. WAVE_FORMAT_1M16 = $00000004; // 11.025 kHz, Mono, 16-bit
  203. WAVE_FORMAT_1S16 = $00000008; // 11.025 kHz, Stereo, 16-bit
  204. WAVE_FORMAT_2M08 = $00000010; // 22.05 kHz, Mono, 8-bit
  205. WAVE_FORMAT_2S08 = $00000020; // 22.05 kHz, Stereo, 8-bit
  206. WAVE_FORMAT_2M16 = $00000040; // 22.05 kHz, Mono, 16-bit
  207. WAVE_FORMAT_2S16 = $00000080; // 22.05 kHz, Stereo, 16-bit
  208. WAVE_FORMAT_4M08 = $00000100; // 44.1 kHz, Mono, 8-bit
  209. WAVE_FORMAT_4S08 = $00000200; // 44.1 kHz, Stereo, 8-bit
  210. WAVE_FORMAT_4M16 = $00000400; // 44.1 kHz, Mono, 16-bit
  211. WAVE_FORMAT_4S16 = $00000800; // 44.1 kHz, Stereo, 16-bit
  212. *)
  213. BASS_SAMPLE_8BITS = 1; // 8 bit
  214. BASS_SAMPLE_FLOAT = 256; // 32 bit floating-point
  215. BASS_SAMPLE_MONO = 2; // mono
  216. BASS_SAMPLE_LOOP = 4; // looped
  217. BASS_SAMPLE_3D = 8; // 3D functionality
  218. BASS_SAMPLE_SOFTWARE = 16; // unused
  219. BASS_SAMPLE_MUTEMAX = 32; // mute at max distance (3D only)
  220. BASS_SAMPLE_VAM = 64; // unused
  221. BASS_SAMPLE_FX = 128; // unused
  222. BASS_SAMPLE_OVER_VOL = $10000; // override lowest volume
  223. BASS_SAMPLE_OVER_POS = $20000; // override longest playing
  224. BASS_SAMPLE_OVER_DIST = $30000; // override furthest from listener (3D only)
  225. BASS_STREAM_PRESCAN = $20000; // scan file for accurate seeking and length
  226. BASS_STREAM_AUTOFREE = $40000; // automatically free the stream when it stops/ends
  227. BASS_STREAM_RESTRATE = $80000; // restrict the download rate of internet file streams
  228. BASS_STREAM_BLOCK = $100000;// download/play internet file stream in small blocks
  229. BASS_STREAM_DECODE = $200000;// don't play the stream, only decode
  230. BASS_STREAM_STATUS = $800000;// give server status info (HTTP/ICY tags) in DOWNLOADPROC
  231. BASS_MP3_IGNOREDELAY = $200; // ignore LAME/Xing/VBRI/iTunes delay & padding info
  232. BASS_MP3_SETPOS = BASS_STREAM_PRESCAN;
  233. BASS_MUSIC_FLOAT = BASS_SAMPLE_FLOAT;
  234. BASS_MUSIC_MONO = BASS_SAMPLE_MONO;
  235. BASS_MUSIC_LOOP = BASS_SAMPLE_LOOP;
  236. BASS_MUSIC_3D = BASS_SAMPLE_3D;
  237. BASS_MUSIC_FX = BASS_SAMPLE_FX;
  238. BASS_MUSIC_AUTOFREE = BASS_STREAM_AUTOFREE;
  239. BASS_MUSIC_DECODE = BASS_STREAM_DECODE;
  240. BASS_MUSIC_PRESCAN = BASS_STREAM_PRESCAN; // calculate playback length
  241. BASS_MUSIC_CALCLEN = BASS_MUSIC_PRESCAN;
  242. BASS_MUSIC_RAMP = $200; // normal ramping
  243. BASS_MUSIC_RAMPS = $400; // sensitive ramping
  244. BASS_MUSIC_SURROUND = $800; // surround sound
  245. BASS_MUSIC_SURROUND2 = $1000; // surround sound (mode 2)
  246. BASS_MUSIC_FT2PAN = $2000; // apply FastTracker 2 panning to XM files
  247. BASS_MUSIC_FT2MOD = $2000; // play .MOD as FastTracker 2 does
  248. BASS_MUSIC_PT1MOD = $4000; // play .MOD as ProTracker 1 does
  249. BASS_MUSIC_NONINTER = $10000; // non-interpolated sample mixing
  250. BASS_MUSIC_SINCINTER = $800000; // sinc interpolated sample mixing
  251. BASS_MUSIC_POSRESET = $8000; // stop all notes when moving position
  252. BASS_MUSIC_POSRESETEX = $400000; // stop all notes and reset bmp/etc when moving position
  253. BASS_MUSIC_STOPBACK = $80000; // stop the music on a backwards jump effect
  254. BASS_MUSIC_NOSAMPLE = $100000; // don't load the samples
  255. // Speaker assignment flags
  256. BASS_SPEAKER_FRONT = $1000000; // front speakers
  257. BASS_SPEAKER_REAR = $2000000; // rear speakers
  258. BASS_SPEAKER_CENLFE = $3000000; // center & LFE speakers (5.1)
  259. BASS_SPEAKER_SIDE = $4000000; // side speakers (7.1)
  260. BASS_SPEAKER_LEFT = $10000000; // modifier: left
  261. BASS_SPEAKER_RIGHT = $20000000; // modifier: right
  262. BASS_SPEAKER_FRONTLEFT = BASS_SPEAKER_FRONT or BASS_SPEAKER_LEFT;
  263. BASS_SPEAKER_FRONTRIGHT = BASS_SPEAKER_FRONT or BASS_SPEAKER_RIGHT;
  264. BASS_SPEAKER_REARLEFT = BASS_SPEAKER_REAR or BASS_SPEAKER_LEFT;
  265. BASS_SPEAKER_REARRIGHT = BASS_SPEAKER_REAR or BASS_SPEAKER_RIGHT;
  266. BASS_SPEAKER_CENTER = BASS_SPEAKER_CENLFE or BASS_SPEAKER_LEFT;
  267. BASS_SPEAKER_LFE = BASS_SPEAKER_CENLFE or BASS_SPEAKER_RIGHT;
  268. BASS_SPEAKER_SIDELEFT = BASS_SPEAKER_SIDE or BASS_SPEAKER_LEFT;
  269. BASS_SPEAKER_SIDERIGHT = BASS_SPEAKER_SIDE or BASS_SPEAKER_RIGHT;
  270. BASS_SPEAKER_REAR2 = BASS_SPEAKER_SIDE;
  271. BASS_SPEAKER_REAR2LEFT = BASS_SPEAKER_SIDELEFT;
  272. BASS_SPEAKER_REAR2RIGHT = BASS_SPEAKER_SIDERIGHT;
  273. BASS_ASYNCFILE = $40000000;
  274. BASS_UNICODE = $80000000;
  275. BASS_RECORD_PAUSE = $8000; // start recording paused
  276. // DX7 voice allocation & management flags
  277. BASS_VAM_HARDWARE = 1;
  278. {
  279. Play the sample in hardware. If no hardware voices are available then
  280. the "play" call will fail
  281. }
  282. BASS_VAM_SOFTWARE = 2;
  283. {
  284. Play the sample in software (ie. non-accelerated). No other VAM flags
  285. may be used together with this flag.
  286. }
  287. // DX7 voice management flags
  288. {
  289. These flags enable hardware resource stealing... if the hardware has no
  290. available voices, a currently playing buffer will be stopped to make room
  291. for the new buffer. NOTE: only samples loaded/created with the
  292. BASS_SAMPLE_VAM flag are considered for termination by the DX7 voice
  293. management.
  294. }
  295. BASS_VAM_TERM_TIME = 4;
  296. {
  297. If there are no free hardware voices, the buffer to be terminated will be
  298. the one with the least time left to play.
  299. }
  300. BASS_VAM_TERM_DIST = 8;
  301. {
  302. If there are no free hardware voices, the buffer to be terminated will be
  303. one that was loaded/created with the BASS_SAMPLE_MUTEMAX flag and is
  304. beyond
  305. it's max distance. If there are no buffers that match this criteria, then
  306. the "play" call will fail.
  307. }
  308. BASS_VAM_TERM_PRIO = 16;
  309. BASS_ORIGRES_FLOAT = $10000;
  310. // BASS_CHANNELINFO types
  311. BASS_CTYPE_SAMPLE = 1;
  312. BASS_CTYPE_RECORD = 2;
  313. BASS_CTYPE_STREAM = $10000;
  314. BASS_CTYPE_STREAM_VORBIS = $10002;
  315. BASS_CTYPE_STREAM_OGG = $10002;
  316. BASS_CTYPE_STREAM_MP1 = $10003;
  317. BASS_CTYPE_STREAM_MP2 = $10004;
  318. BASS_CTYPE_STREAM_MP3 = $10005;
  319. BASS_CTYPE_STREAM_AIFF = $10006;
  320. BASS_CTYPE_STREAM_CA = $10007;
  321. BASS_CTYPE_STREAM_MF = $10008;
  322. BASS_CTYPE_STREAM_AM = $10009;
  323. BASS_CTYPE_STREAM_SAMPLE = $1000a;
  324. BASS_CTYPE_STREAM_DUMMY = $18000;
  325. BASS_CTYPE_STREAM_DEVICE = $18001;
  326. BASS_CTYPE_STREAM_WAV = $40000; // WAVE flag (LOWORD=codec)
  327. BASS_CTYPE_STREAM_WAV_PCM = $50001;
  328. BASS_CTYPE_STREAM_WAV_FLOAT = $50003;
  329. BASS_CTYPE_MUSIC_MOD = $20000;
  330. BASS_CTYPE_MUSIC_MTM = $20001;
  331. BASS_CTYPE_MUSIC_S3M = $20002;
  332. BASS_CTYPE_MUSIC_XM = $20003;
  333. BASS_CTYPE_MUSIC_IT = $20004;
  334. BASS_CTYPE_MUSIC_MO3 = $00100; // MO3 flag
  335. // BASS_PluginLoad flags
  336. BASS_PLUGIN_PROC = 1;
  337. // 3D channel modes
  338. BASS_3DMODE_NORMAL = 0; // normal 3D processing
  339. BASS_3DMODE_RELATIVE = 1; // position is relative to the listener
  340. {
  341. The channel's 3D position (position/velocity/
  342. orientation) are relative to the listener. When the
  343. listener's position/velocity/orientation is changed
  344. with BASS_Set3DPosition, the channel's position
  345. relative to the listener does not change.
  346. }
  347. BASS_3DMODE_OFF = 2; // no 3D processing
  348. {
  349. Turn off 3D processing on the channel, the sound will
  350. be played in the center.
  351. }
  352. // software 3D mixing algorithms (used with BASS_CONFIG_3DALGORITHM)
  353. BASS_3DALG_DEFAULT = 0;
  354. {
  355. default algorithm (currently translates to BASS_3DALG_OFF)
  356. }
  357. BASS_3DALG_OFF = 1;
  358. {
  359. Uses normal left and right panning. The vertical axis is ignored except
  360. for scaling of volume due to distance. Doppler shift and volume scaling
  361. are still applied, but the 3D filtering is not performed. This is the
  362. most CPU efficient software implementation, but provides no virtual 3D
  363. audio effect. Head Related Transfer Function processing will not be done.
  364. Since only normal stereo panning is used, a channel using this algorithm
  365. may be accelerated by a 2D hardware voice if no free 3D hardware voices
  366. are available.
  367. }
  368. BASS_3DALG_FULL = 2;
  369. {
  370. This algorithm gives the highest quality 3D audio effect, but uses more
  371. CPU. Requires Windows 98 2nd Edition or Windows 2000 that uses WDM
  372. drivers, if this mode is not available then BASS_3DALG_OFF will be used
  373. instead.
  374. }
  375. BASS_3DALG_LIGHT = 3;
  376. {
  377. This algorithm gives a good 3D audio effect, and uses less CPU than the
  378. FULL mode. Requires Windows 98 2nd Edition or Windows 2000 that uses WDM
  379. drivers, if this mode is not available then BASS_3DALG_OFF will be used
  380. instead.
  381. }
  382. // EAX environments, use with BASS_SetEAXParameters
  383. EAX_ENVIRONMENT_GENERIC = 0;
  384. EAX_ENVIRONMENT_PADDEDCELL = 1;
  385. EAX_ENVIRONMENT_ROOM = 2;
  386. EAX_ENVIRONMENT_BATHROOM = 3;
  387. EAX_ENVIRONMENT_LIVINGROOM = 4;
  388. EAX_ENVIRONMENT_STONEROOM = 5;
  389. EAX_ENVIRONMENT_AUDITORIUM = 6;
  390. EAX_ENVIRONMENT_CONCERTHALL = 7;
  391. EAX_ENVIRONMENT_CAVE = 8;
  392. EAX_ENVIRONMENT_ARENA = 9;
  393. EAX_ENVIRONMENT_HANGAR = 10;
  394. EAX_ENVIRONMENT_CARPETEDHALLWAY = 11;
  395. EAX_ENVIRONMENT_HALLWAY = 12;
  396. EAX_ENVIRONMENT_STONECORRIDOR = 13;
  397. EAX_ENVIRONMENT_ALLEY = 14;
  398. EAX_ENVIRONMENT_FOREST = 15;
  399. EAX_ENVIRONMENT_CITY = 16;
  400. EAX_ENVIRONMENT_MOUNTAINS = 17;
  401. EAX_ENVIRONMENT_QUARRY = 18;
  402. EAX_ENVIRONMENT_PLAIN = 19;
  403. EAX_ENVIRONMENT_PARKINGLOT = 20;
  404. EAX_ENVIRONMENT_SEWERPIPE = 21;
  405. EAX_ENVIRONMENT_UNDERWATER = 22;
  406. EAX_ENVIRONMENT_DRUGGED = 23;
  407. EAX_ENVIRONMENT_DIZZY = 24;
  408. EAX_ENVIRONMENT_PSYCHOTIC = 25;
  409. // total number of environments
  410. EAX_ENVIRONMENT_COUNT = 26;
  411. BASS_STREAMPROC_END = $80000000; // end of user stream flag
  412. // BASS_StreamCreateFileUser file systems
  413. STREAMFILE_NOBUFFER = 0;
  414. STREAMFILE_BUFFER = 1;
  415. STREAMFILE_BUFFERPUSH = 2;
  416. // BASS_StreamPutFileData options
  417. BASS_FILEDATA_END = 0; // end & close the file
  418. // BASS_StreamGetFilePosition modes
  419. BASS_FILEPOS_CURRENT = 0;
  420. BASS_FILEPOS_DECODE = BASS_FILEPOS_CURRENT;
  421. BASS_FILEPOS_DOWNLOAD = 1;
  422. BASS_FILEPOS_END = 2;
  423. BASS_FILEPOS_START = 3;
  424. BASS_FILEPOS_CONNECTED = 4;
  425. BASS_FILEPOS_BUFFER = 5;
  426. BASS_FILEPOS_SOCKET = 6;
  427. BASS_FILEPOS_ASYNCBUF = 7;
  428. BASS_FILEPOS_SIZE = 8;
  429. BASS_FILEPOS_BUFFERING = 9;
  430. BASS_FILEPOS_AVAILABLE = 10;
  431. // BASS_ChannelSetSync types
  432. {
  433. Sync types (with BASS_ChannelSetSync() "param" and
  434. SYNCPROC "data" definitions) & flags.
  435. }
  436. BASS_SYNC_POS = 0;
  437. {
  438. Sync when a channel reaches a position.
  439. param: position in bytes
  440. data : not used
  441. }
  442. BASS_SYNC_END = 2;
  443. {
  444. Sync when a channel reaches the end.
  445. param: not used
  446. data : not used
  447. }
  448. BASS_SYNC_META = 4;
  449. {
  450. Sync when metadata is received in a stream.
  451. param: not used
  452. data : pointer to the metadata
  453. }
  454. BASS_SYNC_SLIDE = 5;
  455. {
  456. Sync when an attribute slide is completed.
  457. param: not used
  458. data : the type of slide completed (one of the BASS_SLIDE_xxx values)
  459. }
  460. BASS_SYNC_STALL = 6;
  461. {
  462. Sync when playback has stalled.
  463. param: not used
  464. data : 0=stalled, 1=resumed
  465. }
  466. BASS_SYNC_DOWNLOAD = 7;
  467. {
  468. Sync when downloading of an internet (or "buffered" user file) stream has ended.
  469. param: not used
  470. data : not used
  471. }
  472. BASS_SYNC_FREE = 8;
  473. {
  474. Sync when a channel is freed.
  475. param: not used
  476. data : not used
  477. }
  478. BASS_SYNC_SETPOS = 11;
  479. {
  480. Sync when a channel's position is set.
  481. param: not used
  482. data : 0 = playback buffer not flushed, 1 = playback buffer flushed
  483. }
  484. BASS_SYNC_MUSICPOS = 10;
  485. {
  486. Sync when a MOD music reaches an order:row position.
  487. param: LOWORD=order (0=first, -1=all) HIWORD=row (0=first, -1=all)
  488. data : LOWORD=order HIWORD=row
  489. }
  490. BASS_SYNC_MUSICINST = 1;
  491. {
  492. Sync when an instrument (sample for the non-instrument based formats)
  493. is played in a MOD music (not including retrigs).
  494. param: LOWORD=instrument (1=first) HIWORD=note (0=c0...119=b9, -1=all)
  495. data : LOWORD=note HIWORD=volume (0-64)
  496. }
  497. BASS_SYNC_MUSICFX = 3;
  498. {
  499. Sync when the "sync" effect (XM/MTM/MOD: E8x/Wxx, IT/S3M: S2x) is used.
  500. param: 0:data=pos, 1:data="x" value
  501. data : param=0: LOWORD=order HIWORD=row, param=1: "x" value
  502. }
  503. BASS_SYNC_OGG_CHANGE = 12;
  504. BASS_SYNC_DEV_FAIL = 14;
  505. BASS_SYNC_DEV_FORMAT = 15;
  506. BASS_SYNC_THREAD = $20000000; // flag: call sync in other thread
  507. BASS_SYNC_MIXTIME = $40000000; // flag: sync at mixtime, else at playtime
  508. BASS_SYNC_ONETIME = $80000000; // flag: sync only once, else continuously
  509. // BASS_ChannelIsActive return values
  510. BASS_ACTIVE_STOPPED = 0;
  511. BASS_ACTIVE_PLAYING = 1;
  512. BASS_ACTIVE_STALLED = 2;
  513. BASS_ACTIVE_PAUSED = 3;
  514. BASS_ACTIVE_PAUSED_DEVICE = 4;
  515. // Channel attributes
  516. BASS_ATTRIB_FREQ = 1;
  517. BASS_ATTRIB_VOL = 2;
  518. BASS_ATTRIB_PAN = 3;
  519. BASS_ATTRIB_EAXMIX = 4;
  520. BASS_ATTRIB_NOBUFFER = 5;
  521. BASS_ATTRIB_VBR = 6;
  522. BASS_ATTRIB_CPU = 7;
  523. BASS_ATTRIB_SRC = 8;
  524. BASS_ATTRIB_NET_RESUME = 9;
  525. BASS_ATTRIB_SCANINFO = 10;
  526. BASS_ATTRIB_NORAMP = 11;
  527. BASS_ATTRIB_BITRATE = 12;
  528. BASS_ATTRIB_BUFFER = 13;
  529. BASS_ATTRIB_GRANULE = 14;
  530. BASS_ATTRIB_USER = 15;
  531. BASS_ATTRIB_TAIL = 16;
  532. BASS_ATTRIB_PUSH_LIMIT = 17;
  533. BASS_ATTRIB_DOWNLOADPROC = 18;
  534. BASS_ATTRIB_VOLDSP = 19;
  535. BASS_ATTRIB_VOLDSP_PRIORITY = 20;
  536. BASS_ATTRIB_MUSIC_AMPLIFY = $100;
  537. BASS_ATTRIB_MUSIC_PANSEP = $101;
  538. BASS_ATTRIB_MUSIC_PSCALER = $102;
  539. BASS_ATTRIB_MUSIC_BPM = $103;
  540. BASS_ATTRIB_MUSIC_SPEED = $104;
  541. BASS_ATTRIB_MUSIC_VOL_GLOBAL = $105;
  542. BASS_ATTRIB_MUSIC_ACTIVE = $106;
  543. BASS_ATTRIB_MUSIC_VOL_CHAN = $200; // + channel #
  544. BASS_ATTRIB_MUSIC_VOL_INST = $300; // + instrument #
  545. // BASS_ChannelSlideAttribute flags
  546. BASS_SLIDE_LOG = $1000000;
  547. // BASS_ChannelGetData flags
  548. BASS_DATA_AVAILABLE = 0; // query how much data is buffered
  549. BASS_DATA_NOREMOVE = $10000000; // flag: don't remove data from recording buffer
  550. BASS_DATA_FIXED = $20000000; // unused
  551. BASS_DATA_FLOAT = $40000000; // flag: return floating-point sample data
  552. BASS_DATA_FFT256 = $80000000; // 256 sample FFT
  553. BASS_DATA_FFT512 = $80000001; // 512 FFT
  554. BASS_DATA_FFT1024 = $80000002; // 1024 FFT
  555. BASS_DATA_FFT2048 = $80000003; // 2048 FFT
  556. BASS_DATA_FFT4096 = $80000004; // 4096 FFT
  557. BASS_DATA_FFT8192 = $80000005; // 8192 FFT
  558. BASS_DATA_FFT16384 = $80000006; // 16384 FFT
  559. BASS_DATA_FFT32768 = $80000007; // 32768 FFT
  560. BASS_DATA_FFT_INDIVIDUAL = $10; // FFT flag: FFT for each channel, else all combined
  561. BASS_DATA_FFT_NOWINDOW = $20; // FFT flag: no Hanning window
  562. BASS_DATA_FFT_REMOVEDC = $40; // FFT flag: pre-remove DC bias
  563. BASS_DATA_FFT_COMPLEX = $80; // FFT flag: return complex data
  564. BASS_DATA_FFT_NYQUIST = $100; // FFT flag: return extra Nyquist value
  565. // BASS_ChannelGetLevelEx flags
  566. BASS_LEVEL_MONO = 1; // get mono level
  567. BASS_LEVEL_STEREO = 2; // get stereo level
  568. BASS_LEVEL_RMS = 4; // get RMS levels
  569. BASS_LEVEL_VOLPAN = 8; // apply VOL/PAN attributes to the levels
  570. BASS_LEVEL_NOREMOVE = 16; // don't remove data from recording buffer
  571. // BASS_ChannelGetTags types : what's returned
  572. BASS_TAG_ID3 = 0; // ID3v1 tags : TAG_ID3 structure
  573. BASS_TAG_ID3V2 = 1; // ID3v2 tags : variable length block
  574. BASS_TAG_OGG = 2; // OGG comments : series of null-terminated UTF-8 strings
  575. BASS_TAG_HTTP = 3; // HTTP headers : series of null-terminated ASCII strings
  576. BASS_TAG_ICY = 4; // ICY headers : series of null-terminated ANSI strings
  577. BASS_TAG_META = 5; // ICY metadata : ANSI string
  578. BASS_TAG_APE = 6; // APEv2 tags : series of null-terminated UTF-8 strings
  579. BASS_TAG_MP4 = 7; // MP4/iTunes metadata : series of null-terminated UTF-8 strings
  580. BASS_TAG_WMA = 8; // WMA tags : series of null-terminated UTF-8 strings
  581. BASS_TAG_VENDOR = 9; // OGG encoder : UTF-8 string
  582. BASS_TAG_LYRICS3 = 10; // Lyric3v2 tag : ASCII string
  583. BASS_TAG_CA_CODEC = 11; // CoreAudio codec info : TAG_CA_CODEC structure
  584. BASS_TAG_MF = 13; // Media Foundation tags : series of null-terminated UTF-8 strings
  585. BASS_TAG_WAVEFORMAT = 14; // WAVE format : WAVEFORMATEEX structure
  586. BASS_TAG_AM_NAME = 16; // Android Media codec name : ASCII string
  587. BASS_TAG_ID3V2_2 = 17; // ID3v2 tags (2nd block) : variable length block
  588. BASS_TAG_AM_MIME = 18; // Android Media MIME type : ASCII string
  589. BASS_TAG_LOCATION = 19; // redirected URL : ASCII string
  590. BASS_TAG_RIFF_INFO = $100; // RIFF "INFO" tags : series of null-terminated ANSI strings
  591. BASS_TAG_RIFF_BEXT = $101; // RIFF/BWF "bext" tags : TAG_BEXT structure
  592. BASS_TAG_RIFF_CART = $102; // RIFF/BWF "cart" tags : TAG_CART structure
  593. BASS_TAG_RIFF_DISP = $103; // RIFF "DISP" text tag : ANSI string
  594. BASS_TAG_RIFF_CUE = $104; // RIFF "cue " chunk : TAG_CUE structure
  595. BASS_TAG_RIFF_SMPL = $105; // RIFF "smpl" chunk : TAG_SMPL structure
  596. BASS_TAG_APE_BINARY = $1000; // + index #, binary APEv2 tag : TAG_APE_BINARY structure
  597. BASS_TAG_MUSIC_NAME = $10000; // MOD music name : ANSI string
  598. BASS_TAG_MUSIC_MESSAGE = $10001; // MOD message : ANSI string
  599. BASS_TAG_MUSIC_ORDERS = $10002; // MOD order list : BYTE array of pattern numbers
  600. BASS_TAG_MUSIC_AUTH = $10003; // MOD author : UTF-8 string
  601. BASS_TAG_MUSIC_INST = $10100; // + instrument #, MOD instrument name : ANSI string
  602. BASS_TAG_MUSIC_CHAN = $10200; // + channel #, MOD channel name : ANSI string
  603. BASS_TAG_MUSIC_SAMPLE = $10300; // + sample #, MOD sample name : ANSI string
  604. // BASS_ChannelGetLength/GetPosition/SetPosition modes
  605. BASS_POS_BYTE = 0; // byte position
  606. BASS_POS_MUSIC_ORDER = 1; // order.row position, MAKELONG(order,row)
  607. BASS_POS_OGG = 3; // OGG bitstream number
  608. BASS_POS_END = $10; // trimmed end position
  609. BASS_POS_LOOP = $11; // loop start positiom
  610. BASS_POS_FLUSH = $1000000; // flag: flush decoder/FX buffers
  611. BASS_POS_RESET = $2000000; // flag: reset user file buffers
  612. BASS_POS_RELATIVE = $4000000; // flag: seek relative to the current position
  613. BASS_POS_INEXACT = $8000000; // flag: allow seeking to inexact position
  614. BASS_POS_DECODE = $10000000; // flag: get the decoding (not playing) position
  615. BASS_POS_DECODETO = $20000000; // flag: decode to the position instead of seeking
  616. BASS_POS_SCAN = $40000000; // flag: scan to the position
  617. // BASS_ChannelSetDevice/GetDevice option
  618. BASS_NODEVICE = $20000;
  619. // BASS_RecordSetInput flags
  620. BASS_INPUT_OFF = $10000;
  621. BASS_INPUT_ON = $20000;
  622. BASS_INPUT_TYPE_MASK = $FF000000;
  623. BASS_INPUT_TYPE_UNDEF = $00000000;
  624. BASS_INPUT_TYPE_DIGITAL = $01000000;
  625. BASS_INPUT_TYPE_LINE = $02000000;
  626. BASS_INPUT_TYPE_MIC = $03000000;
  627. BASS_INPUT_TYPE_SYNTH = $04000000;
  628. BASS_INPUT_TYPE_CD = $05000000;
  629. BASS_INPUT_TYPE_PHONE = $06000000;
  630. BASS_INPUT_TYPE_SPEAKER = $07000000;
  631. BASS_INPUT_TYPE_WAVE = $08000000;
  632. BASS_INPUT_TYPE_AUX = $09000000;
  633. BASS_INPUT_TYPE_ANALOG = $0A000000;
  634. // BASS_ChannelSetFX effect types
  635. BASS_FX_DX8_CHORUS = 0;
  636. BASS_FX_DX8_COMPRESSOR = 1;
  637. BASS_FX_DX8_DISTORTION = 2;
  638. BASS_FX_DX8_ECHO = 3;
  639. BASS_FX_DX8_FLANGER = 4;
  640. BASS_FX_DX8_GARGLE = 5;
  641. BASS_FX_DX8_I3DL2REVERB = 6;
  642. BASS_FX_DX8_PARAMEQ = 7;
  643. BASS_FX_DX8_REVERB = 8;
  644. BASS_FX_VOLUME = 9;
  645. BASS_DX8_PHASE_NEG_180 = 0;
  646. BASS_DX8_PHASE_NEG_90 = 1;
  647. BASS_DX8_PHASE_ZERO = 2;
  648. BASS_DX8_PHASE_90 = 3;
  649. BASS_DX8_PHASE_180 = 4;
  650. type
  651. DWORD = Cardinal;
  652. BOOL = LongBool;
  653. QWORD = Int64;
  654. HMUSIC = DWORD; // MOD music handle
  655. HSAMPLE = DWORD; // sample handle
  656. HCHANNEL = DWORD; // sample playback handle
  657. HSTREAM = DWORD; // sample stream handle
  658. HRECORD = DWORD; // recording handle
  659. HSYNC = DWORD; // synchronizer handle
  660. HDSP = DWORD; // DSP handle
  661. HFX = DWORD; // effect handle
  662. HPLUGIN = DWORD; // plugin handle
  663. // Device info structure
  664. BASS_DEVICEINFO = record
  665. name: PAnsiChar; // description
  666. driver: PAnsiChar; // driver
  667. flags: DWORD;
  668. end;
  669. BASS_INFO = record
  670. flags: DWORD; // device capabilities (DSCAPS_xxx flags)
  671. hwsize: DWORD; // unused
  672. hwfree: DWORD; // unused
  673. freesam: DWORD; // unused
  674. free3d: DWORD; // unused
  675. minrate: DWORD; // unused
  676. maxrate: DWORD; // unused
  677. eax: BOOL; // unused
  678. minbuf: DWORD; // recommended minimum buffer length in ms
  679. dsver: DWORD; // DirectSound version
  680. latency: DWORD; // average delay (in ms) before start of playback
  681. initflags: DWORD; // BASS_Init "flags" parameter
  682. speakers: DWORD; // number of speakers available
  683. freq: DWORD; // current output rate
  684. end;
  685. // Recording device info structure
  686. BASS_RECORDINFO = record
  687. flags: DWORD; // device capabilities (DSCCAPS_xxx flags)
  688. formats: DWORD; // supported standard formats (WAVE_FORMAT_xxx flags)
  689. inputs: DWORD; // number of inputs
  690. singlein: BOOL; // only 1 input can be set at a time
  691. freq: DWORD; // current input rate
  692. end;
  693. // Sample info structure
  694. BASS_SAMPLE = record
  695. freq: DWORD; // default playback rate
  696. volume: Single; // default volume (0-100)
  697. pan: Single; // default pan (-100=left, 0=middle, 100=right)
  698. flags: DWORD; // BASS_SAMPLE_xxx flags
  699. length: DWORD; // length (in samples, not bytes)
  700. max: DWORD; // maximum simultaneous playbacks
  701. origres: DWORD; // original resolution
  702. chans: DWORD; // number of channels
  703. mingap: DWORD; // minimum gap (ms) between creating channels
  704. {
  705. The following are the sample's default 3D attributes
  706. (if the sample is 3D, BASS_SAMPLE_3D is in flags)
  707. see BASS_ChannelSet3DAttributes
  708. }
  709. mode3d: DWORD; // BASS_3DMODE_xxx mode
  710. mindist: Single; // minimum distance
  711. maxdist: Single; // maximum distance
  712. iangle: DWORD; // angle of inside projection cone
  713. oangle: DWORD; // angle of outside projection cone
  714. outvol: Single; // delta-volume outside the projection cone
  715. {
  716. The following are the defaults used if the sample uses the DirectX 7
  717. voice allocation/management features.
  718. }
  719. vam: DWORD; // unused
  720. priority: DWORD; // unused
  721. end;
  722. // Channel info structure
  723. BASS_CHANNELINFO = record
  724. freq: DWORD; // default playback rate
  725. chans: DWORD; // channels
  726. flags: DWORD;
  727. ctype: DWORD; // type of channel
  728. origres: DWORD; // original resolution
  729. plugin: HPLUGIN;
  730. sample: HSAMPLE;
  731. {$IFDEF CPUX64}
  732. padding: DWORD;
  733. {$ENDIF}
  734. filename: PChar;
  735. end;
  736. BASS_PLUGINFORM = record
  737. ctype: DWORD; // channel type
  738. {$IFDEF CPUX64}
  739. padding: DWORD;
  740. {$ENDIF}
  741. name: PAnsiChar; // format description
  742. exts: PAnsiChar; // file extension filter (*.ext1;*.ext2;etc...)
  743. end;
  744. PBASS_PLUGINFORMS = ^TBASS_PLUGINFORMS;
  745. TBASS_PLUGINFORMS = array[0..maxInt div sizeOf(BASS_PLUGINFORM) - 1] of BASS_PLUGINFORM;
  746. PBASS_PLUGININFO = ^BASS_PLUGININFO;
  747. BASS_PLUGININFO = record
  748. version: DWORD; // version (same form as BASS_GetVersion)
  749. formatc: DWORD; // number of formats
  750. formats: PBASS_PLUGINFORMS; // the array of formats
  751. end;
  752. // 3D vector (for 3D positions/velocities/orientations)
  753. BASS_3DVECTOR = record
  754. x: Single; // +=right, -=left
  755. y: Single; // +=up, -=down
  756. z: Single; // +=front, -=behind
  757. end;
  758. // User file stream callback functions
  759. FILECLOSEPROC = procedure(user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  760. FILELENPROC = function(user: Pointer): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  761. FILEREADPROC = function(buffer: Pointer; length: DWORD; user: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  762. FILESEEKPROC = function(offset: QWORD; user: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  763. BASS_FILEPROCS = record
  764. close: FILECLOSEPROC;
  765. length: FILELENPROC;
  766. read: FILEREADPROC;
  767. seek: FILESEEKPROC;
  768. end;
  769. // ID3v1 tag structure
  770. PTAG_ID3 = ^TAG_ID3;
  771. TAG_ID3 = record
  772. id: Array[0..2] of AnsiChar;
  773. title: Array[0..29] of AnsiChar;
  774. artist: Array[0..29] of AnsiChar;
  775. album: Array[0..29] of AnsiChar;
  776. year: Array[0..3] of AnsiChar;
  777. comment: Array[0..29] of AnsiChar;
  778. genre: Byte;
  779. end;
  780. // Binary APEv2 tag structure
  781. PTAG_APE_BINARY = ^TAG_APE_BINARY;
  782. TAG_APE_BINARY = record
  783. key: PAnsiChar;
  784. data: PAnsiChar;
  785. length: DWORD;
  786. end;
  787. // BWF "bext" tag structure
  788. PTAG_BEXT = ^TAG_BEXT;
  789. TAG_BEXT = packed record
  790. Description: Array[0..255] of AnsiChar; // description
  791. Originator: Array[0..31] of AnsiChar; // name of the originator
  792. OriginatorReference: Array[0..31] of AnsiChar; // reference of the originator
  793. OriginationDate: Array[0..9] of AnsiChar; // date of creation (yyyy-mm-dd)
  794. OriginationTime: Array[0..7] of AnsiChar; // time of creation (hh-mm-ss)
  795. TimeReference: QWORD; // first sample count since midnight (little-endian)
  796. Version: Word; // BWF version (little-endian)
  797. UMID: Array[0..63] of Byte; // SMPTE UMID
  798. Reserved: Array[0..189] of Byte;
  799. CodingHistory: AnsiChar; // history
  800. end;
  801. BASS_DX8_CHORUS = record
  802. fWetDryMix: Single;
  803. fDepth: Single;
  804. fFeedback: Single;
  805. fFrequency: Single;
  806. lWaveform: DWORD; // 0=triangle, 1=sine
  807. fDelay: Single;
  808. lPhase: DWORD; // BASS_DX8_PHASE_xxx
  809. end;
  810. BASS_DX8_COMPRESSOR = record
  811. fGain: Single;
  812. fAttack: Single;
  813. fRelease: Single;
  814. fThreshold: Single;
  815. fRatio: Single;
  816. fPredelay: Single;
  817. end;
  818. BASS_DX8_DISTORTION = record
  819. fGain: Single;
  820. fEdge: Single;
  821. fPostEQCenterFrequency: Single;
  822. fPostEQBandwidth: Single;
  823. fPreLowpassCutoff: Single;
  824. end;
  825. BASS_DX8_ECHO = record
  826. fWetDryMix: Single;
  827. fFeedback: Single;
  828. fLeftDelay: Single;
  829. fRightDelay: Single;
  830. lPanDelay: BOOL;
  831. end;
  832. BASS_DX8_FLANGER = record
  833. fWetDryMix: Single;
  834. fDepth: Single;
  835. fFeedback: Single;
  836. fFrequency: Single;
  837. lWaveform: DWORD; // 0=triangle, 1=sine
  838. fDelay: Single;
  839. lPhase: DWORD; // BASS_DX8_PHASE_xxx
  840. end;
  841. BASS_DX8_GARGLE = record
  842. dwRateHz: DWORD; // Rate of modulation in hz
  843. dwWaveShape: DWORD; // 0=triangle, 1=square
  844. end;
  845. BASS_DX8_I3DL2REVERB = record
  846. lRoom: Integer; // [-10000, 0] default: -1000 mB
  847. lRoomHF: Integer; // [-10000, 0] default: 0 mB
  848. flRoomRolloffFactor: Single; // [0.0, 10.0] default: 0.0
  849. flDecayTime: Single; // [0.1, 20.0] default: 1.49s
  850. flDecayHFRatio: Single; // [0.1, 2.0] default: 0.83
  851. lReflections: Integer; // [-10000, 1000] default: -2602 mB
  852. flReflectionsDelay: Single; // [0.0, 0.3] default: 0.007 s
  853. lReverb: Integer; // [-10000, 2000] default: 200 mB
  854. flReverbDelay: Single; // [0.0, 0.1] default: 0.011 s
  855. flDiffusion: Single; // [0.0, 100.0] default: 100.0 %
  856. flDensity: Single; // [0.0, 100.0] default: 100.0 %
  857. flHFReference: Single; // [20.0, 20000.0] default: 5000.0 Hz
  858. end;
  859. BASS_DX8_PARAMEQ = record
  860. fCenter: Single;
  861. fBandwidth: Single;
  862. fGain: Single;
  863. end;
  864. BASS_DX8_REVERB = record
  865. fInGain: Single; // [-96.0,0.0] default: 0.0 dB
  866. fReverbMix: Single; // [-96.0,0.0] default: 0.0 db
  867. fReverbTime: Single; // [0.001,3000.0] default: 1000.0 ms
  868. fHighFreqRTRatio: Single; // [0.001,0.999] default: 0.001
  869. end;
  870. BASS_FX_VOLUME_PARAM = record
  871. fTarget: Single;
  872. fCurrent: Single;
  873. fTime: Single;
  874. lCurve: DWORD;
  875. end;
  876. // callback function types
  877. STREAMPROC = function(handle: HSTREAM; buffer: Pointer; length: DWORD; user: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  878. {
  879. User stream callback function. NOTE: A stream function should obviously be as
  880. quick as possible, other streams (and MOD musics) can't be mixed until
  881. it's finished.
  882. handle : The stream that needs writing
  883. buffer : Buffer to write the samples in
  884. length : Number of bytes to write
  885. user : The 'user' parameter value given when calling BASS_StreamCreate
  886. RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end
  887. the stream.
  888. }
  889. const
  890. // Special STREAMPROCs
  891. STREAMPROC_DUMMY = Pointer(0); // "dummy" stream
  892. STREAMPROC_PUSH = Pointer(-1); // push stream
  893. STREAMPROC_DEVICE = Pointer(-2); // device mix stream
  894. STREAMPROC_DEVICE_3D = Pointer(-3); // device 3D mix stream
  895. type
  896. {
  897. User file stream callback function.
  898. action : The action to perform, one of BASS_FILE_xxx values.
  899. param1 : Depends on "action"
  900. param2 : Depends on "action"
  901. user : The 'user' parameter value given when calling BASS_StreamCreate
  902. RETURN : Depends on "action"
  903. }
  904. DOWNLOADPROC = procedure(buffer: Pointer; length: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  905. {
  906. Internet stream download callback function.
  907. buffer : Buffer containing the downloaded data... NULL=end of download
  908. length : Number of bytes in the buffer
  909. user : The 'user' parameter value given when calling BASS_StreamCreateURL
  910. }
  911. SYNCPROC = procedure(handle: HSYNC; channel, data: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  912. {
  913. Sync callback function. NOTE: a sync callback function should be very
  914. quick as other syncs cannot be processed until it has finished. If the
  915. sync is a "mixtime" sync, then other streams and MOD musics can not be
  916. mixed until it's finished either.
  917. handle : The sync that has occured
  918. channel: Channel that the sync occured in
  919. data : Additional data associated with the sync's occurance
  920. user : The 'user' parameter given when calling BASS_ChannelSetSync
  921. }
  922. DSPPROC = procedure(handle: HDSP; channel: DWORD; buffer: Pointer; length: DWORD; user: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  923. {
  924. DSP callback function. NOTE: A DSP function should obviously be as quick
  925. as possible... other DSP functions, streams and MOD musics can not be
  926. processed until it's finished.
  927. handle : The DSP handle
  928. channel: Channel that the DSP is being applied to
  929. buffer : Buffer to apply the DSP to
  930. length : Number of bytes in the buffer
  931. user : The 'user' parameter given when calling BASS_ChannelSetDSP
  932. }
  933. RECORDPROC = function(handle: HRECORD; buffer: Pointer; length: DWORD; user: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  934. {
  935. Recording callback function.
  936. handle : The recording handle
  937. buffer : Buffer containing the recorded sample data
  938. length : Number of bytes
  939. user : The 'user' parameter value given when calling BASS_RecordStart
  940. RETURN : TRUE = continue recording, FALSE = stop
  941. }
  942. var
  943. BASS_SetConfig: function(option, value: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  944. BASS_GetConfig: function(option: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  945. BASS_SetConfigPtr: function(option: DWORD; value: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  946. BASS_GetConfigPtr: function(option: DWORD): Pointer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  947. BASS_GetVersion: function(): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  948. BASS_ErrorGetCode: function(): LongInt; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  949. BASS_GetDeviceInfo: function(device: DWORD; var info: BASS_DEVICEINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  950. {$IFDEF MSWINDOWS}
  951. BASS_Init: function(device: LongInt; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; stdcall;// external bassdll;
  952. {$ELSE}
  953. BASS_Init: function(device: LongInt; freq, flags: DWORD; win: Pointer; clsid: Pointer): BOOL; cdecl; //external bassdll;
  954. {$ENDIF}
  955. BASS_SetDevice: function(device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  956. BASS_GetDevice: function():DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  957. BASS_Free: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  958. {$IFDEF MSWINDOWS}
  959. BASS_GetDSoundObject: function(obj: DWORD): Pointer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  960. {$ENDIF}
  961. BASS_GetInfo: function(var info: BASS_INFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  962. BASS_Update: function(length: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  963. BASS_GetCPU: function():Single; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  964. BASS_Start: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  965. BASS_Stop: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  966. BASS_Pause: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  967. BASS_SetVolume: function(volume: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  968. BASS_GetVolume: function():Single; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  969. BASS_PluginLoad: function(filename: PChar; flags: DWORD): HPLUGIN; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  970. BASS_PluginFree: function(handle: HPLUGIN): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  971. BASS_PluginGetInfo: function(handle: HPLUGIN): PBASS_PLUGININFO; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  972. BASS_Set3DFactors: function(distf, rollf, doppf: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  973. BASS_Get3DFactors: function(var distf, rollf, doppf: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  974. BASS_Set3DPosition: function(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  975. BASS_Get3DPosition: function(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  976. BASS_Apply3D: procedure(); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  977. {$IFDEF MSWINDOWS}
  978. BASS_SetEAXParameters: function(env: LongInt; vol, decay, damp: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  979. BASS_GetEAXParameters: function(var env: DWORD; var vol, decay, damp: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  980. {$ENDIF}
  981. BASS_MusicLoad: function(mem: BOOL; f: Pointer; offset: QWORD; length, flags, freq: DWORD): HMUSIC; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  982. BASS_MusicFree: function(handle: HMUSIC): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  983. BASS_SampleLoad: function(mem: BOOL; f: Pointer; offset: QWORD; length, max, flags: DWORD): HSAMPLE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  984. BASS_SampleCreate: function(length, freq, chans, max, flags: DWORD): HSAMPLE; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  985. BASS_SampleFree: function(handle: HSAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  986. BASS_SampleSetData: function(handle: HSAMPLE; buffer: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  987. BASS_SampleGetData: function(handle: HSAMPLE; buffer: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  988. BASS_SampleGetInfo: function(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  989. BASS_SampleSetInfo: function(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  990. BASS_SampleGetChannel: function(handle: HSAMPLE; onlynew: BOOL): HCHANNEL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  991. BASS_SampleGetChannels: function(handle: HSAMPLE; channels: Pointer): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  992. BASS_SampleStop: function(handle: HSAMPLE): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  993. BASS_StreamCreate: function(freq, chans, flags: DWORD; proc: STREAMPROC; user: Pointer): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  994. BASS_StreamCreateFile: function(mem: BOOL; f: Pointer; offset, length: QWORD; flags: DWORD): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  995. BASS_StreamCreateURL: function(url: PAnsiChar; offset: DWORD; flags: DWORD; proc: DOWNLOADPROC; user: Pointer):HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  996. BASS_StreamCreateFileUser: function(system, flags: DWORD; var procs: BASS_FILEPROCS; user: Pointer): HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  997. BASS_StreamFree: function(handle: HSTREAM): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  998. BASS_StreamGetFilePosition: function(handle: HSTREAM; mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  999. BASS_StreamPutData: function(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1000. BASS_StreamPutFileData: function(handle: HSTREAM; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1001. BASS_RecordGetDeviceInfo: function(device: DWORD; var info: BASS_DEVICEINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1002. BASS_RecordInit: function(device: LongInt):BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1003. BASS_RecordSetDevice: function(device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1004. BASS_RecordGetDevice: function():DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1005. BASS_RecordFree: function():BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1006. BASS_RecordGetInfo: function(var info: BASS_RECORDINFO): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1007. BASS_RecordGetInputName: function(input: LongInt): PAnsiChar; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1008. BASS_RecordSetInput: function(input: LongInt; flags: DWORD; volume: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1009. BASS_RecordGetInput: function(input: LongInt; var volume: Single): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1010. BASS_RecordStart: function(freq, chans, flags: DWORD; proc: RECORDPROC; user: Pointer): HRECORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1011. BASS_ChannelBytes2Seconds: function(handle: DWORD; pos: QWORD): Double; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
  1012. BASS_ChannelSeconds2Bytes: function(handle: DWORD; pos: Double): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
  1013. BASS_ChannelGetDevice: function(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1014. BASS_ChannelSetDevice: function(handle, device: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1015. BASS_ChannelIsActive: function(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
  1016. BASS_ChannelGetInfo: function(handle: DWORD; var info: BASS_CHANNELINFO):BOOL;{$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};//external bassdll;
  1017. BASS_ChannelGetTags: function(handle: HSTREAM; tags: DWORD): PAnsiChar; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1018. BASS_ChannelFlags: function(handle, flags, mask: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1019. BASS_ChannelUpdate: function(handle, length: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1020. BASS_ChannelLock: function(handle: DWORD; lock: BOOL): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1021. BASS_ChannelPlay: function(handle: DWORD; restart: BOOL): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1022. BASS_ChannelStop: function(handle: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1023. BASS_ChannelPause: function(handle: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1024. BASS_ChannelSetAttribute: function(handle, attrib: DWORD; value: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1025. BASS_ChannelGetAttribute: function(handle, attrib: DWORD; var value: Single): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1026. BASS_ChannelSlideAttribute: function(handle, attrib: DWORD; value: Single; time: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1027. BASS_ChannelIsSliding: function(handle, attrib: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1028. BASS_ChannelSetAttributeEx: function(handle, attrib: DWORD; value: Pointer; size: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1029. BASS_ChannelGetAttributeEx: function(handle, attrib: DWORD; value: Pointer; size: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1030. BASS_ChannelSet3DAttributes: function(handle: DWORD; mode: LongInt; min, max: Single; iangle, oangle, outvol: LongInt): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1031. BASS_ChannelGet3DAttributes: function(handle: DWORD; var mode: DWORD; var min, max: Single; var iangle, oangle, outvol: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1032. BASS_ChannelSet3DPosition: function(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1033. BASS_ChannelGet3DPosition: function(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1034. BASS_ChannelGetLength: function(handle, mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1035. BASS_ChannelSetPosition: function(handle: DWORD; pos: QWORD; mode: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1036. BASS_ChannelGetPosition: function(handle, mode: DWORD): QWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1037. BASS_ChannelGetLevel: function(handle: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1038. BASS_ChannelGetLevelEx: function(handle: DWORD; levels: PSingle; length: Single; flags: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1039. BASS_ChannelGetData: function(handle: DWORD; buffer: Pointer; length: DWORD): DWORD; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1040. BASS_ChannelSetSync: function(handle: DWORD; type_: DWORD; param: QWORD; proc: SYNCPROC; user: Pointer): HSYNC; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1041. BASS_ChannelRemoveSync: function(handle: DWORD; sync: HSYNC): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1042. BASS_ChannelSetDSP: function(handle: DWORD; proc: DSPPROC; user: Pointer; priority: LongInt): HDSP; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1043. BASS_ChannelRemoveDSP: function(handle: DWORD; dsp: HDSP): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1044. BASS_ChannelSetLink: function(handle, chan: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1045. BASS_ChannelRemoveLink: function(handle, chan: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1046. BASS_ChannelSetFX: function(handle, type_: DWORD; priority: LongInt): HFX; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1047. BASS_ChannelRemoveFX: function(handle: DWORD; fx: HFX): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1048. BASS_FXSetParameters: function(handle: HFX; par: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1049. BASS_FXGetParameters: function(handle: HFX; par: Pointer): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1050. BASS_FXReset: function(handle: HFX): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1051. BASS_FXSetPriority: function(handle: HFX; priority: LongInt): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; //external bassdll;
  1052. function BASS_SPEAKER_N(n: DWORD): DWORD;
  1053. {$IFDEF MSWINDOWS}
  1054. function BASS_SetEAXPreset(env: LongInt): BOOL;
  1055. {
  1056. This function is defined in the implementation part of this unit.
  1057. It is not part of BASS.DLL but an extra function which makes it easier
  1058. to set the predefined EAX environments.
  1059. env : a EAX_ENVIRONMENT_xxx constant
  1060. }
  1061. {$ENDIF}
  1062. type
  1063. TBASSModuleHandle = HINST;
  1064. function BASS_Load(LibName: PChar ): Boolean;
  1065. procedure BASS_UnLoad;
  1066. function BASS_IsLoaded:boolean;
  1067. //==================================================
  1068. implementation
  1069. //==================================================
  1070. const
  1071. INVALID_MODULEHANDLE_VALUE = TBASSModuleHandle(0);
  1072. var
  1073. BASSHandle: TBASSModuleHandle;
  1074. function BASS_SPEAKER_N(n: DWORD): DWORD;
  1075. begin
  1076. Result := n shl 24;
  1077. end;
  1078. {$IFDEF MSWINDOWS}
  1079. function BASS_SetEAXPreset(env: LongInt): BOOL;
  1080. begin
  1081. case (env) of
  1082. EAX_ENVIRONMENT_GENERIC:
  1083. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_GENERIC, 0.5, 1.493, 0.5);
  1084. EAX_ENVIRONMENT_PADDEDCELL:
  1085. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PADDEDCELL, 0.25, 0.1, 0);
  1086. EAX_ENVIRONMENT_ROOM:
  1087. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ROOM, 0.417, 0.4, 0.666);
  1088. EAX_ENVIRONMENT_BATHROOM:
  1089. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_BATHROOM, 0.653, 1.499, 0.166);
  1090. EAX_ENVIRONMENT_LIVINGROOM:
  1091. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_LIVINGROOM, 0.208, 0.478, 0);
  1092. EAX_ENVIRONMENT_STONEROOM:
  1093. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONEROOM, 0.5, 2.309, 0.888);
  1094. EAX_ENVIRONMENT_AUDITORIUM:
  1095. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_AUDITORIUM, 0.403, 4.279, 0.5);
  1096. EAX_ENVIRONMENT_CONCERTHALL:
  1097. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CONCERTHALL, 0.5, 3.961, 0.5);
  1098. EAX_ENVIRONMENT_CAVE:
  1099. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CAVE, 0.5, 2.886, 1.304);
  1100. EAX_ENVIRONMENT_ARENA:
  1101. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ARENA, 0.361, 7.284, 0.332);
  1102. EAX_ENVIRONMENT_HANGAR:
  1103. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HANGAR, 0.5, 10.0, 0.3);
  1104. EAX_ENVIRONMENT_CARPETEDHALLWAY:
  1105. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153, 0.259, 2.0);
  1106. EAX_ENVIRONMENT_HALLWAY:
  1107. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HALLWAY, 0.361, 1.493, 0);
  1108. EAX_ENVIRONMENT_STONECORRIDOR:
  1109. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONECORRIDOR, 0.444, 2.697, 0.638);
  1110. EAX_ENVIRONMENT_ALLEY:
  1111. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ALLEY, 0.25, 1.752, 0.776);
  1112. EAX_ENVIRONMENT_FOREST:
  1113. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_FOREST, 0.111, 3.145, 0.472);
  1114. EAX_ENVIRONMENT_CITY:
  1115. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CITY, 0.111, 2.767, 0.224);
  1116. EAX_ENVIRONMENT_MOUNTAINS:
  1117. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_MOUNTAINS, 0.194, 7.841, 0.472);
  1118. EAX_ENVIRONMENT_QUARRY:
  1119. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_QUARRY, 1, 1.499, 0.5);
  1120. EAX_ENVIRONMENT_PLAIN:
  1121. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PLAIN, 0.097, 2.767, 0.224);
  1122. EAX_ENVIRONMENT_PARKINGLOT:
  1123. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PARKINGLOT, 0.208, 1.652, 1.5);
  1124. EAX_ENVIRONMENT_SEWERPIPE:
  1125. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_SEWERPIPE, 0.652, 2.886, 0.25);
  1126. EAX_ENVIRONMENT_UNDERWATER:
  1127. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_UNDERWATER, 1, 1.499, 0);
  1128. EAX_ENVIRONMENT_DRUGGED:
  1129. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DRUGGED, 0.875, 8.392, 1.388);
  1130. EAX_ENVIRONMENT_DIZZY:
  1131. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DIZZY, 0.139, 17.234, 0.666);
  1132. EAX_ENVIRONMENT_PSYCHOTIC:
  1133. Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PSYCHOTIC, 0.486, 7.563, 0.806);
  1134. else
  1135. Result := FALSE;
  1136. end;
  1137. end;
  1138. {$ENDIF}
  1139. function BASS_Load(LibName: PChar ): Boolean;
  1140. begin
  1141. Result := False;
  1142. // Make sure the previous library is unloaded
  1143. BASS_Unload;
  1144. // If no library name given, use the default library names
  1145. if LibName = nil then
  1146. LibName := bassdll;
  1147. // Load the library
  1148. BASSHandle := LoadLibrary(LibName);
  1149. if BASSHandle = INVALID_MODULEHANDLE_VALUE then
  1150. Exit;
  1151. // Get all the function addresses from the library
  1152. BASS_SetConfig := getprocaddress(basshandle,'BASS_SetConfig');
  1153. BASS_GetConfig := getprocaddress(basshandle,'BASS_GetConfig');
  1154. BASS_SetConfigPtr := getprocaddress(basshandle,'BASS_SetConfigPtr');
  1155. BASS_GetConfigPtr := getprocaddress(basshandle,'BASS_GetConfigPtr');
  1156. BASS_GetVersion := getprocaddress(basshandle,'BASS_GetVersion');
  1157. BASS_ErrorGetCode := getprocaddress(basshandle,'BASS_ErrorGetCode');
  1158. BASS_GetDeviceInfo := getprocaddress(basshandle,'BASS_GetDeviceInfo');
  1159. {$IFDEF MSWINDOWS}
  1160. BASS_Init := getprocaddress(basshandle,'BASS_Init');
  1161. {$ELSE}
  1162. BASS_Init := getprocaddress(basshandle,'BASS_Init_');
  1163. {$ENDIF}
  1164. BASS_SetDevice := getprocaddress(basshandle,'BASS_SetDevice');
  1165. BASS_GetDevice := getprocaddress(basshandle,'BASS_GetDevice');
  1166. BASS_Free := getprocaddress(basshandle,'BASS_Free');
  1167. {$IFDEF MSWINDOWS}
  1168. BASS_GetDSoundObject := getprocaddress(basshandle,'BASS_GetDSoundObject');
  1169. {$ENDIF}
  1170. BASS_GetInfo := getprocaddress(basshandle,'BASS_GetInfo');
  1171. BASS_Update := getprocaddress(basshandle,'BASS_Update');
  1172. BASS_GetCPU := getprocaddress(basshandle,'BASS_GetCPU');
  1173. BASS_Start := getprocaddress(basshandle,'BASS_Start');
  1174. BASS_Stop := getprocaddress(basshandle,'BASS_Stop');
  1175. BASS_Pause := getprocaddress(basshandle,'BASS_Pause');
  1176. BASS_SetVolume := getprocaddress(basshandle,'BASS_SetVolume');
  1177. BASS_GetVolume := getprocaddress(basshandle,'BASS_GetVolume');
  1178. BASS_PluginLoad := getprocaddress(basshandle, 'BASS_PluginLoad');
  1179. BASS_PluginFree := getprocaddress(basshandle, 'BASS_PluginFree');
  1180. BASS_PluginGetInfo := getprocaddress(basshandle, 'BASS_PluginGetInfo');
  1181. BASS_Set3DFactors := getprocaddress(basshandle,'BASS_Set3DFactors');
  1182. BASS_Get3DFactors := getprocaddress(basshandle,'BASS_Get3DFactors');
  1183. BASS_Set3DPosition := getprocaddress(basshandle,'BASS_Set3DPosition');
  1184. BASS_Get3DPosition := getprocaddress(basshandle,'BASS_Get3DPosition');
  1185. BASS_Apply3D := getprocaddress(basshandle,'BASS_Apply3D');
  1186. {$IFDEF MSWINDOWS}
  1187. BASS_SetEAXParameters := getprocaddress(basshandle,'BASS_SetEAXParameters');
  1188. BASS_GetEAXParameters := getprocaddress(basshandle,'BASS_GetEAXParameters');
  1189. {$ENDIF}
  1190. BASS_MusicLoad := getprocaddress(basshandle,'BASS_MusicLoad');
  1191. BASS_MusicFree := getprocaddress(basshandle,'BASS_MusicFree');
  1192. BASS_SampleLoad := getprocaddress(basshandle,'BASS_SampleLoad');
  1193. BASS_SampleCreate := getprocaddress(basshandle,'BASS_SampleCreate');
  1194. BASS_SampleFree := getprocaddress(basshandle,'BASS_SampleFree');
  1195. BASS_SampleSetData := getprocaddress(basshandle,'BASS_SampleSetData');
  1196. BASS_SampleGetData := getprocaddress(basshandle,'BASS_SampleGetData');
  1197. BASS_SampleGetInfo := getprocaddress(basshandle,'BASS_SampleGetInfo');
  1198. BASS_SampleSetInfo := getprocaddress(basshandle,'BASS_SampleSetInfo');
  1199. BASS_SampleGetChannel := getprocaddress(basshandle,'BASS_SampleGetChannel');
  1200. BASS_SampleGetChannels := getprocaddress(basshandle,'BASS_SampleGetChannels');
  1201. BASS_SampleStop := getprocaddress(basshandle,'BASS_SampleStop');
  1202. BASS_StreamCreate := getprocaddress(basshandle,'BASS_StreamCreate');
  1203. BASS_StreamCreateFile := getprocaddress(basshandle,'BASS_StreamCreateFile');
  1204. BASS_StreamCreateURL := getprocaddress(basshandle,'BASS_StreamCreateURL');
  1205. BASS_StreamCreateFileUser := getprocaddress(basshandle,'BASS_StreamCreateFileUser');
  1206. BASS_StreamFree := getprocaddress(basshandle,'BASS_StreamFree');
  1207. BASS_StreamGetFilePosition := getprocaddress(basshandle,'BASS_StreamGetFilePosition');
  1208. BASS_StreamPutData := getprocaddress(basshandle,'BASS_StreamPutData');
  1209. BASS_StreamPutFileData := getprocaddress(basshandle,'BASS_StreamPutFileData');
  1210. BASS_RecordGetDeviceInfo := getprocaddress(basshandle,'BASS_RecordGetDeviceInfo');
  1211. BASS_RecordInit := getprocaddress(basshandle,'BASS_RecordInit');
  1212. BASS_RecordSetDevice := getprocaddress(basshandle,'BASS_RecordSetDevice');
  1213. BASS_RecordGetDevice := getprocaddress(basshandle,'BASS_RecordGetDevice');
  1214. BASS_RecordFree := getprocaddress(basshandle,'BASS_RecordFree');
  1215. BASS_RecordGetInfo := getprocaddress(basshandle,'BASS_RecordGetInfo');
  1216. BASS_RecordGetInputName := getprocaddress(basshandle,'BASS_RecordGetInputName');
  1217. BASS_RecordSetInput := getprocaddress(basshandle,'BASS_RecordSetInput');
  1218. BASS_RecordGetInput := getprocaddress(basshandle,'BASS_RecordGetInput');
  1219. BASS_RecordStart := getprocaddress(basshandle,'BASS_RecordStart');
  1220. BASS_ChannelBytes2Seconds := getprocaddress(basshandle,'BASS_ChannelBytes2Seconds');
  1221. BASS_ChannelSeconds2Bytes := getprocaddress(basshandle,'BASS_ChannelSeconds2Bytes');
  1222. BASS_ChannelGetDevice := getprocaddress(basshandle,'BASS_ChannelGetDevice');
  1223. BASS_ChannelSetDevice := getprocaddress(basshandle,'BASS_ChannelSetDevice');
  1224. BASS_ChannelIsActive := getprocaddress(basshandle,'BASS_ChannelIsActive');
  1225. BASS_ChannelGetInfo := getprocaddress(basshandle,'BASS_ChannelGetInfo');
  1226. BASS_ChannelGetTags := getprocaddress(basshandle,'BASS_ChannelGetTags');
  1227. BASS_ChannelFlags := getprocaddress(basshandle,'BASS_ChannelFlags');
  1228. BASS_ChannelUpdate := getprocaddress(basshandle,'BASS_ChannelUpdate');
  1229. BASS_ChannelLock := getprocaddress(basshandle,'BASS_ChannelLock');
  1230. BASS_ChannelPlay := getprocaddress(basshandle,'BASS_ChannelPlay');
  1231. BASS_ChannelStop := getprocaddress(basshandle,'BASS_ChannelStop');
  1232. BASS_ChannelPause := getprocaddress(basshandle,'BASS_ChannelPause');
  1233. BASS_ChannelSetAttribute := getprocaddress(basshandle,'BASS_ChannelSetAttribute');
  1234. BASS_ChannelGetAttribute := getprocaddress(basshandle,'BASS_ChannelGetAttribute');
  1235. BASS_ChannelSlideAttribute := getprocaddress(basshandle,'BASS_ChannelSlideAttribute');
  1236. BASS_ChannelIsSliding := getprocaddress(basshandle,'BASS_ChannelIsSliding');
  1237. BASS_ChannelSetAttributeEx := getprocaddress(basshandle,'BASS_ChannelSetAttributeEx');
  1238. BASS_ChannelGetAttributeEx := getprocaddress(basshandle,'BASS_ChannelGetAttributeEx');
  1239. BASS_ChannelSet3DAttributes := getprocaddress(basshandle,'BASS_ChannelSet3DAttributes');
  1240. BASS_ChannelGet3DAttributes := getprocaddress(basshandle,'BASS_ChannelGet3DAttributes');
  1241. BASS_ChannelSet3DPosition := getprocaddress(basshandle,'BASS_ChannelSet3DPosition');
  1242. BASS_ChannelGet3DPosition := getprocaddress(basshandle,'BASS_ChannelGet3DPosition');
  1243. BASS_ChannelGetLength :=getprocaddress(basshandle,'BASS_ChannelGetLength');
  1244. BASS_ChannelSetPosition := getprocaddress(basshandle,'BASS_ChannelSetPosition');
  1245. BASS_ChannelGetPosition := getprocaddress(basshandle,'BASS_ChannelGetPosition');
  1246. BASS_ChannelGetLevel := getprocaddress(basshandle,'BASS_ChannelGetLevel');
  1247. BASS_ChannelGetLevelEx := getprocaddress(basshandle,'BASS_ChannelGetLevelEx');
  1248. BASS_ChannelGetData := getprocaddress(basshandle,'BASS_ChannelGetData');
  1249. BASS_ChannelSetSync := getprocaddress(basshandle,'BASS_ChannelSetSync');
  1250. BASS_ChannelRemoveSync := getprocaddress(basshandle,'BASS_ChannelRemoveSync');
  1251. BASS_ChannelSetDSP := getprocaddress(basshandle,'BASS_ChannelSetDSP');
  1252. BASS_ChannelRemoveDSP := getprocaddress(basshandle,'BASS_ChannelRemoveDSP');
  1253. BASS_ChannelSetLink := getprocaddress(basshandle,'BASS_ChannelSetLink');
  1254. BASS_ChannelRemoveLink := getprocaddress(basshandle,'BASS_ChannelRemoveLink');
  1255. BASS_ChannelSetFX := getprocaddress(basshandle,'BASS_ChannelSetFX');
  1256. BASS_ChannelRemoveFX := getprocaddress(basshandle,'BASS_ChannelRemoveFX');
  1257. BASS_FXSetParameters := getprocaddress(basshandle,'BASS_FXSetParameters');
  1258. BASS_FXGetParameters := getprocaddress(basshandle,'BASS_FXGetParameters');
  1259. BASS_FXReset := getprocaddress(basshandle,'BASS_FXReset');
  1260. BASS_FXSetPriority := getprocaddress(basshandle,'BASS_FXSetPriority');
  1261. Result := True;
  1262. end;
  1263. procedure BASS_Unload;
  1264. begin
  1265. // Only free the library if it was already loaded
  1266. if BASSHandle <> INVALID_MODULEHANDLE_VALUE then
  1267. FreeLibrary(BASSHandle);
  1268. BASSHandle := INVALID_MODULEHANDLE_VALUE;
  1269. end;
  1270. function BASS_IsLoaded:boolean;
  1271. begin
  1272. result := BASSHandle <> INVALID_MODULEHANDLE_VALUE;
  1273. end;
  1274. initialization //-------------------------------------------------------------
  1275. BASSHandle := INVALID_MODULEHANDLE_VALUE;
  1276. finalization //---------------------------------------------------------------
  1277. // Make sure the library is unloaded
  1278. BASS_Unload;
  1279. end.